Android Wear:佩戴设备上的通知卡等计时器

时间:2014-08-26 06:59:16

标签: android wear-os

我正致力于为Android Wear实施番茄钟应用程序。

我想制作similar to standard timer UI/UX,我猜它是使用计时器作为标题显示/更新通知来实现的,因此我会定期显示通知并从服务中更新:

private void updateNotification() {
    Intent stopActionIntent = new Intent(this, PomodoroActivity.class);
    stopActionIntent.setAction(PomodoroActivity.ACTION_STOP);
    PendingIntent stopActionPendingIntent = PendingIntent.getActivity(this, 0, stopActionIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Action stopAction = new NotificationCompat.Action.Builder(
            R.drawable.ic_stop,
            getString(R.string.stop_pomodoro),
            stopActionPendingIntent)
            .build();

    Notification notification = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bg_pomodoro_timer))
            .setContentTitle(convertDiffToTimer(System.currentTimeMillis(), timerDeadlineMs))
            .setPriority(Notification.PRIORITY_MAX)
            .setOngoing(true)
            .extend(new NotificationCompat.WearableExtender().addAction(stopAction))
            .build();

    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    notificationManager.notify(1, notification);
}

这种解决方案的不愉快问题是通知眨眼。

任何想法如何逃避眨眼?或者也许是实现目标行为的其他方式?

1 个答案:

答案 0 :(得分:0)

更新正在进行/现有的通知 -

  1. 在构建器中使用相同的Id通知
  2. 使用.setOnlyAlertOnce(true)
  3. NotificationCompat.Builder notificationBuilder; public void generateNotificationForTimer(String timeInString, boolean isFirstTime) { if (isFirstTime) { notificationBuilder = new NotificationCompat.Builder(this) .setStyle(new NotificationCompat.BigPictureStyle()) .setOnlyAlertOnce(true) .setContentTitle("Timer Notification Demo") .setContentText("Time - " + timeInString) .setSmallIcon(R.drawable.common_signin_btn_icon_dark); NotificationManagerCompat.from(this).notify(110, notificationBuilder.build()); } else { notificationBuilder.setContentText(timeInString); NotificationManagerCompat.from(this).notify(110, notificationBuilder.build()); } }