【发布时间】:2014-07-08 03:41:36
【问题描述】:
已经为 Android Wear 推出了一些包含自定义表盘 (like this one) 的应用。它们不仅仅是简单地显示表盘的应用程序;它们是成熟的面孔,可以在长按手表的主屏幕时选择。我找不到任何有关如何设置您的应用程序以提供自定义面孔的文档。您如何配置您的应用以提供面孔?
【问题讨论】:
已经为 Android Wear 推出了一些包含自定义表盘 (like this one) 的应用。它们不仅仅是简单地显示表盘的应用程序;它们是成熟的面孔,可以在长按手表的主屏幕时选择。我找不到任何有关如何设置您的应用程序以提供自定义面孔的文档。您如何配置您的应用以提供面孔?
【问题讨论】:
编辑 随着 Android Wear 对 Lollipop 的更新,Android Wear Watch Faces 有了一个全新的(更重要的是,官方)API。
您可以查看主题上的blog post,阅读official documentation 或download the sample code。
此行以下的所有内容仅用于历史目的:)
您只需要提供一个带有特定意图过滤器的 Activity,并包含几个权限(来自here 的信息)。
活动:
<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>
以及权限:
<uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
顺便说一下,你在Play商店中提到的应用程序的源代码也是availabe on github。
包含 WAKE_LOCK 权限的原因在 this G+ post by Sam Duke 中有很好的解释。基本上,当手表变暗时,CPU 进入低功耗状态,因此不会立即显示对表盘显示的更新。在屏幕需要更新时获取 PARTIAL_WAKE_LOCK 可以解决此问题。
编辑 请注意,这是一个“非官方”API,根据this post by Wayne Piekarski,它可能会在将来发布官方 API 时中断(这应该在 Android Wear 时发生)已升级为 L)。
【讨论】:
WAKE_LOCK 似乎特别不需要。
编辑:下面是我的一篇新博文,它解释了 Lollipop 中的新 Watch Face API。
http://toastdroid.com/2014/12/10/developing-a-watch-face-for-android-wear-lollipop/
我写了一篇博客文章,描述了开发表盘的过程。
http://toastdroid.com/2014/07/18/developing-watchfaces-for-android-wear/
【讨论】:
如果您想使用 OpenGL ES 创建表盘,那么我们在创建表盘方面的经验将对您有用:
http://androidworks-kea.blogspot.com/2015/02/developers-notes-v-custom-watch-faces.html
【讨论】: