在 Android Wear 中正确显示通知

Posted

技术标签:

【中文标题】在 Android Wear 中正确显示通知【英文标题】:Display notifications correctly in Android Wear 【发布时间】:2017-03-02 19:46:54 【问题描述】:

android Wear 方形设备配对时,我的通知会正确显示 - 它们只是发送到设备(手表)以自动显示以保持代码简单。但是,它们位于 Wear 圆形手表的默认屏幕中心,并且圆形屏幕通知的一角实际上缺少一些通知信息。

BigTextStyle myStyle = new Notification.BigTextStyle();
.bigText(myText);

Notification.Builder notificationBuilder =
    new Notification.Builder(this)
    .setStyle(myStyle)
     // and so on

但是,可能是在某处添加以下几行代码(及其类导入):

  Notification.WearableExtender myextend = new Notification.WearableExtender();
.WearableExtender()

.setGravity(Gravity.TOP);

// add other code
.extend(myextend)

【问题讨论】:

【参考方案1】:

基于此documentation,由于某些 Android Wear 设备具有方形屏幕,而其他设备具有圆形屏幕,因此您的表盘应适应并利用屏幕的特定形状,如 design guidelines 中所述。

Android Wear 可让您的表盘在运行时确定屏幕形状。要检测屏幕是方形还是圆形,重写CanvasWatchFaceService.Engine类中的onApplyWindowInsets()方法,如下所示:

private class Engine extends CanvasWatchFaceService.Engine 
boolean mIsRound;
int mChinSize;

@Override
public void onApplyWindowInsets(WindowInsets insets) 
super.onApplyWindowInsets(insets);
mIsRound = insets.isRound();
mChinSize = insets.getSystemWindowInsetBottom();

...

具有圆形屏幕的设备可以在屏幕底部包含一个嵌入(或“下巴”)。要在绘制表盘时调整您的设计,请检查 mIsRoundmChinSize 成员变量的值。

以下是一些可能有帮助的相关主题:

Is there any way to detect if the clock is round? How to set the Watchface in the center of watch

【讨论】:

以上是关于在 Android Wear 中正确显示通知的主要内容,如果未能解决你的问题,请参考以下文章

如何让通知图标在 Android 8.0.0 上正确显示?

圆形 Android Wear 设计的 Snackbar

如何在睡眠模式下唤醒 Android Wear?

我可以将自定义对象发送到 Android Wear 吗?

Android Wear 圆形模拟器充气方形布局

Android Wear没有拿起本地化版本