gpt4 book ai didi

android - 如何在 android 4.0 中以编程方式打开/关闭扬声器

转载 作者:IT王子 更新时间:2023-10-28 23:29:27 28 4
gpt4 key购买 nike

我通过媒体播放器播放文件,我想提供扬声器开/关、通过耳机播放、蓝牙等选项。我尝试了下面的代码,它适用于 android 2.2,但我想要的东西也适用于 2.2 和 4.0。您能帮我以编程方式打开/关闭扬声器并通过耳机播放吗?

AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
if(isOn){
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setMode(AudioManager.MODE_NORMAL);
}else{
//Seems that this back and forth somehow resets the audio channel
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setMode(AudioManager.MODE_IN_CALL);
}
audioManager.setSpeakerphoneOn(isOn);

P.S:我已在 list 中授予此权限:

android.permission.MODIFY_AUDIO_SETTINGS 

最佳答案

这样的东西可能适用于某些设备(我只在 XPeria P 上测试过):

final static int FOR_MEDIA = 1;
final static int FORCE_NONE = 0;
final static int FORCE_SPEAKER = 1;

Class audioSystemClass = Class.forName("android.media.AudioSystem");
Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class);
setForceUse.invoke(null, FOR_MEDIA, FORCE_SPEAKER);
// To get back to the default behaviour, use the combination FOR_MEDIA,FORCE_NONE.

FOR_MEDIA, FORCE_SPEAKER 组合通常仅在内部用于将 FM radio 音频路由到扬声器(因为 FM radio 需要您插入有线耳机/耳机以充当天线)。没有 FM radio 功能(或使用替代实现)的设备可能会忽略此参数组合,因此此方法不适用于此类设备。

关于android - 如何在 android 4.0 中以编程方式打开/关闭扬声器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12036221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com