我尝试使用以下指南阅读 Android Wear(三星 Galaxy Watch 4)的步行步骤:https://developer.android.com/training/wearables/health-services/active。
这是我的代码的一部分:
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
lifecycleScope.launch {
val capabilities = measureClient.capabilities.await()
supportsStepCount =
DataType.WALKING_STEPS in capabilities.supportedDataTypesMeasure
}
Run Code Online (Sandbox Code Playgroud)
但我收到这个异常:
Connection to service is not available for package 'com.google.android.wearable.healthservices' and action 'com.google.android.wearable.healthservices.MeasureClient'.
2021-09-07 11:04:18.112 4523-6821/com.daftar.galaxyface E/ServiceConnection: Connection disconnected and maximum number of retries reached.
java.util.concurrent.CancellationException: Service not available
at androidx.health.services.client.impl.ipc.internal.ServiceConnection.connect(ServiceConnection.java:145)
at androidx.health.services.client.impl.ipc.internal.ServiceConnection.enqueue(ServiceConnection.java:203)
at androidx.health.services.client.impl.ipc.internal.ConnectionManager.handleMessage(ConnectionManager.java:123)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:246)
at android.os.HandlerThread.run(HandlerThread.java:67)
Run Code Online (Sandbox Code Playgroud)
注意:上面的指南中有一个注释是获取权限,但没有提到哪些权限。我尝试了 ACTIVITY_RECOGNITION 和 BODY_SENSORS 和 ACCESS_FINE_LOCATION,但没有成功。
watch-face-api watchface android-wear-2.0 wearables samsung-galaxy-watch
我正在按照本教程为 Android 创建自定义表盘。我已经实现了广播接收器来检测时间变化,如下所示:
在我的活动中,我有静态块来过滤以下意图:
static {
intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
intentFilter.addAction(Intent.ACTION_TIME_TICK);
intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
}
Run Code Online (Sandbox Code Playgroud)
我的接收者类别:
public class MyReciever extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
c = Calendar.getInstance();
Log.d("myapp", "time changed");
hrs = c.get(Calendar.HOUR_OF_DAY);
min = c.get(Calendar.MINUTE);
sec = c.get(Calendar.SECOND);
txt_hrs.setText(String.valueOf(hrs));
txt_mins.setText(String.valueOf(min));
txt_sec.setText(String.valueOf(sec));
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在 oncreate() 中注册了接收器:
MyReciever myReciever = new MyReciever();
registerReceiver(myReciever,intentFilter);
Run Code Online (Sandbox Code Playgroud)
上面的代码在几小时和几分钟内工作正常,但在几秒钟内不起作用。
问题Intent.ACTION_TIME_TICK
是它每分钟广播一次,而不是每秒一次。
我需要检测表盘上时钟每秒的时间变化。有人有“检测每秒时间变化”的解决方案吗?
android android-intent android-broadcast watch-face-api wear-os
这就是我做的
我读了这个安卓Android Wear设备
- 在掌上电脑上安装Google Play上的Android Wear应用.
- 按照应用程序的说明将掌上电脑与可穿戴设备配对.这允许您测试同步的手持通知,如果您正在构建它们.
- 让Android Wear应用在手机上保持打开状态.
- 通过USB将可穿戴设备连接到您的计算机,因此您可以在开发时直接将应用程序安装到您的计算机上.可穿戴设备和Android Wear应用程序上都会显示一条消息,提示您允许调试.注意:如果无法通过USB将可穿戴设备连接到计算机,请按照"通过蓝牙进行调试"中的说明进行操作.
- 在Android Wear应用中,选中始终允许从此计算机,然后点击确定.Android Studio上的Android工具窗口显示来自可穿戴设备的系统日志.运行adb devices命令时也应列出可穿戴设备.
在上面的第4点.如何通过USB将我的智能手表连接到我的笔记本电脑?!?!?
我有最新的Android Studio Nexus 5和Moto 360.
我在Play商店有一个免费应用程序:Circus Watch Faces,我正在尝试在配置活动中添加一个表面选择器; 我跟着Android Dev Docs关于它并没有问题,但我怎样才能从一个表盘切换到另一个表盘?
我对Android开发完全陌生,所以我试图从样本中解释并构建新的东西.目前我只用一个按钮进行配置活动,当我点击它时,我想改变当前的表盘!
我的代码在GitHub上(尚未更新配置活动),如果可能有所帮助.
我正在寻找从正在运行的模拟器卸载自定义表盘而不诉诸于擦除模拟器并重新启动.我可以将哪些ADB命令发送到模拟器来执行此任务?
我有一个基于最新API(扩展CanvasWatchFaceService.Engine
)的表盘.现在我想让触摸事件在表盘上有一些活动区域可以触摸打开设置等.CanvasWatchFaceService.Engine
继承自WallpaperService.Engine
,它声明了两个重要的方法:setTouchEventsEnabled(boolean)
和onTouchEvent(MotionEvent)
.
但即使我setTouchEventsEnabled(true)
在onCreate()
方法中调用,Engine
我也从未接到过onTouchEvent(MotionEvent)
在我的引擎实现中的调用.
我做错了什么或者根本不可能?我知道一些提供活动区域的表盘,但我不确定它们是基于最新的API还是基于弃用的API构建(使用布局和GUI元素).
正如这里所解释的那样(https://developer.android.com/training/wearables/watch-faces/service.html)绘制表面我必须使用OnDraw方法,是吗?没有其他选择?
你在开玩笑吗?没有来自xml管理的布局?没有dpi管理?没有屏幕格式管理?等等?
真?
请告诉我,我错了!
PS此页面(http://www.binpress.com/tutorial/how-to-create-a-custom-android-wear-watch-face/120)使用正常活动制作表盘,是否正确?