7

のアラートには、ライト、サウンド、バイブレーション、またはこれら3つの組み合わせを選択するオプションをユーザーに提供したいと思いますNotification

DEFAULT_ALLAndroidドキュメントでは、アラートの3つの方法すべてのどこでアラートを使用するかというオプションがあることがわかりました。

それ以外の場合は、それらのいずれかを選択するオプションがあります(、、DEFAULT_LIGHTS)。DEFAULT_VIBRATEDEFAULT_SOUND

たとえばSOUND、との組み合わせを作成する方法はありますVIBRATIONLIGHTS、他の組み合わせを作成することはできませんか?


編集

Notification.Builder's(prolink007の回答から)メソッドは次のsetDefaults(int default)ように述べています:

値は、ビット単位で組み合わせた次のフィールドの1つ以上である必要があります-または:DEFAULT_SOUND、DEFAULT_VIBRATE、DEFAULT_LIGHTS。

これはどのように使用する必要がありますか?

4

5 に答える 5

20

Notification.BuilderAPI11またはNotificationCompat.BuilderAPI1は、これらのタイプのアラートを設定するためのいくつかの異なるメソッドを提供します。

  • setLights(...)
  • setSound(...)
  • setVibrate(...)

値は、ビット単位で組み合わせた次のフィールドの1つ以上である必要があります-または:DEFAULT_SOUND、DEFAULT_VIBRATE、DEFAULT_LIGHTS。

テストされていませんが、必要に応じてこのようなことを行うとSOUND思いVIBRATIONますLIGHTS

setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE | DEFAULT_LIGHTS);
于 2012-08-17T13:31:27.660 に答える
5

移植性のために、私はNotificationCompatを好みます。
ユーザーはおそらく自分のデフォルト値を好むでしょう。NotificationCombatでは、バイブレーション、光、音を次のようにユーザーのデフォルト設定に設定できます。

.setDefaults(-1)

ここで、「-1」はDEFAULT_ALLに一致します:http://developer.android.com/reference/android/app/Notification.html#DEFAULT_ALL

VIBRATE権限をリクエストする必要があるわけではありません。そうしないと、エラーが発生します。これをAndroidマニフェストファイルに追加します。

<uses-permission android:name="android.permission.VIBRATE" />
于 2013-11-09T23:24:04.510 に答える
5

私はこの答えが少し前に答えられたことを知っていますが、それについての私の方法を提供したかっただけです。これは、光、振動、音の複数の組み合わせに理想的に機能し、ユーザーに有効にするか、それらを無効にします。

int defaults = 0;
if (lights) {
    defaults = defaults | Notification.DEFAULT_LIGHTS;
}               
if (sound) {
    defaults = defaults | Notification.DEFAULT_SOUND;
}
if (vibrate) {
    defaults = defaults | Notification.DEFAULT_VIBRATE;
}
builder.setDefaults(defaults);
于 2014-04-16T19:35:13.930 に答える
1

ジェリービーンズデバイスでは、通知の優先度が最大またはデフォルトに設定されている場合にのみLEDが機能します。もう一度確認してください。次のコードスニペットは、jbデバイスで正常に機能しています。

notification.setLights(0xFF0000FF,100,3000);
notification.setPriority(Notification.PRIORITY_DEFAULT);

ここでは、通知用に導かれた青色を示しています。これは、ユーザーがデバイスのロックを解除するまで、100ミリ秒の間オンになり、3000ミリ秒の間オフになります。

また、setDefaultsメソッドを無視してSetLight、SetSound、Setvibrationなどを使用するよりもNotificationCompat(互換性)クラスを使用しているかどうかを確認してください

于 2012-12-25T07:15:37.063 に答える
0

同じ問題が発生しましたが、ここに着陸した後、より良い解決策が得られました。これがkotlinのものです:

fun getDefaults(val isSoundOn: Boolean, val isVibrate: Boolean, val isLightOn: Boolean): Int {
    var defaults = 0
    if (isLightOn && isSoundOn && isVibrate)
        return Notification.DEFAULT_ALL
    if (isLightOn) {
        defaults = defaults or Notification.DEFAULT_LIGHTS
    }
    if (isSoundOn) {
        defaults = defaults or Notification.DEFAULT_SOUND
    }
    if (isVibrate) {
        defaults = defaults or Notification.DEFAULT_VIBRATE
    }
    return defaults
}
于 2018-03-01T06:36:24.250 に答える