如何在 android 中检查麦克风是否打开?
how to check if mic is turned on or not in android?
我正在尝试开发 phone 通话记录,这意味着用户在我的应用程序的 phone 通话上花费了多少时间。我知道呼叫的传入和传出广播。但对于拨出电话,有可能对方不会接听或网络无法接通。我在网上阅读了一些解决方案,但我认为当有人接听电话时,麦克风应该在那个时候打开。所以如果我能以某种方式听到麦克风打开的广播。我的程序应该是完整的,我尝试了但什么也没找到,如果有人知道请帮助。
提前谢谢你。
我认为一旦你使用 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();
}
现在只需在 Class.
中调用 listener() 方法
我正在尝试开发 phone 通话记录,这意味着用户在我的应用程序的 phone 通话上花费了多少时间。我知道呼叫的传入和传出广播。但对于拨出电话,有可能对方不会接听或网络无法接通。我在网上阅读了一些解决方案,但我认为当有人接听电话时,麦克风应该在那个时候打开。所以如果我能以某种方式听到麦克风打开的广播。我的程序应该是完整的,我尝试了但什么也没找到,如果有人知道请帮助。
提前谢谢你。
我认为一旦你使用 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();
}
现在只需在 Class.
中调用 listener() 方法