1)加速度感应器可获取三个浮点类型分别代表

左右移动加速度 X=values[0]

前后移动加速度 Y=values[1]

垂直方向加速度 Z=values[2]

测试时发现,将手机至于水平桌面稳定后X、Y约为0,Z约为9.5(约等于重力加速度)

2)实现加速度感应器代码如下

package com.example.androidtest2;import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.util.FloatMath;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends Activity {private SensorManager mSensorManager=null;private Sensor mSensor=null;/*摇晃检测阈值,决定了对摇晃的敏感程度,越小越敏感。*/private static final double SHAKE_SHRESHOLD = 600;/*检测的时间间隔100ms*/private static final int UPDATE_INTERVAL = 100;/*上次检测的时间*/private long lastTime;/*上次检测时左右、前后、垂直方向加速度*/private float last_X,last_y,last_Z;private TextView textView1=null;private TextView textView2=null;private TextView textView3=null;private TextView textView4=null;private Button button1=null;private Button button2=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView1=(TextView)findViewById(R.id.textView1);textView2=(TextView)findViewById(R.id.textView2);textView3=(TextView)findViewById(R.id.textView3);textView4=(TextView)findViewById(R.id.textView4);/*获取系统服务(SENSOR_SERVICE)返回一个SensorManager对象*/mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);/*通过SensorManager获取相应的(加速度感应器)Sensor类型对象*/mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);/*注册相应的SensorService*/button1=(Button)findViewById(R.id.button1);button1.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0) {mSensorManager.registerListener(mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_NORMAL);}});/* 销毁相应的SensorService* 很关键的部分,注意,说明文档中提到,即使Activity不可见的时候,感应器依然会继续工作* 所以一定要关闭触发器,否则将消耗用户大量电量*/button2=(Button)findViewById(R.id.button2);button2.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {mSensorManager.unregisterListener(mSensorEventListener, mSensor);}});}/*声明一个SensorEventListener对象用于侦听Sensor事件,并重载onSensorChanged方法*/private final SensorEventListener mSensorEventListener=new SensorEventListener() {@Overridepublic void onSensorChanged(SensorEvent event) {if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){float x=event.values[0];float y=event.values[1];float z=event.values[2];/*显示左右、前后、垂直方向加速度*/textView1.setText("左右移动加速度"+String.valueOf(x)+"m/s2");textView2.setText("前后移动加速度"+String.valueOf(y)+"m/s2");textView3.setText("垂直方向加速度"+String.valueOf(z)+"m/s2");/*手机晃动检测*/long currentTime=System.currentTimeMillis();if(lastTime!=0){long diffTime=currentTime-lastTime;if(diffTime>UPDATE_INTERVAL){float diff_X=x-last_X;float diff_Y=y-last_y;float diff_Z=z-last_Z;float diff=FloatMath.sqrt(diff_X*diff_X+diff_Y*diff_Y+diff_Z*diff_Z)/diffTime*10000;if(diff>SHAKE_SHRESHOLD){textView4.setText("手机在晃动");}else{textView4.setText("手机没有晃动");}}}lastTime=currentTime;last_X=x;last_y=y;last_Z=z;}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}};@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

