2

我的Android应用程序出现问题,当我在kindle fire 7上运行时,“有杜比活动存在声音缺陷,但是当此选项被禁用的问题消失。如何以编程方式检测杜比系统是否在Android应用程序中处于活动状态

我使用的MediaPlayer播放长的音频文件,我不能使用AudioPool因为这些背景声音,我已经使用的Soundpool发挥作用。

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

有一种方法可以使MediaPlayer成为接受多渠道?

对不起我的英文不好:P


我找到了一种方法来设置属性“dolby.ds.state”编程,但是这引起了很大的问题,所以不这样做!

这种方式是:

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

当我这样做,财产被应用,但重新启动设备时,才完成它后,我由设备通常改变了菜单选项仍然一直得到编程设定的值。

如果你已经做了同样愚蠢的事情,我已经找到一种方法来解决它,运行下面的代码并重置设备:如果你做一个adb shell getprop | grep dolby你会看到有

Properties sysProps = System.getProperties(); 
sysProps.remove("dolby.ds.state"); 
System.clearProperty("dolby.ds.state"); 
+0

如果你还没有这样做,你可能需要在Kindle Fire开发支持论坛上提问:https://forums.developer.amazon.com/forums/forum.jspa?forumID=12 – CommonsWare

+0

我已经已经这样做了,但是感谢https://forums.developer.amazon.com/forums/thread.jspa?messageID=3339ഋ –

+0

仅供参考,使用[tag:kindle-fire]标签来解决未来的Kindle Fire特定问题,作为来自亚马逊的@Offbeatmammal(谁拥有一个奇怪的非哺乳动物化身......)的优秀人物监视该标签并且将更有可能看到你的问题。 – CommonsWare

回答

5

是一个系统属性dolby.ds.state,当它处于活动状态(播放音频)时打开和关闭

要从应用程序查询活动状态,可以查询系统属性(请注意,您可能必须为了保持Java的快乐,将try/catch块封装起来)

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/

+0

谢谢!有了这个解决方案,我可以找出如果选项是否启用,但我不明白我怎么能改变它,有一个方法来做到这一点? –

+0

对不起,只是询问有关检测它的问题。我还没有找到一种方法来控制它 - 我没有看到与用户选择的设置对应的属性中的任何内容,可用于控制此(dolby.ds.state只是反映当前状态是由播放触发的),要求用户关闭它可能对他们来说是一个不好的体验,你可以使用不同的编解码器来播放你不想要的音频这种方式处理? – Offbeatmammal

+0

对不起,我真的没有问如何改变选项,但它会帮助我。p 我正在寻找一种方法来做到这一点,但我可能会警告用户,并要求它禁用该选项,谢谢你ou再次,你救了我的生命:) –

2

杜比现在有一个官方的API可用,我肯定会满足您的需求。请务必退房http://developer.dolby.com

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

相关问题