如何使用安卓加速度计?

41

我正在尝试开发一个应用程序,用于读取我的手机上的加速度计数值,它仅支持Android 2.1。

我该如何使用兼容2.1版本的代码来读取加速度计数值?


1
一个球类游戏项目使用加速度计 http://www.codeproject.com/Articles/188957/Simple-Android-Ball-Game - Ravi
1
Android加速度计读数的基本教程 http://www.quicktips.in/get-accelerometer-readings-android/ - Deepak Swami
1
请查看http://onetouchcode.com/2016/08/07/android-accelerometer-example/。 - Shailendra
3个回答

53

从这里开始:

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

34

这不是几段文字就能轻松解释清楚的。你应该尝试阅读以下内容:

它们展示了如何访问传感器的框架:

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


1
AndroGames上的服务器似乎不再存在了,而AndDev链接来自2008年=非常古老。不过其他的建议还是不错的。 - Simon Forsberg
啊,我已经很久没有发布那个答案了。感谢你提醒我。 - slhck
我建议删除任何对AndDev网站的引用 - 它正在发送被Norton拦截的高严重性网络攻击。感谢您的理解。最好的问候, - Alexander Bell
1
@AlexBell 我无法验证你的说法,但无论如何,这是一篇来自2008年的帖子,所以我已经删除了那些链接。 - slhck
感谢您的迅速回复。最好的问候, - Alexander Bell

7

以下是有关编程的内容,从英语翻译成中文。仅返回已翻译的文本:工作链接:https://www.techrepublic.com/article/a-quick-tutorial-on-coding-androids-accelerometer/ [编辑队列已满,否则我会提交它] - belkarx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接