Unity实现Android源生平台蓝牙BLE4.0数据传输(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15507559/article/details/79148750

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。虽然是游戏引擎,不过现在目前还有很多用来做AR、VR、MR等内容.这样就少不了要与智能硬件配合交互,智能硬件由于便利性都大多数采用无线连接,无线连接主流一般是WIFI、Bluetooth蓝牙等方式.其中蓝牙BLE4.0以更省电、成本低、3毫秒低延迟、超长有效连接距离、AES-128加密等优势,取得大家的青睐,今天就来说说用Unity实现BLE4.0的数据传输.


Unity想要使用Android源生控件或者功能首先我们要来了AndroidJavaClass、AndroidJavaObject、AndroidJavaProxy三个类.

其中 AndroidJavaClass 一般调用静态函数跟获取静态字段使用这个,如果做过unity 跟android交互的朋友们应该见过这句

unityActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");

这里先new了一个 AndroidJavaClass对象然后调用GetStatic获取静态字段currentActivity

AndroidJavaObject 一般是Java实例对象用来调用Java的实例函数跟获取实例字段.

比如 我要建立一个Java的String对象

 AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", text); 

我再获取这个String对象的字符长度

var sLenth = javaString.Call<int>("length");

AndroidJavaProxy 是用来实现Java的接口interface. 这里引用Unity官方文档样例

private static DateTime selectedDate = DateTime.Now; 
 public class DateCallback : AndroidJavaProxy
 {
        public DateCallback() :base("android.app.DatePickerDialog$OnDateSetListener") { }

        void onDateSet(AndroidJavaObject view, int year, int monthOfYear, int dayOfMonth)
        {
            selectedDate = new DateTime(year, monthOfYear + 1, dayOfMonth);
        }
 }

实现接口以后Android 调用接口函数的时候会调用Unity端的接口实现.但函数名应该保持与Java接口函数一致.


其实能使用AndroidJavaClassAndroidJavaObject 类已经能使用Android 大部分功能.


下篇我们来写具体的BLE4.0蓝牙数据传输实现.

有问题的朋友可以关注我的微信订阅号给我留言

Unity实现Android源生平台蓝牙BLE4.0数据传输(二)

Unity实现Android源生平台蓝牙BLE4.0数据传输(三)

猜你喜欢

转载自blog.csdn.net/qq_15507559/article/details/79148750