Çöđ*_*xěŕ 5 android android-audiomanager
我似乎找不到任何有关找出哪个应用程序获得音频关注的内容。我可以从我的应用程序中正确确定焦点更改的类型,但不能从任何其他应用程序中确定。有什么方法可以确定哪些应用程序受到关注吗?
“我想做什么?”
我设法录制了内部声音,无论是音乐还是声音。如果我当前正在录制音频而不管其来源是什么,那么我想确定重点放在哪个应用程序上,以确定下一步我的应用程序需要做什么。
当前,一旦焦点发生改变,我正在为我的应用程序使用AudioManager.OnAudioFocusChangeListener停止录制内部声音,但是我希望获得焦点的应用程序名称。
简短的回答:没有好的解决方案……Android 可能就是这样想的。
说明: 查看源代码,AudioManager 没有 API(甚至是隐藏的 API)来检查谁拥有 Audio Focus。AudioManager 包装对 AudioService 的调用,该服务保存真实的音频状态。当 AudioManager 绑定到 AudioService 时,AudioService 通过其 Stub 公开的 API 也没有用于查询当前音频焦点的 API。因此,即使通过反射/系统级权限,您也无法获得您想要的信息。
如果您好奇如何跟踪焦点变化,可以查看MediaFocusControl ,其实例是 AudioService 的成员变量。
未经测试的 Hacky Heuristic: 您也许可以通过查看UsageStats时间戳来获得一些有用的信息。然后,一旦您拥有在丢失 AudioFocus 后大约 500 毫秒内使用过的应用程序,您就可以将它们与具有音频权限的应用程序进行交叉检查。您可以按照这篇文章获取任何已安装应用程序的权限。
这显然是一种启发式方法,可能需要一些调整。它还要求用户授予您的应用程序访问使用情况统计信息的权限。里程可能会有所不同。
| 归档时间: |
|
| 查看次数: |
2144 次 |
| 最近记录: |