我的Android应用程序有问题,当我在杜比活跃的情况下在7英寸的kindle fire上运行时,声音上存在缺陷,但是当禁用此选项时,问题消失了。

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

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

有没有一种方法可以使MediaPlayer接受多 channel ?

对不起,我的英语不好:p

我找到了一种以编程方式设置属性“dolby.ds.state”的方法,但这导致了一个大问题,所以不要这样做!

这种方式是:

System.setProperty("dolby.ds.state", "off");

当我这样做时,将应用该属性,但仅在重新启动设备后才应用此属性,完成后,我通常通过设备更改菜单选项,但仍保持以编程方式获取该值。

如果您做过同样的愚蠢的事情,我已经找到一种解决方法,运行以下代码并重置设备:
Properties sysProps = System.getProperties();
sysProps.remove("dolby.ds.state");
System.clearProperty("dolby.ds.state");

最佳答案

如果您执行adb shell getprop | grep dolby,则会看到系统属性dolby.ds.state在 Activity (播放音频)时在打开和关闭之间切换

要从应用程序中查询 Activity 状态,这使您可以查询System属性(请注意,您可能必须在其周围包装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");

看起来不同种类的音频会触发Dolby状态-如果您通过播放iHeartRadio之类的内容来观看Logcat,则将看到Dolby设置被orbis绕过,因此您可能只需要在不使用时更改编解码器即可不想打开它。

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

请参阅http://developer.dolby.com/,以获得更完整(且更不容易破解!)的解决方案。

关于android - 如何以编程方式检测Dolby系统是否在Android应用程序上处于 Activity 状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15972884/

10-09 01:40