Android 加速度感应器检测手机摇晃相关推荐

  1. win10 Android Studio无法检测手机设备(最后一步ADB找不到设备)

    解决办法: 设备管理器 -> 通用串口总线设置 -> ADB Interface(右键) -> 更新驱动程序 -> 浏览我的计算机以查找驱动程序软件 -> 让我从计算机上 ...

  2. Android加速度传感器实现“摇一摇”,带手机振动

    由于代码有点多,所以就分开写了,注释还算详细,方便学习 Activity package com.lmw.android.test; import android.app.Activity; impo ...

  3. 【Android 笔记 五】 Android Sensor感应器介绍(一)重力感应加速度获取

    FETC项目指导老师提出了新的需求,想要在游戏地图中表现出用户用户当期移动的方向,再用GPS的话显然很不靠谱,所以想到了android强大的感应器... 很多移动设备都内置了感应器,android通过 ...

  4. Android中如何检测重力感应变化:Sensor和SensorManager

    在实际开发中我遇到一个让人很蛋疼的问题,大致是当我点击某一个按钮的时候,强制切换为横屏显示,这个很容易做到,只需在onclick里面调用setRequestedOrientation(Activity ...

  5. Android加速度传感器

    Android加速度传感器 效果图 手机平放桌面的两张截屏,数据一直在刷新 源码 下载地址(Android Studio工程):http://download.csdn.net/detail/q487 ...

  6. Android实现简单的检测手机自由落体关闭屏幕

    实现功能如下:在背景运行app,检测到自由落体状态时,熄灭屏幕,可重复测试. 1. 检测自由落体动作 需要使用到加速度感应器 TYPE_ACCELEROMETER SensorManager mSen ...

  7. android10检测USB接口,Android 10带来黑科技 检测手机USB接口是否有液体或者是否过热...

    谷歌昨天正式发布 Android 10 手机操作系统,同时谷歌全系列三代 Pixel 智能手机均可升级到 Android 10 正式版,而参与 Android beta 测试项目的智能手机厂商也同时为 ...

  8. Unity 手机摇晃检测

    很多手机游戏都会用到对手机摇晃的检测,废话不多说直接上代码. 目前测试力度设为2比较合适. using UnityEngine; using UnityEngine.Events;public cla ...

  9. android获取录音读写权限设置,Android编程检测手机录音权限是否打开的方法

    本文实例讲述了Android编程检测手机录音权限是否打开的方法.分享给大家供大家参考,具体如下: 6.0之前的权限检测只是检测到是否在清单文件中注册 Boolean flag = (PackageMa ...

  10. Android 检测手机IMEI值

    最近做项目的时候需要指定特定手机才能使用app,此时必须要根据每台手机特有的IMEI值进行判断.简单说一下IMEI值,IMEI值就是每台手机唯一拥有的序列号.大部分手机上可以在手机电话拨号界面输入*# ...

最新文章

  1. CentOS7编译安装mysql-5.6.28和编译参数
  2. LockBits in GDI+【转】http://timothyqiu.com/archives/lockbits-in-gdiplus/
  3. Py之wordcloud:python中非常有趣的词云图wordcloud简介、安装、使用方法、案例应用详细攻略
  4. C#扩展方法应用之 try catch finally 封装
  5. Spoken English(015)
  6. 关于引入 js 文件
  7. 在一个工程(包)下面让activity和SensorEventListener监听分离,在不同类中完成
  8. Java课程设计【学生信息管理系统】
  9. 再生核希尔伯特空间:Hilbert Space与RKHS基础
  10. 参考文献的序号怎么对齐_word参考文献怎么对齐
  11. Mybatis缓存详解
  12. jQuery 效果 - 淡入淡出,fadeIn,fadeOut,fadeToggle的使用
  13. html5获取蓝牙设备列表,【报Bug】官方H5+示例中 搜索蓝牙设备,部分机型搜索不到任何蓝牙...
  14. zblog php 点赞,zblog文章下面添加点赞等表情的方法(使用畅言实验室)
  15. 电大计算机C语言1253,1253《C语言程序设计》电大期末精彩试题及其问题详解
  16. intel固态硬盘误删文件该如何进行恢复
  17. VR失重太空舱游乐设备|航空航天VR体验|VR航天航空体验馆
  18. 虚拟人,你们着实有点抢镜了(doge)
  19. Excel快速将多个单元格合并到一个单元格
  20. linux mc服务器及forge,教程/架设Forge服务器

热门文章

  1. html5拆红包源码,最新1月拆红包源码强制分享朋友圈分享群防封裂变红包游戏
  2. 英语六级口语 计算机,英语六级口语
  3. itest(爱测试) 4.1.1 发布,开源BUG 跟踪管理 敏捷测试管理软件
  4. html弹性布局什么意思,弹性布局display:flex是什么意思
  5. 1.松翰单片机:IO口配置
  6. 桌面计算机未响应怎么办,电脑卡死程序未响应的解决方法步骤详解
  7. 基于单片机的防盗报警监控系统设计(#0401)
  8. 影子卫士中文注册版+系统保护的尚方宝剑、、
  9. win10装sql2000卡在选择配置_如何在WIN10/SERVER2016上安装MSSQL2000数据库和新中大老版本软件...
  10. 第六章金融衍生工具市场