我有一个手表表面建立在最新的应用程序接口(扩展CanvasWatchFaceService.Engine)。现在我想让触摸事件在手表表面有一种活动区域,可以触摸打开设置等。CanvasWatchFaceService.Engine继承自WallpaperService.Engine,它声明了两个重要的方法:setTouchEventsEnabled(boolean)和onTouchEvent(MotionEvent)。
但是,即使我在Engine的onCreate()方法中调用setTouchEventsEnabled(true),我也从未在引擎实现中收到对onTouchEvent(MotionEvent)的调用。
是我做错了什么,还是根本不可能?我知道有些watch faces提供了活动区域,但我不确定这些区域是基于最新的API构建的,还是基于过时的API构建的(使用布局和GUI元素)。
发布于 2015-09-21 00:23:48
在新的Android Wear 1.3中使用Interactive Watch Face API:
更新:
在基于CanvasWatchFaceService.Engine的类中的onCreate函数中,只向初始化函数添加一行:
setWatchFaceStyle(new WatchFaceStyle.Builder(mService)
.setAcceptsTapEvents(true)
// other style customizations
.build());和管理下的点击事件
@Override
public void onTapCommand(int tapType, int x, int y, long eventTime) { }备注:
TAP_TYPE_TOUCH和TAP_TYPE_TOUCH_CANCEL,你可以猜测滑动的手势,尽管TAP_TYPE_TOUCH_CANCEL不提供退出coordinates.为了获得更多的控制,你唯一的选择是添加一个SYSTEM_ALERT层,并根据你可以从onVisibilityChanged和onAmbientModeChanged收集的信息来打开/关闭它。
发布于 2015-02-04 21:59:45
这是不可能的。我想我是在Android开发者小组的Google Plus上的一个帖子里读到的。
表盘是一个“静态”的东西,就在那里,只是显示时间。触摸事件永远不会被分派给它。
建议的设置模式是在手机应用程序上的配套应用程序上实现它。
https://stackoverflow.com/questions/28323119
复制相似问题