2017-09-17 19 views
2

私のアプリ要件は、プレーヤーの状態が変更されたときにメディアスタイルの通知を更新することです。 MediaSession を使用して、音や振動を発生させることなく、完全に動作し、起動し、新しいメディアタイプの通知を表示します。通知でサウンドを無効にする方法(Android O以上の通知)

問題: Android O要件ごとに通知チャネルを構築する際に、次のコードを使用して通知チャネルを作成します。次に、迷惑な問題は、メディアセッションが変更されるたびに、各通知が更新され、Android Oでは通知音が再生されるようになります。

新しい通知ごとにサウンドを無効にしたい場合は、サウンドを設定しないと、デフォルトのサウンドが鳴り、両方のフィールドでnullを渡しても機能しません。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
     NotificationChannel notificationChannel = new NotificationChannel(
       NOTIFICATION_CHANNEL_ID, 
       "SimpleBakingApp Media Notification", 
       NotificationManager.IMPORTANCE_LOW 
     ); 

     // Configure the notification channel. 
     notificationChannel.setDescription("Channel description"); 
     notificationChannel.setSound(null,null); // <-- Is there a way to disable sound? null doesn't work 
     notificationChannel.enableLights(true); 
     notificationChannel.setLightColor(Color.RED); 
     notificationChannel.enableVibration(false); 
     mNotificationManager.createNotificationChannel(notificationChannel); 
    } 

エキストラ情報、

私showNotification()、私はExoPlayer V2を使用していPlayer.EventListenerコールバックでのプレーヤーの状態変化時に発火する(通知を構築する方法を)releventすることができます。

答えて

1

あなたが探しているものはsetOnlyAlertOnce(boolean)です。

通知を作成しているときに、その通知の最初の表示のみ(同じ通知へのその後の更新ではない)で音や振動をトリガーする場合は、これをtrueに設定できます。

+0

感謝を!これは問題の99%を解決しますが、私が望むのは音や振動が全くないということです。私はenableVibration()をfalse()に設定して振動を処理しました。しかし、まだ音のための解決策が必要です。 –

+0

残念ながら、チャンネルを作成した後に手元にない通知チャンネルがあります。作成後は、事実の後でこれらのプロパティを変更することはできません。これらのサイレント通知用に追加のチャネルを作成し、そのチャネルでsetSound()を呼び出さないでください。また、IMPORTANCE_LOWに設定する必要があります。 – kcoppock

+0

ありがとうございます。私はIMPORTANCE_LOWを設定しましたが、テストデバイスにアプリケーションを再インストールしませんでした。今、私はアプリを再インストールし、音がなくなった、ありがとう。 –

-3

)は(setSoundを使用せずにNotificationCompat.Builderオブジェクトを作成し、それは例えば、音なし

を通知が表示されます:

notification = mBuilder 
       .setStyle(mStyle) 
       .setSmallIcon(notificationIcon) 
       .setTicker(title) 
       .setWhen(0) 
       .setAutoCancel(true) 
       .setContentTitle(title) 
       .setContentIntent(resultPendingIntent) 
       .build(); 
+0

Android Oからは、このアプローチは機能しなくなりました。音を設定しなくても通知からの音が残っています。 –

+0

はい、Android 8では動作しません。 – MaxF

関連する問題