<template> <view class="img"> <image src="https://img.51miz.com/Element/00/77/75/70/b433028a_E777570_00fd6980.png" class="img-center"></image> </view> <view class='content_box'> <view class="pay_box"> <button class="btn" type="primary" @click="initBlue">开启蓝牙</button> <button class="btn" type="primary" @click="findBlue">搜寻附近蓝牙</button> </view> <view> <scroll-view scroll-y class="box"> <view class="itemContent" v-for="(item, index) in bleDevs" :key="index" @click="connectBlue(item)"> <view> <text>设备名称: {{ item.name }}</text> </view> <view> <text>设备id: {{ item.deviceId }}</text> </view> </view> </scroll-view> </view> </view> </template> <script> export default { data() { return { bleDevs: [], // 蓝牙列表 }; }, methods: { // 初始化蓝牙设备 initBlue() { let vm = this; uni.openBluetoothAdapter({ // 初始化蓝牙、判断是否开启蓝牙 success: function (res) { vm.getState(); }, fail: res => { uni.showModal({ title: '提示', content: '蓝牙初始化失败,请到设置打开蓝牙', showCancel: false }); } }); }, // 获取本机蓝牙适配器状态 getState() { uni.getBluetoothAdapterState({ // 获取本机蓝牙适配器状态 success(res) { uni.showModal({ title: '提示', content: '蓝牙初始化成功,获取本机蓝牙适配器状态成功', showCancel: false }); }, fail(err) { uni.showModal({ title: '提示', content: '查看手机蓝牙是否打开', showCancel: false }); } }); }, // 获取蓝牙设备信息 findBlue() { var vm = this; uni.showLoading({ title: '正在加载', icon: 'loading', }); uni.startBluetoothDevicesDiscovery({ interval: 0, // 上报设备的间隔 allowDuplicatesKey: false, // 是否允许重复上报 success: (res) => { // 获取所有的蓝牙设备列表 vm.getBlue(); }, fail: err => { uni.showToast({ title: '搜索蓝牙设备失败', icon: 'none', duration: 1000 }); } }); }, // 获取设备列表 getBlue() { var vm = this; setTimeout(() => { uni.hideLoading(); uni.getBluetoothDevices({ success: function (res) { // 过滤掉name为未知设备的设备 var bluetoothArr = []; res.devices.forEach((obj) => { if (obj.name !== "未知设备") { bluetoothArr.push(obj); } }); vm.bleDevs = bluetoothArr; }, fail: function () { uni.showToast({ title: '搜索蓝牙设备失败', icon: 'none', duration: 1000 }); }, }); }, 2000); }, // 连接蓝牙设备 connectBlue(item) { let vm = this; uni.showLoading({ title: "连接中,请稍等", mask: true, }); uni.createBLEConnection({ deviceId: item.deviceId, // 设备的 id success(res) { console.log("连接蓝牙成功", res); uni.setStorageSync("deviceId", item.deviceId); // 存储设备ID uni.hideLoading(); uni.showToast({ title: item.name + "蓝牙连接成功", icon: "none", duration: 1000 }); // 跳转到打印页面 uni.navigateTo({ url: '/pages/printTicket/printTicket', }); }, fail(res) { uni.hideLoading(); uni.showToast({ title: item.name + "蓝牙连接失败", icon: "none", }); } }); }, } }; </script> <style lang="scss" scoped> .img { width: 150px; height: 150PX; margin: 0 auto; background-color: #007aff; } .img-center { width: 100%; height: 100%; } .blueList { width: 100%; height: 100px; background-color: #ffd5de; } .itemContent { width: 80%; height: 60px; border-radius: 10px; background-color: #4095e5; text-align: center; margin: 15px auto; line-height: 30px; } .content_box { width: 100%; .pay_box { display: flex; flex-wrap: wrap; justify-content: space-evenly; margin-top: 30rpx; } .btn { background-color: #007aff; box-sizing: border-box; font-size: 26rpx; border-radius: 30rpx; width: 28%; margin-top: 10px; } } </style>