2012-08-17 6 views
7

私はNotificationの警告のために、ライト、サウンドまたはバイブレーション、またはこれら3つの組み合わせを選択するオプションをユーザに提供することができます。androidの通知のために振動、照明、またはサウンドの組み合わせを設定する

アンドロイドのドキュメントDEFAULT_ALLのオプションがあり、アラートの3つの方法すべてが使用されることがわかりました。

その他のいずれか1つを選択するオプションがあります(DEFAULT_LIGHTSDEFAULT_VIBRATEDEFAULT_SOUND)。

例えばSOUNDVIBRATIONの組み合わせがありますが、LIGHTSと他の組み合わせはできませんか?


EDIT

Notification.Builder's(prolink007の回答から)メソッドsetDefaults(int default)と述べている:値はビット単位-またはと組み合わせて次の1つまたは複数のフィールドでなければなりません

: DEFAULT_SOUND、DEFAULT_VIBRATE、DEFAULT_LIGHTS。

これはどのように使用しますか?

答えて

20

Notification.Builder API 11またはNotificationCompat.Builder API 1では、これらの種類の警告を設定する方法がいくつか用意されています。

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

値の一つ以上であるべきですbitwise-or:DEFAULT_SOUND、DEFAULT_VIBRATE、DEFAULT_LIGHTSと組み合わされた以下のフィールド。

はテストされていないが、私はあなたが SOUNDVIBRATIONLIGHTSたい場合は、このようなものだろうと考えている:、ゼリービーンデバイスで

setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE | DEFAULT_LIGHTS); 
+0

編集をご覧ください。 – Ashwin

+0

@Ashwin私はあなたの2番目の質問に関するより多くの情報で私の答えを編集しました。 – prolink007

+0

@Ashwinサムスンギャラクシーエースで働いていないので、ライトがあなたのために働いていますか? –

1

を通知優先度が最大かに設定されている場合にのみ機能します主導をデフォルトでは、再度確認してください。コードのスニペットはjbデバイスでうまく動作しています。ここで

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

私は、ユーザーが自分のデバイスのロックを解除するまで、3000ミリ、100ミリ秒のためのオンとオフのままになります通知用の青色LEDを示しています。

そして、あなたは私がNotificationCompatを好むポータビリティについてなど

+2

互換性ライブラリを使用している方はNotificationCompat.PRIORITY_DEFAULT! –

+0

私はxperia z1s lollipopを使用しています、ledは通知のために働いていません – blackHawk

+0

この値は何ですか0xFF0000FF – blackHawk

4

NotificationCompat(互換性)はsetDefaultsメソッドを無視してSetLightを使用するよりも、クラス、SetSound、Setvibrationを、使用しているかどうかを確認します。
ユーザーは、デフォルト値を希望する可能性があります。NotificationCombatでは、このようにユーザーのデフォルト設定に振動、光を設定して鳴らすことができます。

.setDefaults(-1) 

「-1」マッチがDEFAULT_ALLする場所:http://developer.android.com/reference/android/app/Notification.html#DEFAULT_ALL

をあなたが振動の許可を要求しなければならないことを、他にあなたがしますエラーが発生します。 Androidマニフェストファイルにこれを追加します。

<uses-permission android:name="android.permission.VIBRATE" /> 
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); 
0

私は同じ問題を抱えていましたが、ここに着陸した方がより良い解決策を得ました。 ここにコトリンのものがあります:

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 
} 
関連する問題