【发布时间】:2011-07-08 00:02:42
【问题描述】:
我正在尝试构建一个应用程序,用于从我的手机上读取加速度计的值,该应用程序仅支持 Android 2.1。
如何使用兼容 2.1 的代码从加速度计中读取数据?
【问题讨论】:
-
获取安卓加速度计读数的基本教程quicktips.in/get-accelerometer-readings-android
标签: android accelerometer
我正在尝试构建一个应用程序,用于从我的手机上读取加速度计的值,该应用程序仅支持 Android 2.1。
如何使用兼容 2.1 的代码从加速度计中读取数据?
【问题讨论】:
标签: android accelerometer
这在几段中不容易解释。您应该尝试阅读:
这些展示了如何访问传感器的框架:
public class SensorActivity extends Activity implements SensorEventListener {
private final SensorManager mSensorManager;
private final Sensor mAccelerometer;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
}
}
在onSensorChanged 回调中,您可以通过SensorEvent 查询传感器的值。
【讨论】:
从这里开始:
public class yourActivity extends Activity implements SensorEventListener{
private SensorManager sensorManager;
double ax,ay,az; // these are the acceleration in x,y and z axis
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
ax=event.values[0];
ay=event.values[1];
az=event.values[2];
}
}
}
【讨论】: