设为首页 加入收藏

TOP

Android settings模块中添加来电反转静音功能(一)
2014-11-24 12:07:25 来源: 作者: 【 】 浏览:2
Tags:Android settings 模块 添加 来电 反转 静音 功能

1.首先是一个主要的服务类,service


package com.create.wxb;


import java.util.List;


import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;


public class TurnSilentService extends Service {

private TelephonyManager telephonyMgr;
private SensorManager sensorMgr;
private AudioManager audioMgr;
private SensorEventListener sensorListener;
private PhoneCallListener phoneListener;
private boolean ringing = false;

@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}


@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Sensor orientation = null;
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
telephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
sensorMgr = (SensorManager)this.getSystemService(SENSOR_SERVICE);
audioMgr = (AudioManager)this.getSystemService(AUDIO_SERVICE);
phoneListener = new PhoneCallListener();
telephonyMgr.listen(phoneListener, PhoneCallListener.LISTEN_CALL_STATE);
sensorListener = new SensorListener();
List sensorList = sensorMgr.getSensorList(Sensor.TYPE_ALL);
int size = sensorList.size();
for (int i = 0; i int type = sensorList.get(i).getType();
if (type == Sensor.TYPE_ACCELEROMETER) {
orientation = sensorList.get(i);
break;
}
}
if (orientation != null) {
sensorMgr.registerListener(sensorListener,orientation, SensorManager.SENSOR_DELAY_NORMAL);
} else {
stopSelf();
}
}


@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
telephonyMgr.listen(phoneListener, 0);
sensorMgr.unregisterListener(sensorListener);
}


private class PhoneCallListener extends PhoneStateListener{
@Override
public void onCallStateChanged(int state, String incomingNumber){
switch (state) {
case TelephonyManager.CALL_STATE_IDLE://电话处于待机状态
ringing = false;
break;
case TelephonyManager.CALL_STATE_OFFHOOK://电话通话中
ringing = false;
break;
case TelephonyManager.CALL_STATE_RINGING://有电话来电
ringing = true;
break;
}
super.onCallStateChanged(state, incomingNumber);
}
}



class SensorListener implements SensorEventListener{
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}

@Override
public void onSensorChanged(SensorEvent event) {
if (event.values[2] < 0 && ringing) {//电话正在响铃中,且手机面朝下

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android开发教程:NDK编译静态库.. 下一篇Android开发教程:SurfaceView使..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·PostgreSQL 索引 - (2025-12-25 22:20:43)
·MySQL Node.js 连接 (2025-12-25 22:20:41)
·SQL 撤销索引、表以 (2025-12-25 22:20:38)
·Linux系统简介 (2025-12-25 21:55:25)
·Linux安装MySQL过程 (2025-12-25 21:55:22)