我正在通过手持设备向可穿戴设备发送通知,然后在没有文字的卡上显示背景图像。我想为圆形和方形可穿戴设备优化图像,而无需创建独立的应用程序和可穿戴活动。
我如何向可穿戴设备发送消息,询问它的尺寸是多少以及是圆形还是方形?我知道如何发送消息,我只是在寻找api来查看它是圆形还是方形。
从以下示例中,您可以看到如何在活动中检测到这一点,但我想在后台服务中检测到这一点,因为我不想创建独立的可穿戴应用程序。 https://github.com/mauimauer/AndroidWearable-Samples/blob/8287982332b82cada7bf68a6c5aa88df1bbbcbbe/GridViewPager/Wearable/src/main/java/com/example/android/wearable/gridviewpager/MainActivity.java
我的另一个问题显示了如何检测是否有可穿戴配对,但它只返回节点名称和节点ID,没有关于实际可穿戴设备的其他有用信息。 How to detect if android device is paired with android wear watch
答案 0 :(得分:3)
确定round与square的官方方法是使用WatchInsets类和isRound()方法。 https://developer.android.com/reference/android/view/WindowInsets.html#isRound()
Android SDK Manager for API 20中包含一个名为GridViewPager的示例,其中显示了如何使用isRound()方法。
对于你的其余问题......你需要实现一个在手表上运行的应用程序,它会为你执行此查询。然后,您可以向手表发送消息,执行查询,然后将消息发送回手机,无论您想要做什么。
如果您查看DataLayer示例(也与GridViewPager位于同一位置),它会显示如何检测可穿戴设备与手机的连接状态。
答案 1 :(得分:2)
非官方的方式 - 但对我来说这更容易。 https://github.com/tajchert/ShapeWear
只需复制ShapeWear.java类,订阅屏幕形状检测事件setOnShapeChangeListener()
或调用方法ShapeWear.isRound()
(可以抛出错误,形状尚未确定)或ShapeWear. getShape()
- 哪个可以导致ShapeWear.SHAPE_UNSURE
处于同样的情况。
答案 2 :(得分:1)
在扩展CanvasWatchFaceService.Engine
的Engine类中覆盖此方法 @Override
public void onApplyWindowInsets(WindowInsets insets) {
super.onApplyWindowInsets(insets);
Log.d(TAG, "onApplyWindowInsets");
if (insets.isRound()) {
Log.d(TAG, "Round");
} else {
Log.d(TAG, "Square");
}
}