2016-06-23 10 views
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(){ 
    } 

} 

答えて

0

は、あなたがあなたのサービスでは、実行時に放送受信機を登録し、サービスが停止したときにそれを登録解除するので、あなたはコンポーネント間のMediaPlayerを渡す必要はありませんすることができます。

+0

お世話になりませんでした。どのように動的に登録すると、オブジェクトはブロードキャストレシーバによって使用されますか? – Jacksparrow

関連する問題