时间:2019-05-07 来源:小程序工厂
index.js
const app = getApp()
Page({
data: {
list: []
},
startConnect() {
// 开始初始化蓝牙
wx.openBluetoothAdapter({
success: (res) => {
console.log('-----蓝牙初始化成功-----')
this.getBluetoothAdapterState()
},
fail: () => {
console.log('--------蓝牙初始化失败--------')
}
})
wx.onBluetoothAdapterStateChange(({ available }) => {
// 监听蓝牙状态
if (available) {
this.getBluetoothAdapterState()
}
})
},
getBluetoothAdapterState() {
// 获取本机蓝牙适配器状态
wx.getBluetoothAdapterState({
success: ({ discovering, available }) => {
if (available) {
this.startBluetoothDevicesDiscovery()
} else {
wx.showToast({
title: '设备未开启蓝牙连接',
icon: 'none',
duration: 2000
})
}
}
})
},
startBluetoothDevicesDiscovery() {
// 开始搜寻附近的蓝牙外围设备
wx.showLoading({
'title': '正在搜索蓝牙...'
})
wx.startBluetoothDevicesDiscovery({
services: [],
success: ({ isDiscovering }) => {
if (isDiscovering) {
this.onBluetoothDeviceFound()
} else {
this.getBluetoothAdapterState()
}
},
fail: (error) => {
console.log(error, 'startBluetoothDevicesDiscovery error info')
}
})
},
onBluetoothDeviceFound() {
// 监听寻找到新设备的事件
wx.onBluetoothDeviceFound(({ devices }) => {
let item = devices[0],
{ name } = devices[0];
if (item && name != '') {
this.getBluetoothDevices()
}
})
},
getBluetoothDevices(){
// 获取在蓝牙模块生效期间所有已发现的蓝牙设备。包括已经和本机处于连接状态的设备。
wx.getBluetoothDevices({
success: ({ devices})=>{
let list = devices.filter((item)=>{
return item.name != '未知设备'
})
this.setData({
list: list
})
console.log(list,'全部设备列表')
},
fail:()=>{
}
})
},
onLoad: function () {
this.startConnect()
},
})
index.wxml
{{index}}:{{item.name}}
安卓几,,在getBluetooth有扫描到设备吗?? 方便贴代码吗?,
安卓6.0,可以扫描到其他设备,未连接前可以获取该设备,连接之后获取不到。
wx.onBluetoothDeviceFound(({ devices }) => {let item = devices[0],{ name } = devices[0];
if (item && name != '') {this.getBluetoothDevices()}})},你这样写,它会扫到一个新设备去获取一次,不会很耗性能吗??
连接之后 其他蓝牙设备能获取 还是 全都获取不到了
是的,现在还没考虑这些性能问题,后期会修改。其他蓝牙设备可以获取,只有已连接设备获取不到。未连接时可以获取到该设备,连接蓝牙设备后,getBluetoothDevices 就获取不到了。
打开定位了吗??
定位?GPS?蓝牙是打开的。
定位,,Gps
是打开的,不过这个问题跟GSP有啥关系啊。
你的问题,我这边复现不出来,。。。。