【问题标题】:Android Wear notifications: full screenAndroid Wear 通知:全屏
【发布时间】:2014-10-09 21:54:01
【问题描述】:

我想创建这样的通知(如here,在打破卡片(使用自定义布局)部分)。也就是说,它应该包含一个全屏页面(实际上是一个地图)。

它是(在图片上)扩展通知还是穿戴应用程序?如何实现这个全屏视图?

我已尝试按照here 的描述进行操作,但我的活动不是从通知开始的。

【问题讨论】:

    标签: android wear-os


    【解决方案1】:

    您可以像这样将 Activity 嵌入到 Wear Notification 中:

    Notification myFullScreenNotification = new Notification.Builder(context)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentText(notificationText)
            .extend(new Notification.WearableExtender()
                    .setCustomSizePreset(Notification.WearableExtender.SIZE_FULL_SCREEN)
                    .setDisplayIntent(PendingIntent.getActivity(context, 0, new Intent(context, MyActivity.class), 0)))
            .build();
    

    确保您在 AndroidManifest.xml 中授予正确的权限:

    <activity
        android:name=".MyActivity"
        android:exported="true"
        android:allowEmbedded="true"
        android:taskAffinity="" />
    

    通知正常显示,直到用户向上滑动,然后它会变成全屏并在页面上运行活动。

    如果您想将 Activity 用作 Notification 的辅助页面,则将上面的 Notification 作为另一个通知的页面插入,如下所示:

    Notification myWearNotification = new Notification.Builder(context)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentText(notificationText)
            .extend(new Notification.WearableExtender()
                    .addPage(myFullScreenNotification)
            .build();
    

    【讨论】:

    • 不幸的是,这对我不起作用。也许那是因为我使用的是 NotificationCompat 库(不是 Notification),但我不确定。摘录没有影响。只是没有任何反应。有什么线索吗?
    • 不需要使用 NotificationCompat 库,因为此代码应该在可穿戴应用程序而不是手持应用程序上运行。我认为没有办法直接从手持应用程序执行此操作。我认为您需要制作一个可穿戴应用程序并从那里启动通知。
    • 这就是问题所在。它不是一个应用程序,我想以这种方式扩展通知。顺便说一句,经过一些研究,在我看来这是不可能的,全屏的唯一方法是一个我不需要的应用程序。
    • 如果这是实现您想要做的事情的唯一方法,那么您确实需要它!
    • 你测试过这段代码吗?因为我正在做一些非常相似的事情,并且在让图标显示在偷看通知上时遇到问题。如果我像你建议的那样做,它只显示 contentTitle。如果我在 WearableExtender 上设置图标,图标会显示,但视图不够大以适应它(它异常小,似乎被调整为只适合标题)。我实际上创建了另一个问题:stackoverflow.com/questions/29441662/…
    【解决方案2】:

    需要 Android Wear 应用才能完全自定义通知的布局。

    我尝试编写一个自定义库,该库从手机发送一个布局 xml 以供佩戴和充气,但由于与 LayoutInflator 相关的限制,这是不可能的。

    以下是相关的参考:出于性能原因,视图膨胀很大程度上依赖于在构建时完成的 XML 文件的预处理。因此,目前无法在运行时在纯 XML 文件上使用带有 XmlPullParser 的 LayoutInflater;它仅适用于从已编译资源(R.something 文件)返回的 XmlPullParser。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多