在CallNotifier.java中 加入如下代码:

 public void GetSensorManager(Context context) {sm = (SensorManager) context.getSystemService(Service.SENSOR_SERVICE);sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);mySensorListener = new SensorEventListener() {@Overridepublic void onSensorChanged(SensorEvent event) {x = event.values[0]; y = event.values[1]; z = event.values[2];if (x < 1 && x > -1 && y < 1 && y > -1) {if (z > 0) {mGoUp = true;} else {mGoUp = false;}} else {
//                  if (x > 1 || x < -1 || y > 1 || y < -1 ) {if ( z > 0 && !mGoUp ) {mRinger.stopRing();if(mySensorListener != null){sm.unregisterListener(mySensorListener);    //Add by kylin 2013.07.25}} if ( z < 0 && mGoUp ) {mRinger.stopRing();if(mySensorListener != null){sm.unregisterListener(mySensorListener);    //Add by kylin 2013.07.25}} //                 } }}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}};sm.registerListener(mySensorListener, sensor,SensorManager.SENSOR_DELAY_GAME);}

    再在相应位置调用如上方法即可以实现此功能。              重力感应单个实例下载: http://download.csdn.net/detail/wangqilin8888/5819679

android 重力感应监听:

  1. public class ShakeListener implements SensorEventListener {
  2. public static ShakeListener sensor1;
  3. // 速度阈值,当摇晃速度达到这值后产生作用
  4. private static final int SPEED_SHRESHOLD = 400;
  5. // 两次检测的时间间隔
  6. private static final int UPTATE_INTERVAL_TIME = 70;
  7. // 传感器管理器
  8. private SensorManager sensorManager;
  9. // 传感器
  10. private Sensor sensor;
  11. // 重力感应监听器
  12. private OnShakeListener onShakeListener;
  13. // 上下文
  14. private static Context context;
  15. // 手机上一个位置时重力感应坐标
  16. private float lastX;
  17. private float lastY;
  18. private float lastZ;
  19. // 上次检测时间
  20. private long lastUpdateTime;
  21. public static ShakeListener newInstance(Context c) {
  22. if (sensor1 == null) {
  23. sensor1 = new ShakeListener();
  24. context = c;
  25. return sensor1;
  26. } else {
  27. return sensor1;
  28. }
  29. }
  30. // 开始
  31. public void start() {
  32. // 获得传感器管理器
  33. if(sensorManager==null){
  34. sensorManager = (SensorManager) context
  35. .getSystemService(Context.SENSOR_SERVICE);
  36. }
  37. if (sensorManager != null&&sensor==null) {
  38. // 获得重力传感器
  39. sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  40. }
  41. if (sensor != null) {
  42. sensorManager.registerListener(this, sensor,
  43. SensorManager.SENSOR_DELAY_NORMAL);
  44. }
  45. }
  46. // 停止检测
  47. public void stop() {
  48. sensorManager.unregisterListener(this);
  49. }
  50. // 摇晃监听接口
  51. public interface OnShakeListener {
  52. public void onShake();
  53. }
  54. // 设置重力感应监听器
  55. public void setOnShakeListener(OnShakeListener listener) {
  56. onShakeListener = listener;
  57. }
  58. // 重力感应器感应获得变化数据
  59. @Override
  60. public void onSensorChanged(SensorEvent event) {
  61. long currentUpdateTime = System.currentTimeMillis();
  62. // 两次检测的时间间隔
  63. long timeInterval = currentUpdateTime - lastUpdateTime;
  64. // 判断是否达到了检测时间间隔
  65. if (timeInterval < UPTATE_INTERVAL_TIME) {
  66. return;
  67. }
  68. // 现在的时间变成last时间
  69. lastUpdateTime = currentUpdateTime;
  70. // 获得x,y,z坐标
  71. float x = event.values[0];
  72. float y = event.values[1];
  73. float z = event.values[2];
  74. // 获得x,y,z的变化值
  75. float deltaX = x - lastX;
  76. float deltaY = y - lastY;
  77. float deltaZ = z - lastZ;
  78. // 将现在的坐标变成last坐标
  79. lastX = x;
  80. lastY = y;
  81. lastZ = z;
  82. double speed = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ
  83. * deltaZ)
  84. / timeInterval * 10000;
  85. // 达到速度阀值,发出提示
  86. if (speed >= SPEED_SHRESHOLD){
  87. // 手机晃动
  88. onShakeListener.onShake();
  89. }
  90. }
  91. public void onAccuracyChanged(Sensor sensor, int accuracy) {
  92. }
  93. }

android 利用重力感应监听 来电时翻转手机后静音。相关推荐

  1. android 拨打电话、 监听来电、监听呼出电话的功能实现

    demo1(通用): 权限 <!-- 监听呼出电话 --> <uses-permission android:name="android.permission.PROCES ...

  2. cocos2d-x JS 重力感应监听事件

    说明 : 下面监听中的 acc属性 里面有很多可以使用的值 . 添加监听 : cc.inputManager.setAccelerometerEnabled(true); cc.eventManage ...

  3. android 电话状态的监听(来电和去电) PhoneStateListener和TelephonyManager

    今天的程序可以实现电话状态改变时启动(来电.接听.挂断.拨打电话),但是暂时没法实现拨打电话时判断对方是否接听.转语音信箱等.Android在电话状态改变是会发送action为android.inte ...

  4. android 监听来电去电,Android监听来电和去电的实现方法

    本文实例讲述了Android监听来电和去电的实现方法.分享给大家供大家参考,具体如下: 要监听android打电话和接电话,只需下面2步骤 第一步,写一个Receiver继承自BroadcastRec ...

  5. Android截屏事件监听

    1. 前言 Android系统没有直接对截屏事件监听的接口,也没有广播,只能自己动手来丰衣足食,一般有三种方法. 利用FileObserver监听某个目录中资源变化情况 利用ContentObserv ...

  6. Android学习按键事件监听与Command模式

    Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图: 将一个请求封装为一个对象,从而 ...

  7. Android EditText缴获与监听输入事件

    Android EditText缴获与监听输入事件 Android EditText截获与监听输入事件 预期目标:如下图,输入框中每输入一个字符,下面的TextView可以迅速的显示出来输入框中的内容 ...

  8. Android通过使用系统广播监听网络状态的改变

    Android通过使用广播监听网络状态的改变 得先添加权限 //查看网络状态<uses-permission android:name="android.permission.ACCE ...

  9. android列表项点击事件,Android 开发 tips(2):监听 Listview 列表项点击事件

    Android 开发 tips(2):监听 Listview 列表项点击事件 (这篇和上篇本来是应该一起写的,但是太过冗长,附链接:[SimpleAdapter 在 Listview 中的应用] ht ...

最新文章

  1. FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器
  2. 求职该选好公司还是好上司
  3. android TextView实现滚动显示效果
  4. 135. Leetcode 46. 全排列 (回溯算法-排列问题)
  5. 动态将表中的列名全部转换成小写
  6. mcq 队列_基于人工智能的智能体能力倾向问答(MCQ) 套装1
  7. jsp放在web-inf下的注意事项
  8. python模块:命名空间与重载模块
  9. docker:编排与部署小神器Compose
  10. hd_Lanswitch Web System
  11. 如何把一张照片的像素提高_不改变像素尺寸怎么增加图片的文件大小
  12. Home Assistant初学者指南 - 5 之 如何在Home Assistant中设置Picture Elements卡 - Lovelace
  13. 局域网环境下的直播平台(校园电视台)搭建之路
  14. 记录一次云服务器被劫持下载了挖矿病毒的处理过程
  15. Linux 设置 时区
  16. sikuli介绍及解决点击flash按钮的问题
  17. Windows FTP搭建时所遇到的常见问题
  18. 【 CSS 尺寸/宽高 属性 heightwidth 】
  19. 基于界面交互展开的用例设计思路
  20. 最常用的大文件传输方法有哪些,小编给你们细说

热门文章

  1. vue项目完整的目录结构
  2. SQL实战 5.统计salary的累计和running_total
  3. ps制作一种特效人像
  4. linux 服务器配置资料
  5. 支付系统设计白皮书:会员(客户)系统设计思路
  6. 大学物理实验——固体线胀系数的测定
  7. 【第139期】游戏策划:不用编程,制作捡钥匙开门功能
  8. ultraos win10启动盘_用UltraISO把Win10 ISO镜像写入U盘制作系统安装盘
  9. Golang:简介、基本语法、函数、defer、Test功能
  10. 百度贴吧16岁,互联网已是沧海桑田