2013-09-22 3 views
0

Это работает с андроид 4.2:Воспроизведение звука из SDCard с MediaPlayer на Android 2.3

SOUNDS_DIR = getFilesDir().getAbsolutePath() + "/"; 
SoundToPlay = new MediaPlayer(); 
SoundToPlay.setDataSource(SOUNDS_DIR + ResourceID 
     + ".mp3"); 
SoundToPlay.prepare(); 
SoundToPlay.start(); 

Когда я запустить его на Android 2.3, LogCat принтами:

ошибку MediaPlayer (1, -2147483648)

Если я использую точно такой же файл в качестве ресурса (/ RES/сырье /), отлично работает с 2,3

ответ

3

Может быть, попробовать, прежде чем подтвердить свой путь, как:

File path = Environment.getExternalStoragePublicDirectory(
    Environment.DIRECTORY_MUSIC); 
File file = new File(path, ResourceID+".mp3"); 

// if file exists .... 

После вы можете написать:

SoundToPlay = new MediaPlayer(); 
SoundToPlay.setDataSource(path + "/" + ResourceID + ".mp3"); 
SoundToPlay.prepare(); 
SoundToPlay.start(); 

[EDIT]

Вместо того

SoundToPlay.setDataSource(SOUNDS_DIR + ResourceID + ".mp3");

се т

FileInputStream fileInputStream = new FileInputStream(SOUNDS_DIR + ResourceID 
    + ".mp3"); 
SoundToPlay.setDataSource(fileInputStream.getFD());   
SoundToPlay.prepare(); 
+0

К сожалению, мне нужно хранить мои файлы .mp3 как приватные. Я также попытался SoundToPlay.setDataSource (новый файл (SOUNDS_DIR + "/" + RESOURCEID \t \t \t \t \t \t +».mp3") getAbsolutePath().); – filippo

+0

См. Мое редактирование выше, используйте 'FileInputStream' с' getFD' –

+0

Я думаю, потому что 'мне нужно хранить мои файлы .mp3 как частные. 'Дайте мне знать, если его работа, я забыл, что Android из известного внешнего хранилища делает это автоматически –

0

Попробуйте это:

String path = Environment.getExternalStorageDirectory() + "/sound.mp3"; 
File file = new File(path); 
Uri uri = Uri.fromFile(file); 
MediaPlayer mp = MediaPlayer.create(this, uri); 

if (mp != null) 
{ 
    mp.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
     mp.release(); 
     } 
    }); 
    mp.start(); 
} 

удачи.

+0

отредактированный код из MediaPlayer.create (c, uri); к MediaPlayer.create (это, uri); – hasan83

+0

MediaPlayer.create (это, Uri.fromFile (новый файл (SOUNDS_DIR + "/" + ResourceID + ".mp3"))) генерирует ошибку (1, -25 ... – filippo

+0

Что такое SOUNDS_DIR =? – hasan83

Смежные вопросы