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>
請先 登入 以發表留言。