Unity 与安卓的那些事

Unity 与安卓

该篇文章主要是从我目前项目中所涉及的一些安卓设备或数据调用的问题,可能会很浅显;

获取安卓设备的SN串号(关于设备唯一标识符)

通常情况下,如果我们想要获取安卓设备的唯一标识用来识别设备或者做设备管理的话,需要用一个唯一且不变的标识号码;提到唯一标识号码,有人会立刻想到SystemInfo 类 (了解更多SystemInfo类:SystemInfo蛮牛): SystemInfo.deviceUniqueIdentifier ;
但是需要注意的是,通过SystemInfo获取到的唯一标识符是会改变的,没办法用来识别设备;该序列号是根据主板序列号.BIOS序列号.cpu信息.硬盘序列号.操作系统信息 来进行加密或者其他算法得出的,也许是某个东西会随着时间而改变 导致整个获取的标识符是会改变的。
接下来介绍两种安卓设备的可用于标识的方法和标识符;

  1. SN串号:
    获取方法:该方法可以获取大部分安卓手机的SN串号;
 AndroidJavaObject jo = new AndroidJavaObject("android.os.Build");
 string serial = jo.GetStatic<string>("SERIAL");

可以参考比较完整的写法:

 void getSerialNo()
    {
        if (Application.platform == RuntimePlatform.Android)
        { 
        var UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaClass osBuild = new AndroidJavaClass("android.os.Build");
            serialNo = osBuild.GetStatic<string>("SERIAL");
        }
         else
        {
            serialNo = "";
        }
    }

2、IMEI号或者MEID号码;有的手机双卡的话会有两个IMEI号码,不过对于手机来说IMEI号码及MEID是唯一且不变的,我们可以用来识别并管理设备;附上获取方法:

 /// <summary>
    /// 获取设备IMEI及MEID码
    /// </summary>
    void getDeviceIDs()
    {
        var UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        var context = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        var telephoneyManager = context.Call<AndroidJavaObject>("getSystemService", "phone");
        imei0 = telephoneyManager.Call<string>("getImei", 0);
        imei1 = telephoneyManager.Call<string>("getImei", 1);
        meid = telephoneyManager.Call<string>("getMeid");
    }
获取手机的蓝牙信息

贴出的代码主要是判断当前手机蓝牙是否已经打开

 public bool isBluetoothEnabled()
    {
        bool isBTEnabled = false;
        var UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        var context = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        var bluetoothManager = context.Call<AndroidJavaObject>("getSystemService", "bluetooth");
        if (bluetoothManager == null)
        {
            // Debug.Log( "isBluetoothEnabled bluetoothManager Get ...Failed");
            return isBTEnabled;
        }
        else
        {
            //Debug.Log( "isBluetoothEnabled bluetoothManager Get ...Succeed");
            var bluetoothAdaptor = bluetoothManager.Call<AndroidJavaObject>("getAdapter");
            if (bluetoothAdaptor == null)
            {
                return isBTEnabled;
            }
            else
            {
                isBTEnabled = bluetoothAdaptor.Call<bool>("isEnabled");
                return isBTEnabled;
            }
        }
    }
安卓设备的音量控制

可以参考以下链接:关于安卓音量控制
我在这里只贴出手机媒体音量的控制

 private const string currentVolume = "getStreamVolume";//当前音量
 private static readonly int STREAM_MUSIC = 3;
  private static readonly int ADJUST_LOWER = -1;
    private static readonly int ADJUST_SAME = 0;
    private static readonly int ADJUST_RAISE = 1;
    private static AndroidJavaObject audioManager;
     void Awake()
    {
#if UNITY_ANDROID && !UNITY_EDITOR
        AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        audioManager = currentActivity.Call<AndroidJavaObject>("getSystemService", new AndroidJavaObject("java.lang.String", "audio"));
#endif
    }
    //调节音量大小
     public static void AdjustVolume(int volume)
    {
        var UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        var context = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        var audioManager = context.Call<AndroidJavaObject>("getSystemService", "audio");
        audioManager.Call("adjustStreamVolume", STREAM_MUSIC, volume, 0);
    }
    //直接设置媒体音量
     public static void SetVolume(int volume)
    {
        var UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        var context = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        var audioManager = context.Call<AndroidJavaObject>("getSystemService", "audio");
        audioManager.Call("setStreamVolume", STREAM_MUSIC, volume, 0);
    }

整理有点乱,不过对于我来说类似笔记,可以常常拿出来翻看巩固,也希望能帮助到一些人

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值