CALENDAR
CAMERA
CONTACTS
LOCATION
MICROPHONE
PHONE
SENSORS
SMS
STORAGE

 

新版本中設定Android manifest XML檔無效,需要直接在C#內寫:

我在Awake和Start各貼一次相同的Code,原因是因為有些版本在第一次安裝好的同時,錄音權限這種有時會無法正確啟動,多貼一次判定時就正常。

Permission.HasUserAuthorizedPermission("權限內容"),裡面其實是字串,和Android manifest內的一樣的內容。Unity應該是自動幫忙產生而已。

如果在Unity Permission內找不到的權限可以自己去查一下。某些版本會出現自己設定manifest和Unity產生的衝突,但又只支援C#自動產生,

如果是這樣請去manifest把權限請求刪掉。

"android.permission.RECORD_AUDIO" ,RECORD_AUDIO就是要求的權限,可以置換為上方需要的權限內容,把下方的程式掛到空物件上之後,

當Android安裝好時,就會自動詢問是否要給予權限了。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if PLATFORM_ANDROID
using UnityEngine.Android;
#endif

public class Per : MonoBehaviour
{
    private void Awake()
    {
#if PLATFORM_ANDROID
        if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
        {
            Permission.RequestUserPermission(Permission.Microphone);


        }
        if (!Permission.HasUserAuthorizedPermission("android.permission.RECORD_AUDIO"))
        {
            Permission.RequestUserPermission("android.permission.RECORD_AUDIO");

        }


#endif
    }

    // Start is called before the first frame update
    void Start()
    {

        Debug.Log(Permission.Microphone);

#if PLATFORM_ANDROID
        if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
        {
            Permission.RequestUserPermission(Permission.Microphone);
          

        }
        if (!Permission.HasUserAuthorizedPermission("android.permission.RECORD_AUDIO"))
        {
            Permission.RequestUserPermission("android.permission.RECORD_AUDIO");

        }


#endif
    }


    // Update is called once per frame
    void Update()
    {
        

    }
}

 

較舊版本,用Android Manifest

在 Assets\Plugins\Android\AndroidManifest.xml ,如果沒有就自己建立一份。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.kokosoft.speechrecognitionapp" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal">
  <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
  <application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false" android:isGame="true" android:banner="@drawable/app_banner">
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
  </application>
  <uses-permission android:name="android.permission.RECORD_AUDIO" />  
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
  <uses-feature android:glEsVersion="0x00020000" />
  <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
</manifest>

 

創作者介紹
創作者 vsvs 的頭像
vsvs

vsvs

vsvs 發表在 痞客邦 留言(0) 人氣( 976 )