编程语言
首页 > 编程语言> > android – 检索具有音频焦点更改的应用程序名称

android – 检索具有音频焦点更改的应用程序名称

作者:互联网

我似乎找不到任何与找出什么应用程序得到音频焦点有关的东西.我可以从我的应用程序中正确地确定它是什么类型的焦点更改,但不是从任何其他应用程序.有没有办法确定哪些应用程序受到关注?

“What am I wanting to do?”

无论是音乐还是声音,我都设法记录内部声音.如果我目前正在录制音频,无论来源是什么,我想确定哪些应用程序重点关注以确定我的应用程序下一步需要做什么.

目前我使用AudioManager.OnAudioFocusChangeListener作为我的应用程序,一旦焦点改变就停止录制内部声音,但我希望应用程序的名称得到关注.

解决方法:

简答:没有好的解决方案…… Android可能就是这样想的.

说明:
查看源代码,AudioManager没有API(甚至是隐藏的API)来检查谁有Audio Focus. AudioManager包含对AudioService的调用,该调用保持真实的音频状态.当AudioManager绑定它时,AudioService通过它的Stub公开的API也没有用于查询当前Audio Focus的API.因此,即使通过反射/系统级权限,您也无法获得所需的信息.

如果您对如何跟踪焦点更改感到好奇,可以查看MediaFocusControl,其实例是AudioService here的成员变量.

未经测试的Hacky启发式:
您可以通过查看UsageStats时间戳获得一些有用的信息.然后,如果您在使用AudioFocus失去了大约500毫秒的时间内使用了应用,则可以使用音频权限对应用进行交叉检查.您可以按照this post获取任何已安装应用的权限.

这显然是一种启发式方法,可能需要一些调整.它还要求用户授予您的应用程序权限以访问使用情况统计信息.里程可能会有所不同.

标签:android,android-audiomanager
来源: https://codeday.me/bug/20190611/1222077.html