我很久以前开发了一个应用程序,最近一些用户抱怨他们无法播放SD卡中的声音。
我的应用具有以下许可权
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
以下是播放声音的代码。用户通过使用选择声音 铃声首选项。所以我认为声音uri正确传递了。同样适用于内置声音。
try {
final OnPreparedListener OnPreparedListener = new OnPreparedListener() {
@Override
public void onPrepared(final MediaPlayer mp) {
Log.d(TAG, "OnPreparedListener prepared. Actually playing music now");
mp.start();
}
};
golbalMMediaPlayer.setAudioStreamType(stream);
golbalMMediaPlayer.setDataSource(context.getApplicationContext(), uri);
golbalMMediaPlayer.setLooping(false);
golbalMMediaPlayer.setOnPreparedListener(OnPreparedListener);
golbalMMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Log.d(TAG, "Done playing music now");
try {
resetVolume();
stopPlaying();
} catch (Exception ex) {
Log.e(Constants.APP_TAG,
"error on oncompletion listener", ex);
}
}
});
golbalMMediaPlayer.prepareAsync();
golbalMMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
Log.e(Constants.APP_TAG,"Media player erorr");
return false;
}
});
} catch (Exception e) {
Log.e(TAG, "problem while playing sound", e);
} finally {
}
我很难调试,因为它在我的设备上可以正常工作。银河9是能够完成这一工作的设备之一。
任何指针都会有所帮助。