问题描述
我正在尝试跟踪电话,这意味着有多少用户将时间花在我的应用程序上。我知道来电的呼入和呼出广播。但是对于拨出电话,人们可能无法应答或网络无法接通。我在线阅读了一些解决方案,但我认为当有人接听电话时,应该在那时打开麦克风。因此,如果可以某种方式,我可以打开麦克风的广播。我的程序将完成,我尝试了一下,但没有发现任何结果,如果有人知道,请帮助。
先谢谢您。
解决方法
我认为,一旦您使用Telephony服务开始通话,无论对方是否接听电话,麦克风都会打开,但是如果您确实希望可以像这样使用AudioManager服务。
AudioManager audioManager = (AudioManager) getSystemService(context);
// This is to get the active mode of the AudioManager
int mode = audioManager.getMode();
// use AudioManager.MODE_IN_CALL for audio call
// use AudioManager.MODE_IN_COMMUNICATION for audio/video chat or VOIP
if (AudioManager.MODE_IN_CALL == mode) {
// Enters here during active call.
}
这是完整的方法。
public void listener(){
final AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
new Thread(new Runnable() {
@Override
public void run() {
while(true){
// This is to get the active mode of the AudioManager
int mode = audioManager.getMode();
// use AudioManager.MODE_IN_CALL for audio call
// use AudioManager.MODE_IN_COMMUNICATION for audio/video chat or VOIP
if (AudioManager.MODE_IN_COMMUNICATION == mode) {
// Enters here during active internet call.
Log.e(TAG,"In Internet Call (VOIP)");
}else if (AudioManager.MODE_IN_CALL == mode) {
// Enters here during active call.
Log.e(TAG,"In Normal Call");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
现在只需在您的课程中调用 listener()方法即可。