1、新建一个Unity5.6.2f1工程,导入正版Bluetooth LE for iOS tvOS and Android.unitypackage
2、用JD-GUI反编译工具查看unityandroidbluetoothlelib.jar
3、将反编译的代码拷贝出来,建立对应的文件目录,
4、在Eclipse中建立空工程,将代码文件放进去。
5、修改AndroidManifest.xml,添加蓝牙权限
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false"/>
6、将unity-classes.jar文件添加到libs目录下.这个jar文件可以从Unity导出一个Android工程中找到
7、修改其中的3处错误
(A)注释的这个
//import android.bluetooth.le.ScanSettings.Builder;
(B)
private UUID getFullBluetoothLEUUID(String uuidString)函数中UUID uuid;重定义了
(C)
public class AdRecordList类中的
this.Records.add(new UnityBluetoothLE.AdRecord(UnityBluetoothLE.this, length, type, data));
改为this.Records.add(new UnityBluetoothLE.AdRecord(length, type, data));

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++重点来了,LEKE山寨机Q9自带的didoOS6.5系统不能执行蓝牙扫描功能函数+++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
我要做的就是修好这个BUG!!!

之所以可以确定可以修好这个BUG,是因为有一款通过蓝牙控制机器人的APP装在这台山寨机上可以进行蓝牙通信

经过几天的缜密调试测试,发现那款APP也只能连接已经配对好的机器人蓝牙!!!
找到突破口!既然这货不能通过程序API扫描周围蓝牙设备,那就用它自带的系统蓝牙扫描(自带的系统蓝牙扫描还是能用的)
在程序中获取已经配对的蓝牙设备。
GOOOOOOOD!!
网上找到相关代码碎片,拿过来测试,通过!!
在private void api21Scan(List<UUID> uuids)开头添加以下代码:
//得到所有已配对的蓝牙适配器对象
Set<BluetoothDevice> devices = mBluetoothAdapter.getBondedDevices();
if(devices.size()>0){
for(Iterator iterator = devices.iterator();iterator.hasNext();){
BluetoothDevice bluetoothDevice = (BluetoothDevice) iterator.next();
//Toast.makeText(mContext, "AA>>>"+bluetoothDevice.getAddress(), Toast.LENGTH_SHORT).show();
// 给Unity发送过去
UnityBluetoothLE.this.sendDiscoveredDevice(bluetoothDevice, 0, null);
}
}

Eclipse中打包jar步骤:
项目名右键-选择Properties-勾选Is Library-Apply-OK
项目名右键-Build Project,将会在bin目录下生成一个.jar文件

最后将工程打包成一个jar文件,替换掉Unity工程中的unityandroidbluetoothlelib.jar

Unity 蓝牙插件的更多相关文章

  1. 开发unity DLL插件

    最近开发一款设备的SDK,想着要开发unity版本,怎么做呢?首先想到的就是在外部编写相关的驱动程序然后集成成几个dll作为unity的SDK使用了.So,我就开始了unity外部插件的研究之旅了. ...

  2. (转)Unity Cinemachine插件,实现单目标和多目标之间切换

    Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换*版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插件 ...

  3. 开源Unity小插件CheatConsole

    我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...

  4. 编写 Unity Editor 插件

    Editor Style Viewer 在开发过程中,我喜欢编写一些辅助的Editor插件,方便在游戏开发过程进行调试. 下面是摘自Asset Store的一个查看Unity 默认GUI样式的小工具 ...

  5. 【转】unity地形插件T4M使用帮助

    unity的地形系统在手机游戏中因为效率问题基本无法使用,只能通过T4M这个地形插件来进行优化制作.下面大概讲解一下使用流程及方法. 先中U3D里面用自带的地形系统刷出想要的地形和贴图.贴图可以大概刷 ...

  6. unity Dotween插件的简单介绍及示例代码

    unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...

  7. Unity给力插件之ShaderForge(一)

    这是一个用来制作shader的插件,也是一个很好的学习shader的工具.这个插件上手很容易,但是要用它来制作理想的Shader,需要下点功夫. 这儿先列举出基础知识,以及我的一些实践.以后我还会继续 ...

  8. Unity给力插件之MeshBaker

    这是一个用来合并网格.材质.贴图的插件. 其实网上也有一些比较详细的使用说明,但是真实操作起来时,总是有一些搞不清bug.而且,作为功能比较全的插件,在Unity版本更新时,也难免会一些不兼容的地方. ...

  9. Unity KGFMapSystem插件制作小地图

    KGFMapSystem版本:2.3 在我们开发游戏或者虚拟现实中,一般都会用到小地图,如果要我们去写小地图,可以用到unity 3d中就有一个插件,是专门开发小地图用的,这个插件就是KGFMapSy ...

随机推荐

  1. 我最喜欢的jQuery插件模板

    我使用jQuery已经有相当长的时间了,并且我会常常为它写一些插件(plugin).我尝试过用不同的方式去写,现在这个模板是我最喜欢的: 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

  2. install Mac OS on Vmware

    本文将用详尽的图文介绍如何在虚拟机中安装运行Mac OS X,只要严格地按照本教程一步步操作,即使不了解苹果电脑的读者,也能顺利地安装并运行Mac OS X. 一.准备工作 VMWare 12 Pro ...

  3. Mac下安装Pyqt

    1.安装sip brew install sip 2.安装pyqt brew install pyqt

  4. 前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误。    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected est

    前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误. Caused by: ...

  5. 【Android】解决Android横竖屏切换数据丢失问题的方法

    解决方案1:在Androidmanifest.xml的activity标签中加入android:screenOrientation="portrait",可以屏蔽横屏 <ac ...

  6. CI框架 -- 核心文件 之 Output.php(输出类文件)

    CI输出类Output.php的功能是将最终web页面发送给浏览器,这里面的东西可能是你用的最少的.你使用装载器加载了一个视图文件, 这个视图文件的内容会自动传递给输出类对象, 然后呢,在方法执行完毕 ...

  7. Winform控件学习笔记【第六天】——TreeView

    TreeView控件用来显示信息的分级视图,如同Windows里的资源管理器的目录.TreeView控件中的各项信息都有一个与之相关的Node对象.TreeView显示Node对象的分层目录结构,每个 ...

  8. ubuntu下gedit和vim输入中文和中文显示

    安装和配置VIM,参考   http://jingyan.baidu.com/album/046a7b3efd165bf9c27fa915.html?picindex=4 在home/你的用户名 这个 ...

  9. 【发包工具】http多线程发包工具

    [发包工具]http多线程发包工具 使用方法:输入地址,发送的内容,线程数,等待时间,每个线程发送的次数,GET/POST请求. 源代码 package com.xmxkkk.httptest; im ...

  10. svn管理码云项目

    1.设置SVN管理项目 进入项目->管理 2.获取SVN地址 3.SVN添加项目.单击右键 -> 检出->版本库Url(这里填写svn地址)