抱歉 我发了很问多问题,我觉得我想法跟主管和客户有出入,所以想在边讨论
我要提供 Android SDK(包含 so(dll)) 在 Unity 上,然后我先阐述一下我在
Android 上的做法,基本上我就是参考官方网站的API,写个 Service 然后做
BLE Gatt connect,会得到 client for GATT,这service 会一直得到从蓝芽底层
pass 上来的 data。而我也可以方便的用GATT物件来对BLE操作。
而客户想要在 Unity 去存取 dll(so),客户和主管觉得在 so 可以直接做BLE connect
(虽然他们经验值比我高但也没实际弄过),然后想要直接在 Unity call 这 dll(so)
做连线处理然后要 data,我参考了 Google release 的 GVR Unity sdk ,看到他们的
确有在 dll(so)读取,但他们也只是读取 "data"例如 acc, gyro , orientation,
status,在手机上的 Dardream Service(未公开程式码),我觉得是用 java class去写
的,里面包含BLE连线之类,之所以这样猜测是,他们在 release 这个 service 时我就
有反组译大致看到一些蓝芽API,他们透过 class 得到BLE data 后,再塞入到so(dll)
所以 Unity 上面才可以直接存取 data 例如 ACC Gyro 连线状态等等。 如果依照
客户和主管要连连线操作以及去接蓝芽资料的 callback 都在 JNI 层做我是觉得
满难的,甚至我在网络上根本也没看到有人这样的做法阿(或许有?)
最后我是想实作一个,提供 .jar(service & ble scanner) 和 so,让客户的activity
注册到我的 class内,连到 service。然后建立连线后,data会一直存到 so
客户直接在 Unity 存取这 so 就好。
不知道版有有没有啥建议呢 感谢 orz