带有传感器数据的Android Wear Watchface

时间:2015-11-01 17:50:53

标签: wear-os android-sensors watch-face-api

对缺乏代码示例表示歉意,但到目前为止我所尝试的任何内容都是完全混乱的。

我尝试在网上搜索信息,也许我没有搜索正确的字词。

我可以使用Android Studio& amp;中的样本创建表盘。我创建了一个从传感器中检索数据的应用程序。我无法做到的是将两者结合起来。

我要做的是创建一个Android Wear表盘,可以显示从手表上的传感器收集的各种数据。

例如,加速度计始终打开以启用手腕手势。

任何人都可以指出我正确的方向,如何解决这个问题,而不是发布到Android API的链接,因为我已经筋疲力尽了。

问候,

埃米特

1 个答案:

答案 0 :(得分:4)

好的,所以经过3天的游戏和令人沮丧的错误之后,如果有其他人需要解决这个问题,我已经设法解决了这个问题:

首先实现SensorEventListener:

{ "moderator": 469 }
{ "superadmin": 1 }
{ "user": 2238 }
{ "admin": 11 }

接下来,在onVisibilityChanged中,我注册了两个我创建的方法:

private class Engine extends CanvasWatchFaceService.Engine implements SensorEventListener

这两种方法:

 @Override
    public void onVisibilityChanged(boolean visible) {
        super.onVisibilityChanged(visible);

        if (visible) {
            registerReceiver();
            registerAccelerometer();

            mTime.clear(TimeZone.getDefault().getID());
            mTime.setToNow();
        } else {
            unregisterReceiver();
            unregisterAccelerometer();
        }
        updateTimer();
    }

然后,在onSensorChanged中,我在那里听加速度计的变化:

private void registerAccelerometer() {
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        sensorManager.registerListener(this,
                sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL);
    }
private void unregisterAccelerometer() {
        sensorManager.unregisterListener(this);
    }

在调用onDraw()方法之前,将这些变量分配给三个变量:

@Override
    public void onSensorChanged(SensorEvent sensorEvent) {

        ......
        // Calculate here
        }
        sensorX  = (int)linear_acceleration[0];
        sensorY  = (int)linear_acceleration[1];
        sensorZ  = (int)linear_acceleration[2];
    }

理论上,对于所有传感器而言,这应该是相同的,而不仅仅是加速度计。

值得注意的是,我是使用Android Studio的示例应用创建的。