Android实现摇一摇简单功能
- 作者: 疯子84045784
- 来源: 51数据库
- 2021-06-19
说起摇一摇大家可能就会想到微信的摇一摇功能。后来很多app也跟着上了摇一摇的相关功能。这里我们就介绍一下摇一摇怎么做。
步骤1:声明一个sensormanager对象
步骤2:重写activity的onresume方法,在该方法中注册传感器监听事件,并指定待监听的传感器类型。
步骤3:重写activity的onpause方法,在该方法中注销传感器事件
步骤4:编写一个传感器事件监听器,该监听器继承自sensoreventlistener,同时需实现onsensorchanged和onaccuracychanged两人方法。其中,前一个方法在感应信息变化时触发,业务逻辑都在这里处理;后一个方法在经度改变时触发,一般无需处理。
代码示例
添加权限
<uses-permission android:name="android.permission.vibrate"/>
mainactivity.java
public class mainactivity extends baseactivity implements sensoreventlistener {
private textview tv_sensor;
private sensormanager msensormgr;//声明一个传感管理器对象
private vibrator mvibrator;//声明一个震动器对象
@override
protected mvcbasemodel getmodelimp() {
return null;
}
@override
protected int getcontentlayoutid() {
return r.layout.activity_main;
}
@override
protected void initwidget() {
tv_sensor = findviewbyid(r.id.tv_sensor);
//从系统服务中获取传感管理器对象
msensormgr = (sensormanager) getsystemservice(context.sensor_service);
//从系统服务中获取振动器对象
mvibrator = (vibrator) getsystemservice(context.vibrator_service);
}
@override
protected void onpause() {
super.onpause();
msensormgr.unregisterlistener(this);
}
@override
protected void onresume() {
super.onresume();
msensormgr.registerlistener(this
,msensormgr.getdefaultsensor(sensor.type_accelerometer)
,sensormanager.sensor_delay_normal);
}
@override
public void onsensorchanged(sensorevent event) {
if (event.sensor.gettype() == sensor.type_accelerometer){//加速度变更事件
//value[0]:x轴,value[1]:y轴,values[2]:z轴
float[] values = event.values;
if ((math.abs(values[0])>15) || math.abs(values[1])>15 || math.abs(values[2])>15){
tv_sensor.settext("恭喜您摇一摇了"+system.currenttimemillis());
//系统检测摇一摇事件后,震动手机提示用户
mvibrator.vibrate(500);
}
}
}
//当传感器精度改变时回调该方法,一般无需处理
@override
public void onaccuracychanged(sensor sensor, int accuracy) {
}
}
在实际使用中,我发现系统会出现摇一摇后多次进行回调问题。这里我们可以在一次响应后加锁不再响应。三秒后继续响应。这样可以达到只执行一次相关操作的目的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
热点文章
android中Bitmap用法(显示,保存,缩放,旋转)实例分析
12
android 仿微信聊天气泡效果实现思路
1
Android的尺度,drawable-xxxxxxx
2
Codeforces Round #656 (Div. 3) (C、D题)
1
Android之handler异步消息处理机制解析
6
GridView中图片显示出现上下间距过大,左右图片显示类似瀑布流的问题
0
AsyncTask的简单使用
5
两个简单Fragment之间的通信(三种方式)
18
uboot修改设置boot参数命令
41
android中实现从相册中一次性获取多张图片与拍照,并将选中的图片显示出来
2
