我的Android应用程序出现问题,当我在7英寸的点火器上运行时,声音存在缺陷,但是当禁用此选项时问题就会消失。
我正在使用MediaPlayer播放长音频文件,我无法使用AudioPool,因为这些是背景音,我已经在使用SoundPool播放效果。
有一种方法可以在Android应用程序上以编程方式检测Dolby系统是否处于活动状态?
有一种方法可以让MediaPlayer接受多渠道吗?
抱歉我的英语不好:p
我找到了一种以编程方式设置属性“dolby.ds.state”的方法,但这导致了一个很大的问题,所以不要这样做!
这种方式是:
System.setProperty("dolby.ds.state", "off");
当我这样做时,该属性已应用但仅在重新启动设备时,完成后我通常通过设备更改菜单选项仍然保持以编程方式设置值。
如果你做了同样愚蠢的事情,我找到了解决问题的方法,运行以下代码并重置设备:
Properties sysProps = System.getProperties();
sysProps.remove("dolby.ds.state");
System.clearProperty("dolby.ds.state");
答案 0 :(得分:5)
如果您执行adb shell getprop | grep dolby
,您会看到系统属性dolby.ds.state在处于活动状态(播放音频)时在On和Off之间切换
要从您的应用程序查询活动状态,这可以让您查询系统属性(请注意,您可能必须将try / catch块包围起来以保持Java的快乐)
Class getSysProp = null;
getSysProp = Class.forName("android.os.SystemProperties");
Method method = null;
method = getSysProp.getDeclaredMethod("get", String.class);
String prop = null;
prop = (String)method.invoke(null, "dolby.ds.state");
看起来不同类型的音频会触发杜比状态 - 如果您使用类似iHeartRadio播放的内容观看logcat,您会看到杜比设置被orbis旁路,因此您可能只需更改您正在使用的编解码器你不希望它打开。
**编辑:使用新的官方杜比API **进行更新
请参阅http://developer.dolby.com/以获得更完整(并且更少hacky!)的解决方案
答案 1 :(得分:2)
杜比现在有官方API,我相信它会满足您的需求。请务必查看http://developer.dolby.com
作为应用程序开发人员,您现在可以访问杜比技术。