1

CanvasWatchFaceService.Engine我有一个基于最新 API(扩展)的表盘。现在我想让触摸事件在表盘中有一种可以触摸以打开设置等的活动区域。 ACanvasWatchFaceService.Engine继承自WallpaperService.Engine,它声明了两个重要方法:setTouchEventsEnabled(boolean)onTouchEvent(MotionEvent).

但即使我调用setTouchEventsEnabled(true)onCreate()方法,我也从未在我的引擎实现中Engine收到过调用。onTouchEvent(MotionEvent)

我做错了什么还是根本不可能?我知道一些提供活动区域的表盘,但我不确定它们是基于最新的 API 还是基于已弃用的 API(使用布局和 GUI 元素)。

4

2 回答 2

6

在新的 Android Wear 1.3 中使用交互式表盘 API:

更新:

只在基础类的onCreate函数中的 init 函数中添加一行:CanvasWatchFaceService.Engine

setWatchFaceStyle(new WatchFaceStyle.Builder(mService)
    .setAcceptsTapEvents(true)
    // other style customizations
    .build());

并管理下的点击事件

@Override
public void onTapCommand(int tapType, int x, int y, long eventTime) { }

笔记:

  • 您必须添加自己的代码来查找哪些触摸目标(如果有)被点击(tapType==TAP_TYPE_TAP
  • 您只能检测到单次、短按、没有滑动或长按。
  • 通过检测TAP_TYPE_TOUCHTAP_TYPE_TOUCH_CANCEL您可以猜测滑动手势,但TAP_TYPE_TOUCH_CANCEL不提供退出坐标。

要获得更多控制权,您唯一的选择是添加一个图层并根据您可以收集的SYSTEM_ALERT信息打开/关闭它......onVisibilityChangedonAmbientModeChanged

于 2015-09-20T16:23:48.183 回答
-3

这不可能。我想我是在 Android 开发人员组的 Google Plus 上的一个帖子中读到的。

表盘是一个“静态”的东西,就在那里,只是显示时间。触摸事件永远不会分派给它。

设置的建议模式是在手机应用程序上的配套应用程序上实现它。

于 2015-02-04T13:59:45.393 回答