android 实现手机摇一摇功能
2014-08-09 00:26
405 查看
实现接口SensorEventListener
在Activity里使用
public abstract class ShakeListenerUtils implements SensorEventListener { public Context context = null; private String TAG = "ShakeListenerUtils"; public ShakeListenerUtils(Context context) { super(); this.context = context; } @Override public void onSensorChanged(SensorEvent event) { int sensorType = event.sensor.getType(); //values[0]:X轴,values[1]:Y轴,values[2]:Z轴 float[] values = event.values; if (sensorType == Sensor.TYPE_ACCELEROMETER) { /*正常情况下,任意轴数值最大就在9.8~10之间,只有在突然摇动手机 的时候,瞬时加速度才会突然增大或减少。 监听任一轴的加速度大于17即可 */ if ((Math.abs(values[0]) > 17 || Math.abs(values[1]) > 17 || Math .abs(values[2]) > 17)) { Log.d(TAG, "shake"); //根据上一次摇一摇的时间,防止连续摇手机,不停切换界面 KVManager kvManager = new KVManager(context); Calendar calendar = Calendar.getInstance(); long tmp = calendar.getTimeInMillis(); long last = kvManager.getLong("shake_time", 0); kvManager.setLong("shake_time", tmp); if (tmp - last >= 1000) onShake(); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { //当传感器精度改变时回调该方法,Do nothing. } public abstract void onShake(); }
在Activity里使用
private ShakeListenerUtils shakeListenerUtils = null; private SensorManager mSensorManager;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); shakeListenerUtils = new ShakeListenerUtils(this) { @Override public void onShake() { Toast.makeText(MainActivity.this, "onShake", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Const.BROADCAST_ENCODE); sendBroadcast(intent); } }; } @Override protected void onResume() { super.onResume(); //获取传感器管理服务 mSensorManager = (SensorManager) this .getSystemService(Service.SENSOR_SERVICE); //加速度传感器 mSensorManager.registerListener(shakeListenerUtils, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), //还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等, //根据不同应用,需要的反应速率不同,具体根据实际情况设定 SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onPause() { super.onPause(); mSensorManager.unregisterListener(shakeListenerUtils); }
相关文章推荐
- Android手机摇一摇功能的简单实现
- Android 手机震动功能实现
- android开发利用传感器实现微信的摇一摇功能(zz)
- 用HTML5实现手机摇一摇的功能
- Android加速度传感器实现“摇一摇”,带手机振动 .
- Android 手机震动功能实现
- Android 手机震动功能实现
- html5手机摇一摇功能的实现
- .Android 手机震动功能实现
- 举例说明BroadcastReceiver的使用方法----实现android手机开机之后显示画面的功能
- Android 摇一摇功能的实现
- Android 手机震动功能实现
- 用HTML5实现手机摇一摇的功能
- 用HTML5实现手机摇一摇的功能
- 用HTML5实现手机摇一摇的功能的教程
- 怎么用程序实现调用Android手机的拍照功能
- 四十七、实现调用Android手机的拍照功能
- 用HTML5实现手机摇一摇的功能
- (android实战)实现摇一摇功能
- android 手机震动功能实现