Android Wear:如果setGroup()调用,则setVibrate()不起作用

时间:2014-07-17 15:13:57

标签: android wear-os

调用setGroup()

后,我无法让手表振动

代码:

NotificationCompat.Builder notification = new NotificationCompat.Builder(context);
notification.setGroup(GROUP_KEY_NOTIFY);
notification.setVibrate(patternArray);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(id, notification.build());

观察:

      
  • 通知正确堆叠并显示在'Samsung Gear Live'
  • 上   
  • 除了预期的单独摘要外,手机上没有通知
  •   
  • 手表上没有振动,无论是第一次还是后续的叠加通知

尝试:

      
  • 改变了我能找到的每一面旗帜和一块状态,但没有任何帮助
  •   
  • 只有恢复手表震动的解决方案是在上面的代码中注释掉setGroup(),但会破坏堆叠并导致通知出现在手表和手机上

由于

更新:解决方案

完成发送堆叠通知的示例代码

static boolean CHILD2 = true;

public static void postNotifications(Context context) {
    NotificationTest test = new NotificationTest();
    Notification[] notifications = test.buildNotifications(context);
    for (int i = 0; i < notifications.length; i++) {
        Notification not = notifications[i];
        NotificationManagerCompat.from(context).notify(i, not);
    }
}

private static class NotificationTest {
    public Notification[] buildNotifications(Context context) {
        // Summary
        NotificationCompat.Builder summaryBuilder = new     
        NotificationCompat.Builder(context)
        .setGroup(EXAMPLE_GROUP_KEY)
        .setGroupSummary(true)
        .setContentTitle("The title")
        .setContentText("The text")
        .setSmallIcon(R.mipmap.ic_launcher)
        .setVibrate(new long[] {0, 1000, 50, 2000} );

        // Child 1
        NotificationCompat.Builder childBuilder1 = new   
        NotificationCompat.Builder(context)
        .setContentTitle("child 1 title")
        .setContentText("child 1 text")
        .setSmallIcon(R.mipmap.ic_launcher)
        .setLocalOnly(false)
        .setGroup(EXAMPLE_GROUP_KEY);

        // Child 2
        if (CHILD2) {
            NotificationCompat.Builder childBuilder2 = null;
            childBuilder2 = new NotificationCompat.Builder(context)
            .setContentTitle("child 2 title")
            .setContentText("child 2 text")
            .setSmallIcon(R.mipmap.ic_launcher);
            return new Notification[] { summaryBuilder.build(), childBuilder1.build(), childBuilder2.build() };
        }
        return new Notification[] { summaryBuilder.build(), childBuilder1.build() };                
    }
}

}

我发现SDK中的示例有点难以理解,因为它使用了许多类来组合通知。我希望这可以解决需要做的事情。

我以前的代码有两个问题:

  1. 'setLocalOnly'在摘要通知
  2. 上设置为'true' 在堆叠/子通知上调用了
  3. 'setVibration'而不是摘要通知
  4. 说明:

    可能不直观,因为摘要通知的文本没有显示在手表上,但它使用摘要通知中的振动模式,因此将其设置为本地只能防止振动。

0 个答案:

没有答案