如何使用 Android 加速度计?
Posted
技术标签:
【中文标题】如何使用 Android 加速度计?【英文标题】:How do I use the Android Accelerometer? 【发布时间】:2011-07-08 00:02:42 【问题描述】:我正在尝试构建一个应用程序,用于从我的手机上读取加速度计的值,该应用程序仅支持 android 2.1。
如何使用兼容 2.1 的代码从加速度计中读取数据?
【问题讨论】:
一个球类项目使用加速度计codeproject.com/Articles/188957/Simple-Android-Ball-Game 获取安卓加速度计读数的基本教程quicktips.in/get-accelerometer-readings-android 看看onetouchcode.com/2016/08/07/android-accelerometer-example 【参考方案1】:这在几段中不容易解释。您应该尝试阅读:
Sensor OverviewSensorManager
描述
这些展示了如何访问传感器的框架:
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】:加速度计应用的一个很好的例子。
http://www.techrepublic.com/blog/app-builder/a-quick-tutorial-on-coding-androids-accelerometer/472
【讨论】:
以上是关于如何使用 Android 加速度计?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Android 中的加速度计测量手机在 XY 平面上的倾斜度