PhoneStateListener监听问题
写了个类监听手机状态,代码如下:
public class PhoneState extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
TelephonyManager telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
//Log.i("xxx", "CallReceiver Start... + telephony.getCallState() is " + telephony.getCallState());
}
private PhoneStateListener customPhoneListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
super.onCallStateChanged(state, incomingNumber);
Log.d("xxx", "hello state is " + state);
}
};
}
打印log,发现这么一个问题:
用别的手机给测试机打电话:
D/xxx ( 692): hello state is 1
D/xxx ( 692): hello state is 0
呼叫方主动挂断:
D/xxx ( 692): hello state is 0
D/xxx ( 692): hello state is 0
D/xxx ( 692): hello state is 0
很奇怪,响铃过程中,state先是正常的等于CALL_STATE_RINGING,然后就变成CALL_STATE_IDLE,接下来挂断后也是正常的等于CALL_STATE_IDLE。
测试了三个项目:6575GB和6515GB以及6575ICS上都是如此。
然后另外在一个6517ICS上测的情况是这样子的:
用别的手机给测试机打电话:
D/xxx (16353): hello state is 1
D/xxx (16353): hello state is 1
D/xxx (16353): hello state is 0
D/xxx (16353): hello state is 1
响铃过程中会出现一次CALL_STATE_IDLE,然后恢复CALL_STATE_RINGING,问题是测试机一直在响铃状态。
很奇怪,似乎监听到的状态都有问题,不知道是否有人碰到过?
public class PhoneState extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
TelephonyManager telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
//Log.i("xxx", "CallReceiver Start... + telephony.getCallState() is " + telephony.getCallState());
}
private PhoneStateListener customPhoneListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
super.onCallStateChanged(state, incomingNumber);
Log.d("xxx", "hello state is " + state);
}
};
}
打印log,发现这么一个问题:
用别的手机给测试机打电话:
D/xxx ( 692): hello state is 1
D/xxx ( 692): hello state is 0
呼叫方主动挂断:
D/xxx ( 692): hello state is 0
D/xxx ( 692): hello state is 0
D/xxx ( 692): hello state is 0
很奇怪,响铃过程中,state先是正常的等于CALL_STATE_RINGING,然后就变成CALL_STATE_IDLE,接下来挂断后也是正常的等于CALL_STATE_IDLE。
测试了三个项目:6575GB和6515GB以及6575ICS上都是如此。
然后另外在一个6517ICS上测的情况是这样子的:
用别的手机给测试机打电话:
D/xxx (16353): hello state is 1
D/xxx (16353): hello state is 1
D/xxx (16353): hello state is 0
D/xxx (16353): hello state is 1
响铃过程中会出现一次CALL_STATE_IDLE,然后恢复CALL_STATE_RINGING,问题是测试机一直在响铃状态。
很奇怪,似乎监听到的状态都有问题,不知道是否有人碰到过?
...全文
相关推荐
ReceiverManager:拦截短信、获取地理位置、监听通话
ReceiverManager 拦截短信、获取地理位置、监听通话 源码中没有界面,只有服务和广播
android音乐播放器监听电话状态实现代码
在手机上播放音乐的时候,我们希望监听电话的状态,当然在MID上没有电话功能,不需要监听
Android监听来电状态[项目源码]
本文详细介绍了在Android应用中实现监听来电状态的方法。首先需要申请相关权限,包括MODIFY_PHONE_STATE、CALL_PHONE和READ_PHONE_STATE。然后通过TelephonyManager获取系统服务,并根据不同Android版本使用不同的监听方式:对于Android S及以上版本使用registerTelephonyCallback,其他版本则使用PhoneStateListener。文章提供了完整的代码实现,包括IncomingCallStateListener和MobileTelephonyCallback类的定义,以及处理来电挂断、通话中和响铃三种状态的回调方法。这些代码可以帮助开发者快速实现来电状态监听功能,避免重复开发。
Android程序研发源码Android中监听电话状态.zip
Android程序研发源码Android中监听电话状态.zip
ser电话监控
ser电话监控



