博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 实现摇一摇功能
阅读量:4218 次
发布时间:2019-05-26

本文共 1762 字,大约阅读时间需要 5 分钟。

  微信的摇一摇,充分施展了通过硬件来控制软件从而实现相应的功能,在应用开发中也可以借助摇一摇等硬件的监听功能来实现对于软件的控制来实现一些功能从而使传统的手指触动,使应用功能变得多样化,Talk is cheap,show the code.

首先获得传感器管理器,通过getSystemService()来获得。

SensorManager sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
在 
onResume()
 的注释中,建议是在onResume()中打开独占设备(比如相机或者是传感器之类的东西),与onResume()对应的是onPause(),关闭相机的操作也应该在此方法中被调用,关于这方面的问题将在下一篇的博客中进行详细叙述。

@Override    protected void onResume() {        // TODO Auto-generated method stub        super.onResume();
/*为传感器管理器注册监听器,以指定的精度将监听器注册到传感器上,通过getDefaultSensor()来获得指定的传感器,最后一个参数是传感器的精度
*/        if(sensorManager != null){            sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER ), SensorManager.SENSOR_DELAY_NORMAL);        }    }    @Override    protected void onPause() {        // TODO Auto-generated method stub        super.onPause();
//取消传感器管理器注册的传感器监听器        if(sensorManager != null){            sensorManager.unregisterListener(sensorEventListener);        }    }
创建一个传感器监听器
private SensorEventListener sensorEventListener = new SensorEventListener() {        //通过传感器监听数据的变化        @Override        public void onSensorChanged(SensorEvent event) {    	// TODO Auto-generated method stub
//获取在x,y,z轴上的数据变化    	float [] values = event.values;    	float x = values [0];    	float y = values [1];    	float z = values [2];    	int medumValue = 19;
//通过medumValue来作为一个参考来决定摇晃的力度
if((Math.abs(x)+ Math.abs(y)+Math.abs(z))> 2*medumValue){    	       	    Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();    	}        }        //精度变化        @Override        public void onAccuracyChanged(Sensor sensor, int accuracy) {    	// TODO Auto-generated method stub    	        }    };
可以利用摇一摇的功能实现一些无法获取焦点时候来实现的截屏等其他应用的效果。

 

转载地址:http://dbtmi.baihongyu.com/

你可能感兴趣的文章
UPDATE、DELETE 语句中的子查询
查看>>
您绝对想不到的 SQL 子查询错误
查看>>
外连接 ON 条件的三个作用及与 WHERE 的区别
查看>>
select into 和 insert into select 两种表复制语句
查看>>
XML和JSON
查看>>
linux 常用命令
查看>>
hibernate详解
查看>>
Java中堆与栈的区别
查看>>
深入探讨Iterator模式
查看>>
JAVA写的多线程下载程序,并具有断点续传功能
查看>>
Java 中 Vector、ArrayList、List 使用深入剖析
查看>>
深入理解java多态性
查看>>
Java新手进阶:细说引用类型
查看>>
Java中增强型for循环的样例和解释
查看>>
Java性能优化[0]:概述
查看>>
java Serializable和Externalizable序列化反序列化详解
查看>>
[java]垃圾收集器和堆
查看>>
JAVA 处理时间
查看>>
java(Web)中相对路径,绝对路径问题总结
查看>>
Java跨平台的原理
查看>>