缺少代码示例,我们深表歉意,但是到目前为止,我所尝试的一切都是一团糟。
我尝试过在线搜索信息,也许我没有搜索正确的术语。
我可以使用Android Studio中的示例创建表盘,并且创建了一个可从传感器检索数据的应用程序。我不能做的就是将两者结合起来。
我要尝试做的是创建一个Android Wear表盘,该表盘可以显示从表上的传感器收集的各种数据。
例如,加速度计始终处于打开状态以启用手腕手势。
任何人都可以向我指出如何解决此问题的正确方向,而无需发布指向android API的链接,因为我已经穷尽了这一点。
问候,
埃米特
好的,所以经过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的示例应用程序创建的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句