gpt4 book ai didi

android - 如何以编程方式检测杜比系统是否在 Android 应用程序上处于 Activity 状态

转载 作者:太空狗 更新时间:2023-10-29 16:05:37 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

如果你执行 adb shell getprop | grep dolby 你会看到有一个系统属性 dolby.ds.state 当它处于 Activity 状态时(播放音频)在 On 和 Off 之间切换

要从您的应用程序中查询 Activity 状态,您可以查询系统属性(请注意,您可能必须将 try/catch block 包裹在它周围以让 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,您会看到 orbis 绕过了 Dolby 设置,因此您可以简单地更改正在使用的编解码器你不希望它打开。

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

参见 http://developer.dolby.com/一个更完整的(和更少的 hacky!)解决方案

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

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