我有一个服务(不限制),该服务在特定时间投掷通知,并使用MediaPlayer对象开始播放音频。我在刷(或删除)的通知时设置了待处理意图开始广播接收器。现在,我希望接收器停止音频,但是由于无法使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(){
}
}
您可以在服务中的运行时注册广播接收器,并在服务停止时取消注册,因此您不必在组件之间传递MediaPlayer。