public void runSound(){
Intent it = new Intent(Values.TAG_EXECUTE_ALARM);
PendingIntent pendIntent = PendingIntent.getBroadcast(this, 0, it, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND,0);
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
long time = calendar.getTimeInMillis();
alarm.set(AlarmManager.RTC_WAKEUP,time,pendIntent);
}
このメソッドはサービスから呼び出されます。私のサービスは、デバイスがスリープ モードになっていても、ユーザーに通知するためにサウンドを再生することになっています。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
MediaPlayer player = MediaPlayer.create(arg0, R.raw.order_alarm);
player.setAudioStreamType(AudioManager.STREAM_ALARM);
player.start();
}
実際に音を鳴らすクラスです。残念ながら、デバイスは起動せず、サウンドも再生されません。デバイスがスリープモードに入る前に runSound が呼び出されると、サウンドは完全に機能します...何かアイデアはありますか?
編集:
-> 静的参照を削除しました (そうです、runSound はサービス内にあるため、それらはばかげていました)。
-> はい、タグ値は受信者のインテント フィルターで定義されます
-> 質問を改善しました。