Android 手机摇晃监听
来源:互联网 发布:象过河软件视频 编辑:程序博客网 时间:2024/05/08 00:15
转至:http://gundumw100.iteye.com/blog/1472889
http://blog.csdn.net/xfks555/article/details/6703464
- import android.content.Context;
- import android.hardware.Sensor;
- import android.hardware.SensorEvent;
- import android.hardware.SensorEventListener;
- import android.hardware.SensorManager;
- /**
- *
- * 一个检测手机摇晃的监听器
- * @author fuzhengchao
- *
- */
- public class ShakeListener implements SensorEventListener {
- //速度阈值,当摇晃速度达到这值后产生作用
- private static final int SPEED_SHRESHOLD = 4000;
- //两次检测的时间间隔
- private static final int UPTATE_INTERVAL_TIME = 70;
- //传感器管理器
- private SensorManager sensorManager;
- //传感器
- private Sensor sensor;
- //重力感应监听器
- private OnShakeListener onShakeListener;
- //上下文
- private Context context;
- //手机上一个位置时重力感应坐标
- private float lastX;
- private float lastY;
- private float lastZ;
- //上次检测时间
- private long lastUpdateTime;
- //构造器
- public ShakeListener(Context c) {
- //获得监听对象
- context = c;
- start();
- }
- //开始
- public void start() {
- //获得传感器管理器
- sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
- if(sensorManager != null) {
- //获得重力传感器
- sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
- }
- //注册
- if(sensor != null) {
- sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
- }
- }
- //停止检测
- public void stop() {
- sensorManager.unregisterListener(this);
- }
- //摇晃监听接口
- public interface OnShakeListener {
- public void onShake();
- }
- //设置重力感应监听器
- public void setOnShakeListener(OnShakeListener listener) {
- onShakeListener = listener;
- }
- //重力感应器感应获得变化数据
- public void onSensorChanged(SensorEvent event) {
- //现在检测时间
- long currentUpdateTime = System.currentTimeMillis();
- //两次检测的时间间隔
- long timeInterval = currentUpdateTime - lastUpdateTime;
- //判断是否达到了检测时间间隔
- if(timeInterval < UPTATE_INTERVAL_TIME)
- return;
- //现在的时间变成last时间
- lastUpdateTime = currentUpdateTime;
- //获得x,y,z坐标
- float x = event.values[0];
- float y = event.values[1];
- float z = event.values[2];
- //获得x,y,z的变化值
- float deltaX = x - lastX;
- float deltaY = y - lastY;
- float deltaZ = z - lastZ;
- //将现在的坐标变成last坐标
- lastX = x;
- lastY = y;
- lastZ = z;
- double speed = Math.sqrt(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)/timeInterval * 10000;
- //达到速度阀值,发出提示
- if(speed >= SPEED_SHRESHOLD)
- onShakeListener.onShake();
- }
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- }
- }
用法:
- ShakeListener shakeListener = new ShakeListener(this);//创建一个对象
- shakeListener.setOnShakeListener(new OnShakeListener(){//调用setOnShakeListener方法进行监听
- public void onShake() {
- //对手机摇晃后的处理(如换歌曲,换图片,震动……)
- //onVibrator();
- }
- });
//震动
- private void onVibrator() {
- Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
- if (vibrator == null) {
- Vibrator localVibrator = (Vibrator) context.getApplicationContext()
- .getSystemService("vibrator");
- vibrator = localVibrator;
- }
- vibrator.vibrate(100L);
- }
摇一摇精简代码实现
http://blog.sina.com.cn/s/blog_66cfbaa5010120w8.html
Android中类似于奇虎360手机卫士中摇一摇效果实现
http://blog.csdn.net/nono_love_lilith/article/details/7554341
0 0
- Android 手机摇晃监听
- Android实现摇晃手机的监听
- Android(1) service实现手机摇晃监听
- Android 实现摇晃手机的监听
- Android摇晃监听事件
- 【原创】在Android模拟器上实现监听手机摇晃事件
- Android检测手机摇晃
- android 手机利用重力感应摇晃 换歌曲 “摇晃”实现
- 手机摇晃
- 通过服务监听手机摇晃事件,启动支付宝
- Android 加速度感应器检测手机摇晃
- Android 加速度感应器检测手机摇晃
- android 利用重力感应监测手机摇晃,做出相应反应
- IOS检测摇晃手机
- iOS手机摇晃事件
- android 手机来电监听
- android 手机开机监听
- android监听手机解锁
- bzoj 1495: [NOI2006]网络收费
- TuShare(2):使用TuShare,抓取股票数据并存储到数据库
- 不改变正负数相对顺序,重排数组,使负数在正数之前
- Java NIO系列教程(十) Java NIO DatagramChannel
- Android中Bitmap,byte[],Drawable,InputStream相互转化工具类
- Android 手机摇晃监听
- 大臣的旅费(求树的最远点对,即树的直径)
- 从零开始写Http框架---第四篇
- PAT (Advanced Level) Practise 1053 Path of Equal Weight (30)
- Activiti - 设置会签
- SSH中 整合spring和proxool 连接池
- AngularJS基本功能
- Hadoop关于处理大量小文件的问题和解决方法
- soledede--隐马尔可夫模型(HMM)-信道模型