私は最近、同じ問題に遭遇しました。私がこれを解決したのはあなたの答えを読んでいただけでなく、起こっていたことを記録することによって活動の流れをチェックしていました。基本的にonCreate
,onStart
,onResume
,,onStop
,onStart
,onResume
の順で焼成されていた。これはアラーム画面として開始されたアクティビティでした。
onStart
メソッドで初期化コードを使用しましたが、ローカルサウンドを使用しているので、prepareAsync()
の代わりに.prepare()
を必ず使用しています。
try {
Log.d(LOG_TAG, "Setting media player URI: " + alarmTone.toString());
//mMediaPlayer = MediaPlayer.create(this,);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(getApplicationContext(), alarmTone);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mMediaPlayer.setLooping(true);
mMediaPlayer.setVolume(100, 100);
mMediaPlayer.prepare();
} catch (Exception ex) {
Log.d(LOG_TAG, "Exception from media player: " + ex.getMessage());
}
が続いとonStop
メソッドの内部で、私が追加しました:私は、コードを再生するメディアを追加onResume
メソッド内
if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
mMediaPlayer.pause();
}
:
if (mMediaPlayer != null && !mMediaPlayer.isPlaying()) {
Log.d(LOG_TAG, "Playing alarm through Media Player");
mMediaPlayer.start();
}
Huzzahを、それが動作します!
解決策を見つけました!クラスのonCreate()メソッドでオーディオを再生する呼び出しがありました。私はonResume()に移動しました。これは、デバイスが完全に目を覚ましていて、アクティビティが上に表示され、フォーカスがあることを知っているときです。 – user1299177