少年修仙传客户端代码仓库
hch
2021-01-21 f94e48380ec9c447dec6bd1dcffac12a5e756029
Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/snxxz_scripts
3个文件已修改
65 ■■■■■ 已修改文件
Core/SDK/SDKUtility.cs 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/GeneralConfig/ConstDefine.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Voice/VoiceRecorder.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | 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());