android 利用重力感应监听 来电时翻转手机后静音。
在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 重力感应监听:
- public class ShakeListener implements SensorEventListener {
- public static ShakeListener sensor1;
- // 速度阈值,当摇晃速度达到这值后产生作用
- private static final int SPEED_SHRESHOLD = 400;
- // 两次检测的时间间隔
- private static final int UPTATE_INTERVAL_TIME = 70;
- // 传感器管理器
- private SensorManager sensorManager;
- // 传感器
- private Sensor sensor;
- // 重力感应监听器
- private OnShakeListener onShakeListener;
- // 上下文
- private static Context context;
- // 手机上一个位置时重力感应坐标
- private float lastX;
- private float lastY;
- private float lastZ;
- // 上次检测时间
- private long lastUpdateTime;
- public static ShakeListener newInstance(Context c) {
- if (sensor1 == null) {
- sensor1 = new ShakeListener();
- context = c;
- return sensor1;
- } else {
- return sensor1;
- }
- }
- // 开始
- public void start() {
- // 获得传感器管理器
- if(sensorManager==null){
- sensorManager = (SensorManager) context
- .getSystemService(Context.SENSOR_SERVICE);
- }
- if (sensorManager != null&&sensor==null) {
- // 获得重力传感器
- sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
- }
- if (sensor != null) {
- sensorManager.registerListener(this, sensor,
- SensorManager.SENSOR_DELAY_NORMAL);
- }
- }
- // 停止检测
- public void stop() {
- sensorManager.unregisterListener(this);
- }
- // 摇晃监听接口
- public interface OnShakeListener {
- public void onShake();
- }
- // 设置重力感应监听器
- public void setOnShakeListener(OnShakeListener listener) {
- onShakeListener = listener;
- }
- // 重力感应器感应获得变化数据
- @Override
- public void onSensorChanged(SensorEvent event) {
- long currentUpdateTime = System.currentTimeMillis();
- // 两次检测的时间间隔
- long timeInterval = currentUpdateTime - lastUpdateTime;
- // 判断是否达到了检测时间间隔
- if (timeInterval < UPTATE_INTERVAL_TIME) {
- return;
- }
- // 现在的时间变成last时间
- lastUpdateTime = currentUpdateTime;
- // 获得x,y,z坐标
- float x = event.values[0];
- float y = event.values[1];
- float z = event.values[2];
- // 获得x,y,z的变化值
- float deltaX = x - lastX;
- float deltaY = y - lastY;
- float deltaZ = z - lastZ;
- // 将现在的坐标变成last坐标
- lastX = x;
- lastY = y;
- lastZ = z;
- double speed = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ
- * deltaZ)
- / timeInterval * 10000;
- // 达到速度阀值,发出提示
- if (speed >= SPEED_SHRESHOLD){
- // 手机晃动
- onShakeListener.onShake();
- }
- }
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- }
- }
android 利用重力感应监听 来电时翻转手机后静音。相关推荐
- android 拨打电话、 监听来电、监听呼出电话的功能实现
demo1(通用): 权限 <!-- 监听呼出电话 --> <uses-permission android:name="android.permission.PROCES ...
- cocos2d-x JS 重力感应监听事件
说明 : 下面监听中的 acc属性 里面有很多可以使用的值 . 添加监听 : cc.inputManager.setAccelerometerEnabled(true); cc.eventManage ...
- android 电话状态的监听(来电和去电) PhoneStateListener和TelephonyManager
今天的程序可以实现电话状态改变时启动(来电.接听.挂断.拨打电话),但是暂时没法实现拨打电话时判断对方是否接听.转语音信箱等.Android在电话状态改变是会发送action为android.inte ...
- android 监听来电去电,Android监听来电和去电的实现方法
本文实例讲述了Android监听来电和去电的实现方法.分享给大家供大家参考,具体如下: 要监听android打电话和接电话,只需下面2步骤 第一步,写一个Receiver继承自BroadcastRec ...
- Android截屏事件监听
1. 前言 Android系统没有直接对截屏事件监听的接口,也没有广播,只能自己动手来丰衣足食,一般有三种方法. 利用FileObserver监听某个目录中资源变化情况 利用ContentObserv ...
- Android学习按键事件监听与Command模式
Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图: 将一个请求封装为一个对象,从而 ...
- Android EditText缴获与监听输入事件
Android EditText缴获与监听输入事件 Android EditText截获与监听输入事件 预期目标:如下图,输入框中每输入一个字符,下面的TextView可以迅速的显示出来输入框中的内容 ...
- Android通过使用系统广播监听网络状态的改变
Android通过使用广播监听网络状态的改变 得先添加权限 //查看网络状态<uses-permission android:name="android.permission.ACCE ...
- android列表项点击事件,Android 开发 tips(2):监听 Listview 列表项点击事件
Android 开发 tips(2):监听 Listview 列表项点击事件 (这篇和上篇本来是应该一起写的,但是太过冗长,附链接:[SimpleAdapter 在 Listview 中的应用] ht ...
最新文章
- FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器
- 求职该选好公司还是好上司
- android TextView实现滚动显示效果
- 135. Leetcode 46. 全排列 (回溯算法-排列问题)
- 动态将表中的列名全部转换成小写
- mcq 队列_基于人工智能的智能体能力倾向问答(MCQ) 套装1
- jsp放在web-inf下的注意事项
- python模块:命名空间与重载模块
- docker:编排与部署小神器Compose
- hd_Lanswitch Web System
- 如何把一张照片的像素提高_不改变像素尺寸怎么增加图片的文件大小
- Home Assistant初学者指南 - 5 之 如何在Home Assistant中设置Picture Elements卡 - Lovelace
- 局域网环境下的直播平台(校园电视台)搭建之路
- 记录一次云服务器被劫持下载了挖矿病毒的处理过程
- Linux 设置 时区
- sikuli介绍及解决点击flash按钮的问题
- Windows FTP搭建时所遇到的常见问题
- 【 CSS 尺寸/宽高 属性 heightwidth 】
- 基于界面交互展开的用例设计思路
- 最常用的大文件传输方法有哪些,小编给你们细说