BroadcastReceiver에서 MediaPlayer를 작동시키는 데 문제가 있습니다. 내가 높은 수준에서하고 싶은 것은 두 번째 알림과 같이 Firebase로부터 알림을받은 후 x 분 후에 소리와 진동을 재생하는 것입니다. I가 FirebaseMessagingService 연장되는 클래스가 있으며 onMessageReceived() 방법 I은 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 extends BroadcastReceiver {
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
을 가지고 또한 명심하십시오. 도움이 될 것입니다.
메시지는 동일 머물렀다하지만 지금은 완벽했다. 빠른 답변 주셔서 대단히 감사합니다! – AmadeusX
** MediaPlayer의 D/MediaPlayer : setSubtitleAnchor **이 경고는 MediaPlayer에 자막을 추가하지 않으면 발생합니다.이 경고는 무시해도됩니다. –