我收集了有关此事的大量示例和教程,但是一旦我实现了自己的版本,甚至直接复制代码,我就无法在日志中显示任何值。
我认为我遗漏了一个重要的部分,但我似乎无法弄清楚。
public class Accelerometer extends Activity {
SensorManager sensorManager;
Sensor accelerometer;
private SensorEventListener sensorEventListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
update(x, y, z);
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
public void update(float x, float y, float z) {
Log.v("semajhan", "x: " + x + " y: " + y + " z: " + z);
}
protected void onResume() {
super.onResume();
sensorManager.registerListener(sensorEventListener, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(sensorEventListener);
}
}
我的问题似乎是我不知道如何真正访问加速度计。
一旦我能够获得这些值,我就可以继续前进,但我需要首先了解这一点。
最佳答案
你的代码对我来说似乎没问题。它类似于我也用来获取传感器数据的工作示例。一件事可能有问题。您确定您的设备上有该类型的传感器吗?
要检查使用
public List<Sensor> getSensorList (int type)
SensorManager
的功能。如果您在函数调用中使用 type = Sensor.TYPE_ALL
并浏览所有列表元素,则可以获得设备上可用传感器的完整列表。
更新:
尝试了你的代码。它功能齐全。问题是您的 Nexus 上禁用了痕迹显示。要启用跟踪,请转至“设置”->“应用程序”->“开发”并选中“USB 调试”选项。没有它,你就不会得到任何痕迹。
关于java - 安卓加速计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4503753/