基于Unity在Android 6上录制音频权限

时间:2015-12-09 16:55:50

标签: c# android unity3d microphone android-6.0-marshmallow

Android 6.0 Marshmallow存在问题。当我尝试使用麦克风并记录用户输入时,我收到以下错误。

12-09 18:26:42.226 204-10957/? W/ServiceManager: Permission failure: android.permission.RECORD_AUDIO from uid=10274 pid=757
12-09 18:26:42.226 204-10957/? E/: Request requires android.permission.RECORD_AUDIO
12-09 18:26:42.226 204-10957/? E/AudioFlinger: openRecord() permission denied: recording not allowed
12-09 18:26:42.226 757-1251/com.facebook.singApp E/AudioRecord: AudioFlinger could not create record track, status: -1
12-09 18:26:42.228 204-1253/? I/AudioFlinger: AudioFlinger's thread 0xafa40000 ready to run

应用程序崩溃,它只发生在Android 6.0 Marshmallow上,所有其他平台都可以正常运行。 在android清单中我已经添加了这个代码部分:

   <uses-permission android:name="android.permission.RECORD_AUDIO" android:maxSdkVersion="1" />  

在Unity上我添加了以下代码:(我知道它对于网络播放器而且我知道,这是什么黑客攻击)

private IEnumerator mobilePremissions()
{
    yield return Application.RequestUserAuthorization(UserAuthorization.Microphone | UserAuthorization.Microphone);
    if (Application.HasUserAuthorization(UserAuthorization.WebCam | UserAuthorization.Microphone)) {
        Debug.Log ("Great");
        ViewerSwitchSence.Recording();
    } else {
        Debug.Log ("Crapping");
    }
}

我不知道为什么Unity在点击时不会授权用户授权,这是Android 6.0 Marshmallow的预期结果。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

好的,解决了这个问题。 如果您遇到同样的问题,请更新到最新的Unity,但是,如果您已将android.permission.RECORD_AUDIO添加到清单中。

确保从清单中删除此行,它将发生冲突,Unity自我添加权限并导致应用程序在麦克风请求时崩溃。

希望它有所帮助。