有可能这样做吗?如果可以,我该如何实现?
我正在用Java为 Android 9 开发一个应用。
到目前为止,是否可以检测耳机是否插入:
public class HeadsetIntentReceiver extends BroadcastReceiver {
private String TAG = "HeadSet";
public HeadsetIntentReceiver() {
Log.d(TAG, "Created");
}
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
switch(state) {
case(0):
Log.d(TAG, "Headset unplugged");
break;
case(1):
Log.d(TAG, "Headset plugged");
break;
default:
Log.d(TAG, "Error");
}
}
}
}
编辑:
我尝试了以下解决方案,但没有任何反应:
How to disable the wired headset programmatically in Java
在此先感谢您提供任何有用的建议。
(请不要回答“拔掉耳机”)
答案 0 :(得分:0)
我认为您正在寻找AudioManager
将AUDIO_SERVICE
附加到AudioManager,将AudioManager设置为MODE_IN_COMMUNICATION
,然后打开扬声器电话。您可以像在通话中一样使用扬声器。
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(true);
请记住在使用后将其还原。 例如,
protected void onPause() {
super.onPause();
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(false);
}