适用于Android Wear的自定义表盘

Jar*_*ard 9 android wear-os

Android Wear已经出现了一些包含自定义表盘的应用程序(如此).它们不仅仅是展示表盘的应用程序; 它们是完全成熟的面孔,可在长按手表主屏幕时选择.我找不到有关如何设置应用以提供自定义面孔的任何文档.如何配置您的应用程序以提供面部?

mat*_*ash 18

编辑 随着Android Wear到Lollipop的更新,Android Wear Watch Faces 有一个全新的(更重要的是官方)API.

您可以查看有关该主题的博客文章,阅读官方文档下载示例代码.

此行以下的所有内容仅供历史使用:)


您只需要提供具有特定intent-filter的Activity,并包含一些权限(此处的信息).

活动:

<activity
    android:name=".WatchActivity"
    android:allowEmbedded="true"
    android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
    android:label="@string/watch_preview_name">

    <meta-data
        android:name="com.google.android.clockwork.home.preview"
        android:resource="@drawable/watch_preview_image" />

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.google.android.clockwork.home.category.HOME_BACKGROUND" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

和权限:

<uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您在Play商店中提到的应用程序的源代码也可以在github上使用.


包含WAKE_LOCK权限的原因在Sam Duke的这篇G +帖子中得到了很好的解释.基本上,当手表变暗时,CPU进入低功率状态,因此不会立即显示对表盘显示的更新.每当需要更新屏幕时获取PARTIAL_WAKE_LOCK解决了这个问题.


编辑 请注意,这是一个"非官方"的API,根据Wayne Piekarski的这篇文章,它可能在将来发布官方API时会崩溃(这应该在Android Wear升级到L时发生).