java - 是否可以忽略插入的耳机并仍然使用手机扬声器?
问题描述
有可能这样做吗?如果是,我该如何实现?
我正在为Android 9开发 Java 应用程序。
到目前为止,检测耳机是否已插入工作:
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");
}
}
}
}
编辑:
我尝试了以下解决方案,但没有任何反应:
- 如何使耳机中的音频静音但让它以编程方式在扬声器上播放?
-
提前感谢您提供任何有用的建议。
(请不要回答“拔下耳机”)
解决方案
我认为您正在寻找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);
}
推荐阅读
- java - JavaFX:在简单桌面应用程序的控制器中注入服务的正确方法是什么?
- jquery - jqxTreeGrid rowClick 和 rowDoubleClick vs rowSelect
- python - 如何将两组数据与合并索引字符串的差异结合起来?
- maple - 具有多个变量的因子方程
- angular - Oncheck 事件必须触发其他组件中的函数
- r - 根据R数据框中的一个变量填充N个滞后
- java - Eclipse 扫描仪行为不一致
- asp.net - 在 asp.net core web application 2.1 中搭建一个管理员 CRUD
- r - 从 R 驱动声卡
- datatable - 如果表为空,则 JQuery 响应式数据表不起作用