Unity Android希望麦克风接入的BROADCAST_STICKY、BLUETOOTH和MODIFY_AUDIO_SETTINGS。

问题描述 投票:-1回答:1

我有一个问题,Unity需要的权限太多。之前我是用Unity 2017构建的,我的应用需要三个android权限。我认为我只需要这几个。

android.permission.RECORD_AUDIO
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE

现在,我升级到了2019.2.21f1 我发现在没有修改代码的情况下 增加了一些额外的权限。

android.permission.MODIFY_AUDIO_SETTINGS
android.permission.BROADCAST_STICKY
android.permission.BLUETOOTH

我检查了我所有的代码,删除了其中的一些部分,直到我找到了导致这些权限出现在我的合并清单中的一行(我正在检查清单-合并-发布-报告)--它是对麦克风列表的引用。Microphone.devices. 当我对它进行引用时,权限就会出现。

我需要引用这个字符串数组,因为我需要调用 Microphone.Start 以获得音频输入,但我不关心蓝牙或广播贴纸。我不想使用任何这些新的权限。有谁知道为什么使用Microphone.devices会导致这些权限出现?

在构建设置中,我的最低API级别是16,而目标API级别是安装的最高级别。

我不想再降级我的Unity版本。我想找到一种方法,只需要RECORD_AUDIO权限,而不需要三个新的权限--唯一的选择是不使用 Microphone这将使我的游戏减少乐趣。Boo hoo.我有一个问题,Unity需要太多的权限。

android unity3d android-manifest android-permissions android-bluetooth
1个回答
1
投票

现在我不认为这个答案会有什么帮助,但由于你看起来很绝望,因为这是unity核心系统的问题,所以没有选择,你能不能尝试使用不同于unity内置的麦克风库?

例如,我发现了这个。

NatDevice是一个跨平台的媒体设备API,适用于iOS,Android,macOS和Windows。NatDevice通过一个简洁的.NET API为使用硬件相机和麦克风提供了强大的抽象。

https:/assetstore.unity.compackagestoolsintegrationnatdevice-media-device-api-162053。

你也可以用原生的android代码自己滚,就像这个家伙描述的那样。

https:/support.frozenmountain.comhcen-uscommunityposts115000768894-Unity-Android-Audio-Capture-Provider。

你可以使用Unity "插件 "来实现。 https:/docs.unity3d.comManualPluginsForAndroid.html 他们的文档有更多的细节,但一般的想法是,你想使用Java编写使用本地库的应用程序组件,然后从C#激活它。这样可以避免两个运行时之间大量昂贵的交叉调用。使用这种方法,你可以在Java中扩展RtcLocalMedia和其余的组件代码,然后在C#中激活该组件。

另一种方法是完全覆盖manifest文件,以排除你不想要的权限(尽管你需要确保它仍然可以工作,因为unity仍然可以依赖它们)。

这里有一个很好的描述。

https:/stackoverflow.coma409313094122889。

希望这至少给你一些想法。


1
投票

如果你想使用蓝牙耳机的内置麦克风,你需要包括这些权限。它们是需要的 音频管理器 使用蓝牙麦克风时。

© www.soinside.com 2019 - 2024. All rights reserved.