您的位置:首页 > 其它

通过服务监听电话的状态

2018-03-08 13:28 453 查看
在Android的API中,电话的状态分为:

TelephonyManager.CALL_STATE_IDLE 空闲状态

TelephonyManager.CALL_STATE_OFFHOOK 摘机,即是接听状态
TelephonyManager.CALL_STATE_RINGING 响铃状态

使用Service如何监听电话的这三个状态呢,很显然我们需要PhoneStateListener这个监听器:

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class MyService extends Service {

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
super.onCreate();
// 获取tellphonemanager
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
// 注册电话状态监听器
tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);
}

@Override
public void onDestroy() {
super.onDestroy();
}

// 定义一个类用来监听电话的状态
private class MyPhoneStateListener extends PhoneStateListener {
// 当电话设备状态发送改变时调用onCallStateChanged()
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// 具体判断一下电话的状态
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:// 空闲状态
System.out.println("空闲中...");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:// 接听状态
System.out.println("接听中...");
break;
case TelephonyManager.CALL_STATE_RINGING:// 电话的响铃状态
System.out.println("响铃中...");
break;
}
}
}
}

注意监听电话状态信息的权限:<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>



挂断后就又恢复到了TelephonyManager.CALL_STATE_IDLE空闲状态!


注意:

获取TelephoneManager 实例:
TelephoneManager tm = (TelephoneManager)getSystemService(TELEPHONE_SERVICE);

注册电话的监听:
tm.listen(new MyPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息