私のアプリ要件は、プレーヤーの状態が変更されたときにメディアスタイルの通知を更新することです。 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することができます。
感謝を!これは問題の99%を解決しますが、私が望むのは音や振動が全くないということです。私はenableVibration()をfalse()に設定して振動を処理しました。しかし、まだ音のための解決策が必要です。 –
残念ながら、チャンネルを作成した後に手元にない通知チャンネルがあります。作成後は、事実の後でこれらのプロパティを変更することはできません。これらのサイレント通知用に追加のチャネルを作成し、そのチャネルでsetSound()を呼び出さないでください。また、IMPORTANCE_LOWに設定する必要があります。 – kcoppock
ありがとうございます。私はIMPORTANCE_LOWを設定しましたが、テストデバイスにアプリケーションを再インストールしませんでした。今、私はアプリを再インストールし、音がなくなった、ありがとう。 –