Android之翻转静音
来源:互联网 发布:linux下载速度很慢 编辑:程序博客网 时间:2024/04/29 06:18
在Android系统框架里实现翻转静音;
利用java的观察者模式可以轻松实现来电翻转静音;
服务类程序代码:
package com.example.smartcalltest;import android.app.Service;import android.content.Context;import android.content.Intent;import android.hardware.Sensor;import android.hardware.SensorManager;import android.media.AudioManager;import android.os.IBinder;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.util.Log;import com.example.smartcalltest.SensorProviderService.OnTurnPhoneDownListener;public class LewaTurnSilentService extends Service{ private TelephonyManager mTelephonyMgr; private SensorManager mSensorMgr; private AudioManager mAudioMgr; private Sensor mSensor; private int mRingerMode; private SensorProviderService mSensorProviderSer = null; private boolean mVibRinging; private boolean mSensorFlag = false; private boolean mUpwardFlag = false; private boolean DEBUG = true; @Override public void onCreate() { super.onCreate(); if (DEBUG) {Log.i(TAG, "onCreate");} mTelephonyMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); mTelephonyMgr.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); mAudioMgr = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); mSensorMgr = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE); mSensor = mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } @Override public void onDestroy() { if (DEBUG) {Log.i(TAG, "onDestroy");} if (true == mSensorFlag) { mSensorProviderSer.unregisterSensorEventerListener(2); mSensorFlag = false; } mTelephonyMgr.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); super.onDestroy(); } public void TurnSilentRing() { mSensorProviderSer.setOnTurnPhoneDownListener(new OnTurnPhoneDownListener() { @Override public void onTurnPhoneDown() { // TODO Auto-generated method stub mAudioMgr.setRingerMode(AudioManager.RINGER_MODE_SILENT); mSensorProviderSer.unregisterSensorEventerListener(2); } }); } private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { case TelephonyManager.CALL_STATE_RINGING: if (false == mSensorFlag) { mRingerMode = mAudioMgr.getRingerMode(); //mVibRinging = mAudioManagerHelper.isVibrationEnabled(); if (AudioManager.RINGER_MODE_SILENT != mRingerMode) { mSensorProviderSer = new SensorProviderService(LewaTurnSilentService.this); mSensorProviderSer.registerSensorEventerListener(2); TurnSilentRing(); mSensorFlag = true; } } break; case TelephonyManager.CALL_STATE_OFFHOOK: case TelephonyManager.CALL_STATE_IDLE: if (true == mSensorFlag) { mSensorProviderSer.unregisterSensorEventerListener(2); mAudioMgr.setRingerMode(mRingerMode); //mAudioManagerHelper.setVibrationEnabled(mVibRinging); mSensorFlag = false; mUpwardFlag = false; } break; default: break; } } };}
利用加速度传感器监听,自己封装的接口;
private final SensorEventListener mAccelerometerEventListener2 = new SensorEventListener() { @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { if (event.values[2] > 5) { mPhoneScreenUp = true; } else { if (mPhoneScreenUp && event.values[2] < -3.0f) { mTurnPhoneUp = true; onTurnPhoneDownListener.onTurnPhoneDown(); } } } } };
public void setOnTurnPhoneDownListener(OnTurnPhoneDownListener listener) { onTurnPhoneDownListener = listener; } public interface OnTurnPhoneDownListener { public void onTurnPhoneDown(); }
最后用的时候不要忘了,注册和注销监听器哦……
0 0
- Android之翻转静音
- Android 来电翻转手机静音
- Android 来电翻转静音实现源码
- android L平台增加来电翻转静音菜单、功能
- android 5.1中添加来电翻转静音的功能
- android 通过加速度传感器实现手机来电时翻转静音
- android L平台增加来电翻转静音菜单、功能
- 手机翻转静音
- 手机来电翻转静音功能
- android 利用重力感应监听 来电时翻转手机后静音。
- android 之button 屏幕翻转
- android 之button 屏幕翻转
- 硬盘静音之AAM
- HRBUST1313-火影忍者之~静音
- HRBUST1313 火影忍者之~静音
- android 静音与振动
- android 静音与振动
- android 静音与振动
- sql语法:inner join on, left join on, right join on详细使用方法
- HDU1593一道简单但还算有意思的题(包含一点贪心吧~)。
- openmpi自动安装脚本
- Android 自定义Log
- 丑数
- Android之翻转静音
- Jquery 选择器中使用变量
- LINUX文件与目录笔记----chdir函数
- 获取DataSet中某行某列的数据
- LA 3211 Now or later / 2-SAT
- C库函数(Windows)-system()
- javascript学习(一)数组操作
- 学一点Git--20分钟git快速上手
- 仅通过崩溃地址找出源代码的出错行