1

为缺乏代码示例而道歉,但到目前为止我尝试过的任何事情都是一团糟。

我试过在线搜索信息,也许我没有搜索正确的术语。

我可以使用 Android Studio 中的示例创建表盘,并且我创建了一个从传感器检索数据的应用程序。我不能做的是将两者结合起来。

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

例如,加速度计始终处于开启状态以启用手腕手势。

谁能指出我如何解决这个问题的正确方向,而无需发布指向android API的链接,因为我已经筋疲力尽了。

问候,

艾美特

4

1 回答 1

4

好的,所以经过 3 天的玩耍和令人沮丧的错误,我已经设法解决它,如果其他人需要解决这个问题:

首先实现 SensorEventListener:

private class Engine extends CanvasWatchFaceService.Engine implements SensorEventListener

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

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

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

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

以及两种方法:

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);
    }

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

@Override
    public void onSensorChanged(SensorEvent sensorEvent) {

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

在调用 onDraw() 方法之前将它们分配给三个变量:

@Override
    public void onDraw(Canvas canvas, Rect bounds) {
        // Get the current Time
        mTime.setToNow();

        // Set the current accelerometer readings.
        accelerometerX.setText("X : " + String.valueOf(sensorX));
        accelerometerY.setText("Y : " + String.valueOf(sensorY));
        accelerometerZ.setText("Z : " + String.valueOf(sensorZ));
        accelerometerRateOfChange.setText("T: " + String.valueOf(totalDisplacement));
    }

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

值得注意的是,我使用 Android Studio 的示例应用程序创建了这个。

于 2015-11-03T16:16:03.330 回答