| Core/SDK/SDKUtility.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/GeneralConfig/ConstDefine.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Voice/VoiceRecorder.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/SDK/SDKUtility.cs
@@ -5,6 +5,7 @@ using System.Collections.Generic; using System.IO; using System; using UnityEngine.Android; [XLua.LuaCallCSharp] public class SDKUtility : SingletonMonobehaviour<SDKUtility> @@ -35,6 +36,9 @@ Quick = 10, //quick SanXia = 11 //三峡(港台使用) } //权限申请回调 private Action<string, int> onPermissionCallBack; public E_ChannelPlatform ChannelPlatform { get; set; } @@ -298,23 +302,29 @@ public void MakeKeyAndVisible() { #if !UNITY_EDITOR m_Json.Clear(); m_Json["code"] = CodeU2A.MakeKeyAndVisible; SendMessageToSDK(m_Json); #endif } public void SyncClientPackageID() { #if !UNITY_EDITOR #if UNITY_ANDROID m_Json.Clear(); m_Json["code"] = CodeU2A.ClientPackage; m_Json["clientPkgID"] = VersionConfig.Get().clientPackageFlag; SendMessageToSDK(m_Json); #endif #endif } //申请Android 权限 public void RequestAndroidPermission(string permission, Action<string, int> callBack) { onPermissionCallBack += callBack; m_Json.Clear(); m_Json["code"] = CodeU2A.RequestPermission; m_Json["permission"] = permission; SendMessageToSDK(m_Json); } #endregion @@ -583,7 +593,14 @@ case CodeA2U.ExternalStorage: DeviceRootPath = _json["path"].ToString(); break; case CodeA2U.PermissionCallBack: { var state = (int)_json["state"]; var permission = (string)_json["permission"]; onPermissionCallBack?.Invoke(permission, state); onPermissionCallBack = null; break; } case CodeA2U.FreePlatformInitOk: if (onFreePlatformInitOk != null) @@ -731,6 +748,12 @@ * 触发了退出游戏逻辑, 打开二次确认界面 */ public const int ExitGame = 7; /** * 权限申请结果 */ public const int PermissionCallBack = 8; #endregion #region 自由sdk_code System/GeneralConfig/ConstDefine.cs
@@ -6,4 +6,11 @@ public const string LastModified = "Last-Modified";//文档的最后改动时间 public const string AcceptRanges = "Accept-Ranges";//是否支持范围请求 public const string Range = "Range";//请求范围 } //Android 动态申请的权限列表 public static class AndroidPermissions { public const string RECORD_AUDIO = "android.permission.RECORD_AUDIO"; //录音 } System/Voice/VoiceRecorder.cs
@@ -4,6 +4,7 @@ using UnityEngine.EventSystems; using System; using Snxxz.UI; using UnityEngine.Android; public class VoiceRecorder : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { @@ -33,6 +34,27 @@ StopRecord(); } //检查是否有录音权限 public bool HasRecordAudioPermission() { if (Application.platform == RuntimePlatform.Android) { if (Permission.HasUserAuthorizedPermission(AndroidPermissions.RECORD_AUDIO)) return true; else { SDKUtility.Instance.RequestAndroidPermission(AndroidPermissions.RECORD_AUDIO, (per, state) => { if (per == AndroidPermissions.RECORD_AUDIO && state == SDKUtility.CallBackState.Error) //权限申请被拒绝,并且不再提示 SysNotifyMgr.Instance.ShowTip("NoPerRecordAudio"); }); return false; } } return true; } public void OnPointerDown(PointerEventData eventData) { if (SpeechTranslate.Instance.busy || VoiceCodec.IsBusy) @@ -45,7 +67,8 @@ { return; } if (!HasRecordAudioPermission()) return; overTime = DateTime.Now + new TimeSpan(SpeechTranslate.AUDIO_TIMELIMIT * TimeSpan.TicksPerSecond); AudioListener.volume = 0f; cacheCoroutine = StartCoroutine(Co_StartRecord());