Android蓝牙通信——与蓝牙模块进行通信传输数据

android蓝牙开发—与蓝牙模块进行通信数据传输(蓝牙串口)

需要与蓝牙模块进行通信。
首先,需要获得一个BluetoothAdapter,可以通过BluetoothAdapter.getDefaultAdapter()获得系统默认的蓝牙适配器,也可以自己指定(没有试过)。然后检查手机的蓝牙是否打开,如果没有,通过enable()方法打开。
完成这些必要的设置后,就可以正式开始与蓝牙模块进行通信了:


BluetoothChatService类做所有蓝牙相关的工作,建立和管理蓝牙连接其他装置。它有一个线程,监听传入连接,连接装置,和一个执行数据传输。

package com.firemonitoringsystem;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;

public class BluetoothChatService {
// 调试
private static final String TAG = “BluetoothChatService”;
private static final boolean D = true;

// 当创建服务器时记录套接字
private static final String NAME = "RetimeFragment";

// UUID
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
public static StringBuffer hexString = new StringBuffer();
// 适配器
private final BluetoothAdapter mAdapter;
private final Handler mHandler;
private AcceptThread mAcceptThread;
private ConnectThread mConnectThread;
private ConnectedThread mConnectedThread;
private int mState;
//常数,指示当前的连接状态
public static final int STATE_NONE = 0;       // 当前没有可用的连接
public static final int STATE_LISTEN = 1;     // 现在侦听传入的连接
public static final int STATE_CONNECTING = 2; // 现在开始传出联系
public static final int STATE_CONNECTED = 3;  // 现在连接到远程设备
public static boolean bRun = true;
/**
 * 构造函数。准备一个新的RetimeFragment会话。
 * @param context  用户界面活动的背景
 * @param handler 一个处理程序发送信息到界面
 */
public BluetoothChatService(Context context, Handler handler) {
    mAdapter = BluetoothAdapter.getDefaultAdapter();
    mState = STATE_NONE;
    mHandler = handler;
}

/**
 * 设置当前状态的连接
 * @param state  整数定义当前连接状态
 */
private synchronized void setState(int state) {
    if (D) Log.d(TAG, "setState() " + mState + " -> " + state);
    mState = state;

    // 给新状态的处理程序,界面可以更新
 mHandler.obtainMessage(RetimeFragment.MESSAGE_STATE_CHANGE, state, -1).sendToTarget();
}

/*** 返回当前的连接状态。 */
public synchronized int getState() {
    return mState;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值