如何检查麦克风是否在Android中打开?

问题描述

我正在尝试跟踪电话,这意味着有多少用户将时间花在我的应用程序上。我知道来电的呼入和呼出广播。但是对于拨出电话,人们可能无法应答或网络无法接通。我在线阅读了一些解决方案,但我认为当有人接听电话时,应该在那时打开麦克风。因此,如果可以某种方式,我可以打开麦克风的广播。我的程序将完成,我尝试了一下,但没有发现任何结果,如果有人知道,请帮助。

先谢谢您。

解决方法

我认为,一旦您使用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()方法即可。

详细了解Here on the developer documentation