Android 在手表表面处理触摸事件

Android 在手表表面处理触摸事件,android,wear-os,watch-face-api,Android,Wear Os,Watch Face Api,我有一个基于最新API的手表面板(扩展CanvasWatchFaceService.Engine)。现在我想让触摸事件在手表表面有一个活动区域,可以触摸打开设置,等等。 CanvasWatchFaceService.Engine继承自wallperservice.Engine,它声明了两个重要的方法:setTouchEventsEnabled(布尔)和onTouchEvent(MotionEvent) 但是,即使在Engine的onCreate()方法中调用setTouchEventsEnabl

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

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


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

这是不可能的。我想我是在安卓开发者组的Google Plus上读到的

手表的表面应该是一个“静态”的东西,就在那里,只是显示时间。触摸事件从不发送到它


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

在新版Android Wear 1.3中使用交互式手表界面API:

更新:

仅向基于
CanvasWatchFaceService.Engine
的类中的
onCreate
函数中的init函数添加一行:

setWatchFaceStyle(new WatchFaceStyle.Builder(mService)
    .setAcceptsTapEvents(true)
    // other style customizations
    .build());
并管理下的tap事件

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

  • 您必须添加自己的代码以查找点击了哪些触摸目标(如果有)(
    tapType==TAP\u TYPE\u TAP
  • 您只能检测单次、短按、无刷或长按
  • 通过检测
    TAP\u-TYPE\u-TOUCH
    TAP\u-TOUCH\u-CANCEL
    您可以猜出滑动手势,尽管
    TAP\u-TYPE\u-TOUCH\u-CANCEL
    不提供退出坐标

要获得更多控制权,您唯一的赌注是添加一个
系统警报层,并根据您可以从
onVisibilityChanged
onAmbientModeChanged
收集的信息将其打开/关闭。…

不鼓励使用链接回答。请从参考链接中引用答案的重要部分,因为如果链接页面更改,答案可能会无效。是的,这是正确的。请参考官方文件pls@Vyacheslav,在发布时(2年前)这是一个正确的答案,现在这是一个过时的答案。我想你必须改变它。