【问题标题】:How do I use the Android Accelerometer?如何使用 Android 加速度计?
【发布时间】:2011-07-08 00:02:42
【问题描述】:

我正在尝试构建一个应用程序,用于从我的手机上读取加速度计的值,该应用程序仅支持 Android 2.1。

如何使用兼容 2.1 的代码从加速度计中读取数据?

【问题讨论】:

标签: android accelerometer


【解决方案1】:

这在几段中不容易解释。您应该尝试阅读:

这些展示了如何访问传感器的框架:

 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 查询传感器的值。

【讨论】:

  • AndroGames 上的服务器似乎已经不存在了,AndDev 链接是 2008 年的 = 太旧了。不过其他建议都不错。
  • 啊,我已经有一段时间没有发布这个答案了。感谢您提请我注意。
  • 我建议删除对 AndDev 网站的任何引用 - 它正在发送被诺顿拦截的高严重性网络攻击。感谢您的理解。最好的问候,
  • @AlexBell 我无法验证您的声明,但无论如何,这是 2008 年的帖子,所以我删除了这些链接。
  • 感谢您的及时回复。最好的问候,
【解决方案2】:

从这里开始:

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

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    相关资源
    最近更新 更多