2017-04-11 15 views
-1

サウンドでローカル通知を実装しました。正常に動作していますが、ローカルの通知をクリアすると、私が演奏しているカスタム音が止まるはずです。Androidでのローカル通知音の停止

Uri uri = null; 
String[] split = content.split("-"); 
Intent intents = new Intent(context, MainActivity.class); 
PendingIntent pIntent = PendingIntent.getActivity(context, (int) System.currentTimeMillis(), intents, 0); 
//getting audio from raw folder 
uri = Uri.parse("android.resource://" + context.getPackageName() + "/" +R.raw.beep); 

//plays audio infinite times until user clicks or clear notification 
try 
{ 
    MediaPlayer player = MediaPlayer.create(context, uri); 
    player.setLooping(true); 
    player.start(); 

    Notification noti = new Notification.Builder(context) 
     .setContentTitle(split[0]) 
     .setContentText(device_name + split[1]).setSmallIcon(R.drawable.hi_notification) 
     .setContentIntent(pIntent) 
     .setDefaults(Notification.DEFAULT_ALL) 
     .setPriority(Notification.PRIORITY_HIGH) 
     .build(); 

    noti.sound = uri; 
    noti.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE; 

    NotificationManager notificationManager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); 
    // hide the notification after its selected 
    noti.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_ONLY_ALERT_ONCE; 

    notificationManager.notify(0, noti); 
} 
catch (IllegalStateException e) 
{ 
    e.printStackTrace(); 
}   
+0

それを見た後に自動的に通知をキャンセルするために使用され、私はちょうど .setAutoCancel(true)を追加し、それが通知をキャンセルして、サウンドを停止すると思いますあまりにも –

+0

返信ありがとうございます。私はこれを停止してみました。 –

答えて

0

通知音をINSISTENTに設定します。

1.Notification.DEFAULT_SOUND:サウンドの再生に使用されます。

2.Notification.FLAG_INSISTENT:このフラグは、通知時に操作が少なくなるまで、つまりバーをドラッグするか、バーをクリックするまで、サウンドが連続的に鳴るようにします。

3.Notification.FLAG_AUTO_CANCEL:このフラグを使用すると、

builder.setSmallIcon(R.mipmap.app_icon).setContentTitle(title) 
      .setContentText(msg) 
      .setColor(getResources().getColor(R.color.white)) 
      .addAction(R.drawable.alarm_off, getString(R.string.dismiss), pendingIntent) 
      .setOngoing(true) 
      .setSound(Uri.parse(path)); 

    Notification notification = builder.build(); 
    notification.flags |= Notification.FLAG_INSISTENT; 


    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(WAKE_UP_ALARM_ID, notification) 
+0

通知をクリアしても停止してもらえてありがとう、ありがとうございます。 –

+0

このコードを試してフラグを設定してください。notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_NO_CLEAR; – pradeep

+0

ありがとうございました。しかし、それは仕事が分かりません.Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCELこれは私のために働いた。 –