Java 我调用audiomanager.setMode方法(MODE_IN_call)和我的耳机doens';我不再工作了

Java 我调用audiomanager.setMode方法(MODE_IN_call)和我的耳机doens';我不再工作了,java,android,android-audiomanager,headset,Java,Android,Android Audiomanager,Headset,如上所述,我获取AudioManager实例并使用MODE_IN_CALL启动它,但是当我关闭我的应用程序(未关闭)时,我无法使我的耳机在使用其他应用程序时工作,请帮助。是我设置了错误的模式导致了我的问题吗? 代码如下: private boolean initDefaultSensor() { if (proximitySensor != null) return true; if (sensorManager == null || audioManager == null)

如上所述,我获取AudioManager实例并使用MODE_IN_CALL启动它,但是当我关闭我的应用程序(未关闭)时,我无法使我的耳机在使用其他应用程序时工作,请帮助。是我设置了错误的模式导致了我的问题吗? 代码如下:

private boolean initDefaultSensor() {
    if (proximitySensor != null) return true;
    if (sensorManager == null || audioManager == null) return false;
    proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    if (proximitySensor == null || audioManager == null) {
        return false;
    }
    audioManager.setMode(AudioManager.MODE_IN_CALL);
    return true;
}
我还调用了其他一些可能与这个问题相关的方法

public void OpenSpeaker() {
    try {
        if (!audioManager.isSpeakerphoneOn()) {
            audioManager.setSpeakerphoneOn(true);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void CloseSpeaker() {
    try {
        if (audioManager != null) {
            if (audioManager.isSpeakerphoneOn()) {
                audioManager.setSpeakerphoneOn(false);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

根据我的研究,
audioManager.setMode(audioManager.MODE\u IN\u CALL)
,在Android 4.4上无法工作,只能通过系统应用程序/服务访问。如果您尝试
getMode()
,您将得到
AudioManager.MODE\u NORMAL


然而,如果你想在安卓L中使用它,你可以使用
audioManager.setMode(audioManager.MODE\u in_COMMUNICATION)
根据我的研究,
audioManager.setMode(audioManager.MODE\u in_CALL)
在安卓4.4之上不起作用,只能通过系统应用程序/服务访问。如果您尝试
getMode()
,您将得到
AudioManager.MODE\u NORMAL


但是,如果您想在Android L中使用它,您可以使用
audioManager.setMode(audioManager.MODE_in_COMMUNICATION)

在onPause中清除audio manager实例,并在中重新分配它onResume@Pro:您在onPause中添加了对清单文件Clear audio manager实例的用户权限,并在中重新分配onResume@Pro:您添加了对清单文件的用户权限