9

カスタム通知を作成したい。だから私はライトとトーンを変えたい。そのために を使ってNotificationCompat.Builderいます。

今私は経由でライトを変更したいですsetLights()。正常に動作します。onMSしかし、とのデフォルト値を設定したいoffMS。私はそれについて何かを見つけていません。

デフォルト値を見つけるのを手伝ってくれる人はいますか? そのためのドキュメントは次のとおりです。http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setLights(int, int, int)

4

3 に答える 3

8

答えについては、 Android のソースを参照してください。

<!-- Default color for notification LED. -->
<color name="config_defaultNotificationColor">#ffffffff</color>
<!-- Default LED on time for notification LED in milliseconds. -->
<integer name="config_defaultNotificationLedOn">500</integer>
<!-- Default LED off time for notification LED in milliseconds. -->
<integer name="config_defaultNotificationLedOff">2000</integer>

ただし、ROM が異なれば、これらの値も異なる場合があります。たとえば、私のリターン5000config_defaultNotificationLedOff. そのため、実行時にそれらを取得したい場合があります。

Resources resources = context.getResources(),
          systemResources = Resources.getSystem();
notificationBuilder.setLights(
    ContextCompat.getColor(context, systemResources
        .getIdentifier("config_defaultNotificationColor", "color", "android")),
    resources.getInteger(systemResources
        .getIdentifier("config_defaultNotificationLedOn", "integer", "android")),
    resources.getInteger(systemResources
        .getIdentifier("config_defaultNotificationLedOff", "integer", "android")));

diffによると、これらの属性は Android 2.2 以降 (API レベル 8 以降) に存在することが保証されています。

于 2015-12-10T07:11:53.363 に答える
2

役に立たない@Aleks G。compat libaray から最新のアップデートを入手しました。しかし、Eclipseはbuild()利用可能です。理由はわかりません。ドキュメントはイエスと言い、あなたは...

これは私の現在のコードです:

    NotificationCompat.Builder notify = new NotificationCompat.Builder(context);
    notify.setLights(Color.parseColor(led), 5000, 5000);
    notify.setAutoCancel(true);
    notify.setSound(Uri.parse(tone));
    notify.setSmallIcon(R.drawable.ic_stat_kw);
    notify.setContentTitle("Ttiel");
    notify.setContentText("Text");
    Intent showIntent = new Intent(context, Activity_Login.class);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, showIntent, 0); 
    notify.setContentIntent(contentIntent);

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0, notify.getNotification());

完璧に動作します。しかし、デフォルトonMSoffMSはありませんsetLights():(

于 2013-02-27T11:52:33.503 に答える
1

あなたはこれを行うことができるはずです:

Notifictaion notf = new Notification.Builder(this).setXXX(...).....build();
notf.ledARGB = <your color>;
notf.ledOnMS = <your value>;  //or skip this line to use default
notf.ledOffMS = <your value>; //or skip this line to use default

setLights基本的に、通知ビルダーでは使用しないでください。代わりに、最初に通知を作成します。その後、ライトの個々のフィールドにアクセスできます。

更新:これは、Android 2.1 でコンパイルして正常に動作し、LED に青色を使用するサンプル プロジェクトからの実際のコピー/貼り付けです。

Notification notf = new NotificationCompat.Builder(this)
    .setAutoCancel(true)
    .setTicker("This is the sample notification")
    .setSmallIcon(R.drawable.my_icon)
    .build();
notf.ledARGB = 0xff0000ff;
NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notf);
于 2013-02-27T10:34:58.167 に答える