蓝牙 配对 android,Android蓝牙工具类:连接、配对、传输

/**

* Created by XingAijian

* Date: 2019/6/12_17:23

*

* 蓝牙工具类

*/

public class BTUtils extends Activity {

private final static String MY_UUID = "00001101-0000-1000-8000-00805F9B34FB"; //SPP服务UUID号

public static BluetoothDevice _device = null; //蓝牙设备

public static BluetoothSocket _socket = null; //蓝牙通信socket

public static BluetoothAdapter _bluetooth = BluetoothAdapter.getDefaultAdapter(); //获取本地蓝牙适配器,即蓝牙设备

public static List bluetoothDeviceList = new ArrayList<>();

public static InputStream is; //输入流,用来接收蓝牙数据

public static int fingerprintFunction = 0;

public static btSendCallBack btSendCallBack = null;

public static OutputStream os = null;

public static boolean bThread = false;

public static String linkBTMac = "";

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

/**

* 打开蓝牙

*/

public static void startBth() {

//如果打开本地蓝牙设备不成功,提示信息,结束程序

if (_bluetooth == null) {

Toast.makeText(MyApplication.myApplication, "无法打开手机蓝牙,请确认手机是否有蓝牙功能!", Toast.LENGTH_LONG).show();

return;

}

// 设置设备可以被搜索

new Thread() {

public void run() {

/*隐式打开蓝牙*/

if (_bluetooth.isEnabled() == false) {

_bluetooth.enable();

}

}

}.start();

}

/**

* 连接

* address :mac 地址

*/

public static void linkBT(String address, btDataCallBack btDataCallBack) {

Log.e("linkBT", "address" + address);

_device = _bluetooth.getRemoteDevice(address);

try {

_socket = _device.createRfcommSocketToServiceRecord(UUID.fromString(MY_UUID));

} catch (IOException e) {

Toast.makeText(MyApplication.myApplication, "连接失败!", Toast.LENGTH_SHORT).show();

}

//连接socket

try {

_socket.connect();

Toast.makeText(MyApplication.myApplication, "连接" + _device.getName() + "成功!", Toast.LENGTH_SHORT).show();

linkBTMac = address;

btDataCallBack.doCallBack(true);

} catch (IOException e) {

Toast.makeText(MyApplication.myApplication, "连接失败!", Toast.LENGTH_SHORT).show();

return;

}

}

/**

* 通过蓝牙传输信息

*/

public static boolean sendBT( byte[] content ) {

Log.d("getRead", "sendBT: "+ content);

try {

if (os == null){

os = _socket.getOutputStream(); //蓝牙连接输出流

}

os.write(content);

Log.d("getRead", "sendBT2: "+ content);

return true;

} catch (IOException e) {

return false;

}

}

/**

* 读取蓝牙信息

*/

public static void getRead( final btSendCallBack btSendCallBack1) {

btSendCallBack = btSendCallBack1;

try {

is = _socket.getInputStream(); //得到蓝牙数据输入流

Log.d("getRead", "得到蓝牙数据输入流 ");

} catch (IOException e) {

Toast.makeText(MyApplication.myApplication, "接收数据失败!", Toast.LENGTH_SHORT).show();

return;

}

if (bThread == false ) {

bThread = true;

readBuffer.start();

}

}

static Thread readBuffer = new Thread(){

@Override

public void run() {

super.run();

byte[] buffer = new byte[128];

Log.d("getRead12", "bThread: "+ bThread);

while (bThread) {

try {

is.read(buffer); //写入buffer,现在buffer就是我们取到的值了

Log.d("getRead12", "is: "+ ChangeTool.ByteArrToHex(buffer));

} catch (IOException e) {

e.printStackTrace();

}

}

}

};

//连接回调

public interface btDataCallBack {

void doCallBack(boolean btData);

}

//发数据接受回调

public interface btSendCallBack {

void doCallBack(int btData,int fpId);

}

/**

* 关闭蓝牙相关

*/

public static void closeBt(){

Log.d("BTUtils", "closeBt: ");

bThread = false;

if (_socket != null) {

//关闭连接socket

try {

Thread.sleep(2000);

if (is !=null){

is.close();

}

_socket.close();

_socket = null;

} catch (IOException e) {

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值