说起摇一摇大家可能就会想到微信的摇一摇功能。后来很多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;//声明一个震动器对象@Overrideprotected MvcBaseModel getModelImp() {return null;}@Overrideprotected int getContentLayoutId() {return R.layout.activity_main;}@Overrideprotected void initWidget() {tv_sensor = findViewById(R.id.tv_sensor);//从系统服务中获取传感管理器对象mSensorMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE);//从系统服务中获取振动器对象mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);}@Overrideprotected void onPause() {super.onPause();mSensorMgr.unregisterListener(this);}@Overrideprotected void onResume() {super.onResume();mSensorMgr.registerListener(this,mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);}@Overridepublic 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);}}}//当传感器精度改变时回调该方法,一般无需处理@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}
}

在实际使用中,我发现系统会出现摇一摇后多次进行回调问题。这里我们可以在一次响应后加锁不再响应。三秒后继续响应。这样可以达到只执行一次相关操作的目的。

Android中摇一摇的实现相关推荐

  1. 【Android App】物联网中查看手机支持的传感器及实现摇一摇功能-加速度传感器(附源码和演示 超详细)

    需要源码请点赞关注收藏后评论区留言~~~ 一.传感器的种类 传感器Sensor是一系列感应器的总称,是Android设备用来感知周围环境和运动信息的工具. 因为具体的感应信息依赖于相关硬件,所以虽然A ...

  2. [Android]开发摇一摇分歧表决器过程

    心血来潮,走进Android,准备开发一个摇一摇分歧表决器(PS:这个想法源自去年看的一个都市剧<约会专家>中主人公杭杭开发的分歧表决器APP). 简述:摇一摇分歧表决器是一款Androi ...

  3. android 摇一摇监听,Android摇一摇功能实现(摇一摇监听)

    近期项目中要求增加摇一摇功能,搜了相关帖子,自己整理一套代码,发个博客保留一份. 解析:Android中摇一摇主要通过[SensorManager]实现,想了解可以查一下. 上期的不够完善 更新了一下 ...

  4. Android手机摇一摇的实现SensorEventListener

    Android手机摇一摇的实现SensorEventListener 看实例 package com.example.shakeactivity;import android.content.Cont ...

  5. 玩转Android之加速度传感器的使用,模仿微信摇一摇

    Android系统带的传感器有很多种,最常见的莫过于微信的摇一摇了,那么今天我们就来看看Anroid中传感器的使用,做一个类似于微信摇一摇的效果. OK ,废话不多说,我们就先来看看效果图吧: 当我摇 ...

  6. android传感器实现摇一摇功能

    现在的不少应用都用到了摇动手机改变内容的功能,比如微信中的"摇一摇"功能.前两天要实现这个功能,稍微看了一下关于传感器Sensor的内容. 传感器有几种类型: 方向传感器: Sen ...

  7. Android 摇一摇(二)

    最近开发中摇一摇被应用的很广泛,本次是总结摇一摇开发过程中遇到的一些适配的问题,比如有些机型灵敏度比较高就比较容易触发,而有些机型则比较难触发,适配起来比较麻烦,现在给大家介绍一个比较好用的方法: 摇 ...

  8. Android开发之摇一摇

    Android开发之摇一摇 一.效果图 二.布局文件(activity_main) 三.布局文件(activity_yy) 四.java文件(MainActivity) 五.在AndroidManif ...

  9. 夜神安卓(android)模拟器 摇一摇

    夜神安卓(android)模拟器 摇一摇 以微信摇一摇为例: 第一步:进入微信摇一摇,摇一摇快捷键是Ctrl+8. 第二步:点击模拟器右侧工具栏中操作助手(脚本录制)的功能. 1.打开操作助手后按F1 ...

  10. android摇一摇功能实现

    android摇一摇功能是通过手机中的加速度传感器实现的.当加速度大于某一值时,我们认为手机发生摇动,进而进行更多的处理. 功能实现主要有以下几个步骤: 1.添加权限 <!--重力加速度传感器权 ...

最新文章

  1. GridView隐藏列取值解决方案
  2. word List37
  3. linux 下搭建postfix服务器
  4. FFMPEG类库打开流媒体的方法(需要传参数的时候)
  5. java 通过id获取html代码_分享代码技巧:解决 $.(“#id“).val() 获取不到空格之后的值
  6. 计算机应用基础253页答案,计算机应用基础作业一(答案)
  7. Neat Download Manager-ndm下载器:短小精悍的mac下载工具
  8. dos格式化linux,linux mformat命令对MS-DOS文件系统的磁盘进行格式化
  9. QXDM 存储log的方法
  10. 微信小程序获取后端数据
  11. winpe装双系统linux_自制WINPE+MAC安装U盘及双系统存储U盘(增加多系统安装)
  12. R语言(4) plot函数介绍
  13. phpwind database.php,phpwind中的数据库操作类
  14. 看了鲁迅的平面设计,很多设计师表示可能要转行了
  15. STM32驱动_cc2420
  16. 小福利,用python打造自己的图书管理系统
  17. anaconda中spyder无法安装5.3.3的解决方案solving environment failed
  18. 光纤故障定位器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  19. 五大领域总目标指南_五大领域总目标和各年龄段目标 -
  20. 可视化学习:社团划分算法——标签传播算法LPA及优化

热门文章

  1. 系统架构设计师考试题库笔记重点3:嵌入式系统设计
  2. Gartner发布《2021年RPA魔力象限》,两家中国企业首次入选,开创历史!
  3. android中slider控件,VideoRangeSlider视频裁剪控件
  4. gulp打包报错 “Error: Unhandled ‘error‘ event at new JS_Parse_Error”
  5. Excel使用技巧随笔
  6. 现场总线PROFIBUS-DP在风力发电系统中的应用(内附详细说明)
  7. phpmyadmin 安装下载使用教程
  8. 使用opengl和c++实现迷宫地图的路径搜索和显示(基于DFS)
  9. 全国哀悼日网站都成黑白色实现
  10. python入门之函数结构第二关_Python入门二:函数