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

	public void GetSensorManager(Context context) {
sm = (SensorManager) context
.getSystemService(Service.SENSOR_SERVICE);
sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mySensorListener = new SensorEventListener() {
@Override
public 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
}
} // } } } @Override
public 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. cocos2d-x JS 重力感应监听事件

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

  2. Android监听来电和去电

    要监听android打电话和接电话,只需下面2步骤1.第一步,写一个Receiver继承自BroadcastReceiver import android.app.Service; import an ...

  3. Android EditText截获与监听输入事件

      Android EditText截获与监听输入事件共有2种方法: 1.第一种方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件. edittext.setOnKeyLi ...

  4. IOS使用AVAudioPlayer播放mp3歌曲文件并监听来电打断

    本实例实现了AVAudioPlayer播放mp3歌曲文件,实现了播放.暂停.继续操作,音乐音量控制.播放进度显示,同时监听来电打断事件 一.控件初始化 - (void)viewDidLoad { [s ...

  5. Unity中利用委托与监听解耦合的思路

    这篇随笔是一篇记录性的随笔,记录了从http://www.sikiedu.com/my/course/304,这门课程中学到的内容,附带了一些自己的思考. 一.单例模式的应用 首先假想一种情况,现在需 ...

  6. android电话状态的监听

    电话状态的监听: /*** * 继承PhoneStateListener类,我们能够又一次其内部的各种监听方法 然后通过手机状态改变时,系统自己主动触发这些方法来实现我们想要的功能 */ class ...

  7. Android addTextChangedListener(文本监听)参数解释及实现EditText字数监听

    由于最近做项目要检测EditText中输入的字数长度,从而接触到了Android中EditText的监听接口,TextWatcher.它有三个成员方法,第一个after很简单,这个方法就是在EditT ...

  8. Android Back Home键监听

    Android Back Home键监听 Back键的监听 对于Back键的监听比较容易,可以在多个系统回调处拦截,比如在activity的下列方法中都可以收到Back键按下的事件: @Overrid ...

  9. Android对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...

随机推荐

  1. vc2015编译protobuf

    下载地址:https://github.com/google/protobuf 1.编译通过cmake生成sln文件来编译用cmd命令 cd 到3.0.0-beta-4\cmake mkdir bui ...

  2. Qt sqlite

    原文地址:http://blog.csdn.net/NewBee520/article/details/8247236QSqlDatabase类实现了数据库连接的操作 QSqlQuery类用来执行SQ ...

  3. inline-block样式间距

    原始问题和解决方法请参考 淘宝UED官方博客:inline-block 前世今生 布局时采用行内块display:inline-block,发现元素之间有空隙,原因是由于空白字符引起的,详细见上面链接 ...

  4. smarty模板引擎中section循环loop与total的区别

    在smarty模板引擎的section循环中 $data=[101,102,103,105,104]; section的两个属性total与loop {section foo $data start= ...

  5. secure_file_priv 配置项对数据导入导出的影响

    secure_file_priv  mysqld 用这个配置项来完成对数据导入导出的限制. 例如我们可以通过 select * from tempdb.t into outfile '/home/my ...

  6. python安装setuptools和pip

    今天需要写一个python导出excel的小程序.这里需要用到XlsxWriter模块,但是这个模块并没有安装,所以需要先下载该模块,然后才能在程序中使用.这里就需要安装模块,我选择使用pip.以下就 ...

  7. 在fedora 20下使用ssh server

    在红帽和centos下,一般安装完后会自带ssh,然后可以通过/etc/init.d/sshd start的方式运行,但是在Fedora 20下,系统改用了另外一套服务开启机制. 首先安装ssh se ...

  8. 使用ViewPager实现左右“无限”滑动的万年历

    有时候就是这样,研究一个问题,一开始想到了一个觉得可行的方案,然后去尝试:尝试了很久.很多次,已经要放弃了,关掉电脑心里 想这个需求没办法实现:在去上厕所的路上突然想到了一个点子,第二天一试,尼玛,搞 ...

  9. UML--核心元素之包

    包是一种容器,如同文件夹一样. 包是UML非常常用的一个元素,它最主要的作用就是容纳并为其他元素分类.包可以容纳用例.业务实体.类图等,也包含子包. 分包的原则 1.如果将元素分为三个包A.B.C,那 ...

  10. 【转】linux tree命令以树形结构显示文件目录结构 ---- 不错

    原文网址:http://jingyan.baidu.com/article/acf728fd19c7eff8e510a3eb.html 今天小编来给分享Linux 系统下一个非常有用的命令的使用:tr ...