Android下的重力感应应用
android手机支持重力感应,针对Android的通过如下接口支持:
android.hardware.SensorEventListener
该接口有两个方法需要实现:
@Override
public void onSensorChanged(SensorEvent e) {
view.handleMoving(e.values[SensorManager.DATA_X]);
}
@Override
public void onAccuracyChanged(Sensor s, int accuracy) {
....
}
实现该接口比较容易,可以将对应的Activity实现该接口,在onSensorChanged方法中添加需要感应重力变化的处理代码即可。
还有一点,为了使重力感应生效需要增加如下处理逻辑
1:在Activity创建后,使重力感应生效
2:在Activity终止时,使重力感应失效
参考类似代码如下:
private SensorManager mSensorManager;
private Sensor mSensor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
enableSensor();
}
@Override
public void finish() {
// 注销重力感应监听
disableSensor();
super.finish();
}
private void enableSensor(){
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
// 注册重力感应监听
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_GAME);
}
public void disableSensor(){
mSensorManager.unregisterListener(this, mSensor);
}
获取系统重力感应的方法:
public static void getSystemGravity(Context context) {try {int systemGravity = Settings.System.getInt(context.getContentResolver(),Settings.System.ACCELEROMETER_ROTATION);if (0 == systemGravity) {Constant.g_isGravity = false;} else {Constant.g_isGravity = true;}} catch (SettingNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}设置系统是否开启重力感应:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
更多相关文章
- android 中调用接口发送短信
- 【Android】Web开发之通过标准Java接口处理Http请求
- AIDL(android 接口描述语言)
- Android中Parcelable接口用法
- Android对接webService接口
- 【面试】Android Retrofit+Rxjava 如何实现同时请求多个接口数据
- Android 驱动之旅 第四章:在Android 系统中编写JNI 方法在应用程
- 一种绕过Android P对非SDK接口限制的简单方法
- Android笔记:Android后台接口教程一(从零开始学习Android后台接口)A