BroadcastReceiverでMediaPlayerを動作させる際に問題が発生しました。私が高レベルでやりたいことは、Firebaseからの通知が2分後に来てから数分後に音と振動を再生することです。 IはFirebaseMessagingService拡張するクラスを有し、onMessageReceived()方法で私はsetOnetimeTimerを呼び出す(これは)であるた:BroadcastReceiverのMediaPlayerがAndroidで動作しない
public void setOnetimeTimer(Context context) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (1000 * 60 * 1), pi); // 1 minute
}
そしてAlarmManagerBroadcastReceiver()である:
public class AlarmManagerBroadcastReceiverブロードキャスト受信者{
MediaPlayer mp = null;
@Override
public void onReceive(Context context, Intent intent) {
if (mp != null) {
mp.stop();
mp.release();
mp = null;
}
mp = MediaPlayer.create(context, R.raw.my_weird_sound);
mp.start();
Vibrator vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vib.vibrate(1000);
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
}
振動が問題なく実行されますが、音が再生されていないと私は取得していますエラーは次のとおりです。
E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
D/MediaPlayer: setSubtitleAnchor in MediaPlayer
は、私は私のマニフェストにAlarmManagerBroadcastReceiverを持っていることにも留意してください。
助けていただけたら幸いです!
:Achitecure
は今、これを試してみてください。迅速な回答をいただきありがとうございます! – AmadeusX
** MediaPlayerのD/MediaPlayer:setSubtitleAnchor **この警告は、MediaPlayerに字幕を追加しないと発生します。この警告は無視できます。 –