某些设备在尝试播放Android Mediaplayer时报告java.lang.IllegalStateException
我正在跟随媒体播放器更改音频源并再次播放媒体播放器。它在大多数设备上运行良好,但一些设备(约1%)出现java.lang.IllegalStateException。我无法在我的任何设备中重新创建此错误。这里是正在报告的堆栈跟踪某些设备在尝试播放Android Mediaplayer时报告java.lang.IllegalStateException,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,我正在跟随媒体播放器更改音频源并再次播放媒体播放器。它在大多数设备上运行良好,但一些设备(约1%)出现java.lang.IllegalStateException。我无法在我的任何设备中重新创建此错误。这里是正在报告的堆栈跟踪 java.lang.IllegalStateException: at android.media.MediaPlayer._setDataSource (MediaPlayer.java) at android.media.MediaPlayer.setDa
java.lang.IllegalStateException:
at android.media.MediaPlayer._setDataSource (MediaPlayer.java)
at android.media.MediaPlayer.setDataSource (MediaPlayer.java:1325)
at android.media.MediaPlayer.setDataSource (MediaPlayer.java:1308)
at android.media.MediaPlayer.setDataSource (MediaPlayer.java:1290)
at android.media.MediaPlayer.attemptDataSource (MediaPlayer.java:1150)
at android.media.MediaPlayer.setDataSource (MediaPlayer.java:1112)
at android.media.MediaPlayer.setDataSource (MediaPlayer.java:1049)
at com.myapp.MyPlayer.newPlayMode (MyPlayer.java:423)
java的第423行是以下方法的第2行
static void newPlayMode(Context context)
{
mPlayer.reset();
alarmSound=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM).toString();
mPlayer.setDataSource(context, Uri.parse(alarmSound));
AudioManager audioManager = (AudioManager) context
.getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mPlayer.setLooping(true);
mPlayer.prepareAsync();
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mPlayer.start();
}
});
}