1***@163.com
1***@163.com
  • 发布:2020-03-15 11:58
  • 更新:2020-03-15 11:58
  • 阅读:987

更新2.6.5版本以后各位的蓝牙模块还能使用吗?

分类:uni-app

详细问题描述

 使用真机调试 手机型号  华为 nova youth   
 Android版本8.0.0  

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]

重现步骤

[步骤]

[结果]

[期望]

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号]

[windows版本号]

[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
app
[运行端版本号]
2.6.5
[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
HBuilderX创建
[编译模式是老模板模式还是新的自定义组件模式?]
编译版本为 2.6.5

App运行环境说明

[Android版本号]
Android版本8.0.0
[iOS版本号]

[手机型号]
华为 nova youth
[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
//address=""搜索蓝牙//address=设备mac地址,自动配对给出mac地址的设备
function searchDevices(address) {
//注册类
var main = plus.android.runtimeMainActivity();
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
var BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice");
var BAdapter = BluetoothAdapter.getDefaultAdapter();
console.log("开始搜索设备");
var filter = new IntentFilter();
var bdevice = new BluetoothDevice();
var on = null;
var un = null;
var vlist1 = document.getElementById('list1'); //注册容器用来显示未配对设备
vlist1.innerHTML = ''; //清空容器
var vlist2 = document.getElementById('list2'); //注册容器用来显示未配对设备
vlist2.innerHTML = ''; //清空容器
var button1 = document.getElementById('bt1');
button1.disabled=true;
button1.value='正在搜索请稍候';
BAdapter.startDiscovery(); //开启搜索
var receiver;
receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
onReceive: function(context, intent) { //实现onReceiver回调函数
plus.android.importClass(intent); //通过intent实例引入intent类,方便以后的‘.’操作
console.log(intent.getAction()); //获取action
if(intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED"){
main.unregisterReceiver(receiver);//取消监听
button1.disabled=false;
button1.value='搜索设备';
console.log("搜索结束")
}else{
BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//判断是否配对
if (BleDevice.getBondState() == bdevice.BOND_NONE) {
console.log("未配对蓝牙设备:" + BleDevice.getName() + ' ' + BleDevice.getAddress());
//参数如果跟取得的mac地址一样就配对
if (address == BleDevice.getAddress()) {
if (BleDevice.createBond()) { //配对命令.createBond()
console.log("配对成功");
var li2 = document.createElement('li'); //注册
li2.setAttribute('id', BleDevice.getAddress()); //打印机mac地址
li2.setAttribute('onclick', 'print(id)'); //注册click点击列表进行打印
li2.innerText = BleDevice.getName();
vlist2.appendChild(li2);
}

            } else {    
                if(BleDevice.getName() != on ){ //判断防止重复添加    
                var li1 = document.createElement('li'); //注册    
                li1.setAttribute('id', BleDevice.getAddress()); //打印机mac地址    
                li1.setAttribute('onclick', 'searchDevices(id)'); //注册click点击列表进行配对    
                on = BleDevice.getName();    
                li1.innerText = on;    
                vlist1.appendChild(li1);    

                }    

            }    
        } else {    
            if(BleDevice.getName() != un ){ //判断防止重复添加    
            console.log("已配对蓝牙设备:" + BleDevice.getName() + '    ' + BleDevice.getAddress());    
            var li2 = document.createElement('li'); //注册    
            li2.setAttribute('id', BleDevice.getAddress()); //打印机mac地址    
            li2.setAttribute('onclick', 'print(id)'); //注册click点击列表进行打印    
            un = BleDevice.getName();                   
            li2.innerText = un;    
            vlist2.appendChild(li2);}    
        }}    

    }    
});    

filter.addAction(bdevice.ACTION_FOUND);    
filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);    
filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);    
filter.addAction(BAdapter.ACTION_STATE_CHANGED);    

main.registerReceiver(receiver, filter); //注册监听    

}

var device = null,
BAdapter = null,
BluetoothAdapter = null,
uuid = null,
main = null,
bluetoothSocket = null;

function print(mac_address) {
if (!mac_address) {
mui.toast('请选择蓝牙打印机');
return;
}

main = plus.android.runtimeMainActivity();    
BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");    
UUID = plus.android.importClass("java.util.UUID");    
uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");    
BAdapter = BluetoothAdapter.getDefaultAdapter();    
device = BAdapter.getRemoteDevice(mac_address);    
plus.android.importClass(device);    
bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);    
plus.android.importClass(bluetoothSocket);    

if (!bluetoothSocket.isConnected()) {    
    console.log('检测到设备未连接,尝试连接....');    
    bluetoothSocket.connect();    
}    

console.log('设备已连接');    

if (bluetoothSocket.isConnected()) {    
    var outputStream = bluetoothSocket.getOutputStream();    
    plus.android.importClass(outputStream);    
    var string = "打印测试\r\n";    
    var bytes = plus.android.invoke(string, 'getBytes', 'gbk');    
    outputStream.write(bytes);    
    outputStream.flush();    
    device = null //这里关键    
    bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误    

}    

}
[App安装包或H5地址]

[可重现代码片段]
连接蓝牙js来自于
https://ask.dcloud.net.cn/article/id-643__page-2 文章

联系方式

[QQ]
[微信] 13388350783

2020-03-15 11:58 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复