1
特定の時刻に通知をスローし、MediaPlayerオブジェクトを使用してオーディオを再生するサービス(バインドされていない)があります。通知がスワイプ(または削除)されたときに保留中のインテントを設定します。放送受信機を始動させた。今私は、受信者がオーディオを停止したい、私はMediaPlayerオブジェクトをparcelableを実装することはできませんので、オブジェクトを渡すのに問題があります。私はthis質問に示唆されているように、サービスをバインドしたくない。オブジェクトを渡す方法はありますか?異なるコンポーネント間でMediaPlayerオブジェクトを渡す方法
Calendar current = Calendar.getInstance();
while (!(Integer.parseInt(parts[0]) == current.get(Calendar.HOUR_OF_DAY) &&
Integer.parseInt(parts[1]) == current.get(Calendar.MINUTE) &&
Integer.parseInt(parts[2]) == current.get(Calendar.SECOND)))
{
current = Calendar.getInstance();
}
mediaPlayer = MediaPlayer.create(AlarmService.this, R.raw.angersextended);
mediaPlayer.start();
Intent intent = new Intent(AlarmService.this, NotifSwipeReceiver.class);
Bundle bundle=new Bundle();
Log.i("abc1", "beforeparcelable");
bundle.putParcelable("mp", (Parcelable) mediaPlayer);
//bundle.putSerializable("mp", (Serializable) mediaPlayer);
Log.i("abc1","afterparcelable");
intent.putExtras(bundle);
PendingIntent pendingIntent = PendingIntent.getBroadcast(AlarmService.this, 0, intent, 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(AlarmService.this);
mBuilder.setDeleteIntent(pendingIntent);
mBuilder.setContentTitle(time);
mBuilder.setContentText("Alarm" + String.valueOf(j));
mBuilder.setSmallIcon(R.mipmap.ic_launcher);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
Log.i("abc", String.valueOf(j)+"notif");
、ここで放送受信機
public static class NotifSwipeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MediaPlayer mp= (MediaPlayer) intent.getExtras().getParcelable("mp");
mp.stop();
//MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.angersextended);
//if(mediaPlayer.isPlaying())mediaPlayer.stop();
}
public NotifSwipeReceiver(){
}
}
お世話になりませんでした。どのように動的に登録すると、オブジェクトはブロードキャストレシーバによって使用されますか? – Jacksparrow