public
abstract
class
WatchFaceService
extends WallpaperService
java.lang.Object | |||||
↳ | android.content.Context | ||||
↳ | android.content.ContextWrapper | ||||
↳ | android.app.Service | ||||
↳ | android.service.wallpaper.WallpaperService | ||||
↳ | android.support.wearable.watchface.WatchFaceService |
Known Direct Subclasses |
A subclass of WallpaperService
with a WallpaperService.Engine
that exposes
callbacks for the lifecycle of a watch face. If you want to create a watch face for a wearable,
you should use this instead of vanilla WallpaperService
.
A watch face service, similarly to a wallpaper service, must implement only one method:
onCreateEngine()
. However, it must also create a subclass of inner class
WatchFaceService.Engine
. Most watch face engines will implement the following
methods:
onTimeTick()
to update the time and refresh the view
onAmbientModeChanged(boolean)
to update ambient mode and refresh the view
Most watch face engines will also implement onInterruptionFilterChanged(int)
to
update the view depending on how much information the user has requested.
For updates that occur in ambient mode a wake lock will be held so the device doesn't go to sleep until the watch face finishes drawing.
Registering watch faces in your application works similarly to registering wallpapers with several additional steps. First, watch faces require the wake lock permission:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Second, your watch face service declaration needs preview metadata:
<meta-data android:name="com.google.android.wearable.watchface.preview" android:resource="@drawable/preview_face" /> <meta-data android:name="com.google.android.wearable.watchface.preview_circular" android:resource="@drawable/preview_face_circular" />
Finally, you need to add a special intent filter, so your watch face can be detected:
<intent-filter> <action android:name="android.service.wallpaper.WallpaperService" /> <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" /> </intent-filter>
For more information consult: https://developer.android.com/training/wearables/watch-faces/index.html
Nested classes | |
---|---|
class |
WatchFaceService.Engine
The actual implementation of a watch face. |
@interface |
WatchFaceService.TapType
|
Constants | |
---|---|
int |
INTERRUPTION_FILTER_ALARMS
Returned by |
int |
INTERRUPTION_FILTER_ALL
Returned by |
int |
INTERRUPTION_FILTER_NONE
Returned by |
int |
INTERRUPTION_FILTER_PRIORITY
Returned by |
int |
INTERRUPTION_FILTER_UNKNOWN
Returned by |
String |
PROPERTY_BURN_IN_PROTECTION
Property in bundle passed to |
String |
PROPERTY_LOW_BIT_AMBIENT
Property in bundle passed to |
int |
TAP_TYPE_TAP
Used in onTapCommaned to indicate that an "up" event on the watch face has occurred that has not been consumed by another activity. |
int |
TAP_TYPE_TOUCH
Used in onTapCommand to indicate a "down" touch event on the watch face. |
int |
TAP_TYPE_TOUCH_CANCEL
Used in onTapCaommand to indicate that a previous TAP_TYPE_TOUCH touch event has been canceled. |
Inherited constants |
---|
From
class
android.service.wallpaper.WallpaperService
|
From
class
android.app.Service
|
From
class
android.content.Context
|
From
interface
android.content.ComponentCallbacks2
|
Public constructors | |
---|---|
WatchFaceService()
|
Public methods | |
---|---|
abstract
WatchFaceService.Engine
|
onCreateEngine()
|
int INTERRUPTION_FILTER_ALARMS
Returned by getInterruptionFilter()
and passed to
onInterruptionFilterChanged(int)
. This value means that the user requested to
only be interrupted by alarms.
Constant Value: 4 (0x00000004)
int INTERRUPTION_FILTER_ALL
Returned by getInterruptionFilter()
and passed to
onInterruptionFilterChanged(int)
. This value means that the user requested to see
all notifications.
Constant Value: 1 (0x00000001)
int INTERRUPTION_FILTER_NONE
Returned by getInterruptionFilter()
and passed to
onInterruptionFilterChanged(int)
. This value means that the user requested not to
see any notifications.
Constant Value: 3 (0x00000003)
int INTERRUPTION_FILTER_PRIORITY
Returned by getInterruptionFilter()
and passed to
onInterruptionFilterChanged(int)
. This value means that the user requested to see
only high priority notifications.
Constant Value: 2 (0x00000002)
int INTERRUPTION_FILTER_UNKNOWN
Returned by getInterruptionFilter()
and passed to
onInterruptionFilterChanged(int)
. This value means the interruption filter is
unavailable.
Constant Value: 0 (0x00000000)
String PROPERTY_BURN_IN_PROTECTION
Property in bundle passed to onPropertiesChanged(Bundle)
to indicate whether burn-in
protection is required. When this property is set to true, views are shifted around
periodically in ambient mode. To ensure that content isn't shifted off the screen, watch
faces should avoid placing content within 10 pixels of the edge of the screen. Watch faces
should also avoid solid white areas to prevent pixel burn-in. Both of these requirements only
apply in ambient mode, and only when this property is set to true.
Constant Value: "burn_in_protection"
String PROPERTY_LOW_BIT_AMBIENT
Property in bundle passed to onPropertiesChanged(Bundle)
to indicate whether the device
has low-bit ambient mode. When this property is set to true, the screen supports fewer bits
for each color in ambient mode. In this case, watch faces should disable anti-aliasing in
ambient mode.
Constant Value: "low_bit_ambient"
int TAP_TYPE_TAP
Used in onTapCommaned to indicate that an "up" event on the watch face has occurred that has not been consumed by another activity. A TAP_TYPE_TOUCH will always occur first. This event will not occur if a TAP_TYPE_TOUCH_CANCEL is sent.
Constant Value: 2 (0x00000002)
int TAP_TYPE_TOUCH
Used in onTapCommand to indicate a "down" touch event on the watch face.
Constant Value: 0 (0x00000000)
int TAP_TYPE_TOUCH_CANCEL
Used in onTapCaommand to indicate that a previous TAP_TYPE_TOUCH touch event has been canceled. This generally happens when the watch face is touched but then a move or long press occurs.
Constant Value: 1 (0x00000001)
WatchFaceService ()