更新记录

1.0.0(2022-10-26)

  1. 获取已配对设备
  2. 连接蓝牙
  3. 传输指令打印
  4. 关闭蓝牙
  5. 优化速度

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
app-vue app-nvue
钉钉小程序 快手小程序 飞书小程序 京东小程序
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

安卓设备经典蓝牙指令打印

设计

  • 一、使用经典蓝牙的指令打印(打印机支持不同指令,安卓设备不受限制)
  • 二、进入页面获取已配对设备,只有1个设备自动连接,多个设备点击连接
  • 三、熄屏或退出页面断开蓝牙连接(如果多个页面,需要全局存储配对设备)

环境

  • uniapp vue2 JS,(安卓设备的JS执行,不限于uniapp,写法有所差异)

实现

    1. 获取已配对设备,在onLoad中执行
function initPrinter () {
  var deviceList = [];
  var main = plus.android.runtimeMainActivity();
  var Context = plus.android.importClass("android.content.Context");
  var BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
  plus.android.importClass(BManager); 
  var BAdapter = BManager.getAdapter();
  plus.android.importClass(BAdapter); 
  var lists = BAdapter.getBondedDevices();
  plus.android.importClass(lists);
  var iterator = lists.iterator();
  plus.android.importClass(iterator);
  while (iterator.hasNext()) {
    var d = iterator.next();
    plus.android.importClass(d);
    var temp = {
      name: d.getName(),
      address: d.getAddress(),
      status: d.getBondState(),
      uuids: d.getUuids(),
      op: d
    };
    deviceList.push(temp);
  }
  return deviceList;
}
    1. 连接蓝牙设备,在onShow或点击时执行
function connectBluetooth (dev) {
  var main = plus.android.runtimeMainActivity();
  var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
  var UUID = plus.android.importClass("java.util.UUID");
  var uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
  var BAdapter = BluetoothAdapter.getDefaultAdapter();
  var device = BAdapter.getRemoteDevice(dev.address);
  plus.android.importClass(device);
  this.bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
  plus.android.importClass(this.bluetoothSocket);
  this.bluetoothSocket.connect()
  return this.bluetoothSocket.isConnected()
}
    1. 指令打印,如果缓慢,可联系我vx youyi4474
function printSomething (zplCode) {
  var outputStream = this.bluetoothSocket.getOutputStream();
  plus.android.importClass(outputStream);
  var arrayBuffer = plus.android.invoke(zplCode,'getBytes','gbk')
  outputStream.write(arrayBuffer);
  outputStream.flush();
  return arrayBuffer
}
    1. 断开蓝牙,在onHide和onBackPress执行
closeBluetooth () {
  if (!this.bluetoothSocket) return true
  this.bluetoothSocket.close();
  return !this.bluetoothSocket.isConnected()
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.BLUETOOTH android.permission.ACCESS_FINE_LOCATION

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

未采集数据、未使用服务器地址、用途是安卓经典蓝牙打印

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无广告,好用请前往github一个star,有惊喜!有问题可以加QQ群互相套路142111169

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问