2

我的 android 应用程序有问题,当我在启用杜比的 kindle fire 7" 上运行时,声音存在缺陷,但禁用此选项后,问题就消失了。

我正在使用 MediaPlayer 播放长音频文件,我不能使用 AudioPool 因为这些是背景声音,我已经在使用 SoundPool 播放效果。

有一种方法可以以编程方式检测杜比系统是否在 Android 应用程序上处于活动状态?

有没有办法让 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");
4

2 回答 2

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");

看起来不同类型的音频触发了杜比状态 - 如果您观看 logcat 播放 iHeartRadio 之类的东西,您会看到杜比设置被绕过,因此您可以简单地更改您正在使用的编解码器。不想让它打开。

** 编辑:使用新的官方杜比 API 更新 **

请参阅http://developer.dolby.com/以获得更完整(且不那么 hacky!)的解决方案

于 2013-04-12T16:23:57.617 回答
2

杜比现在有一个可用的官方 API,我相信它会满足您的需求。请务必查看http://developer.dolby.com

作为应用程序开发人员,您现在可以访问杜比技术。

于 2013-11-06T19:19:29.813 回答