Ich habe einen Dienst (nicht gebunden), der eine Benachrichtigung zu einem bestimmten Zeitpunkt auslöst und Audio mit MediaPlayer Objekt spielt.Ich setze eine ausstehende Absicht, wenn die Benachrichtigung übersprungen (oder gelöscht) wird startete einen Rundfunkempfänger. Jetzt möchte ich, dass der Receiver den Ton stoppt, aber ich habe Schwierigkeiten, das Objekt zu übergeben, da ich das MediaPlayer-Objekt nicht parzellierbar machen kann. Ich möchte den Dienst nicht binden, wie in this Frage vorgeschlagen. Gibt es eine Möglichkeit, das Objekt zu passieren?Wie MediaPlayer-Objekt zwischen verschiedenen Komponenten übergeben werden
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");
und hier ist der Empfänger Sendung
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(){
}
}
Haben Sie nicht bekommen. Wie ermöglicht die dynamische Registrierung, dass das Objekt vom Broadcast-Empfänger verwendet wird? – Jacksparrow