检测isRound或isSquare for android wear

时间:2014-08-11 22:07:43

标签: android wear-os

我正在通过手持设备向可穿戴设备发送通知,然后在没有文字的卡上显示背景图像。我想为圆形和方形可穿戴设备优化图像,而无需创建独立的应用程序和可穿戴活动。

我如何向可穿戴设备发送消息,询问它的尺寸是多少以及是圆形还是方形?我知道如何发送消息,我只是在寻找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

3 个答案:

答案 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");

        }
    }