Android 藍牙通信——AndroidBluetoothManager

Johnny03Y 7年前發布 | 6K 次閱讀 安卓開發 Android開發 移動開發

 

To get a Git project into your build:

Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency

dependencies {
        compile 'com.github.kongqw:AndroidBluetoothManager:1.0.0'
}

AndroidBluetoothManager

效果圖

PNG

GIF

基礎功能

添加權限

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

初始化

mBluetoothManager = new BluetoothManager();

打開藍牙

mBluetoothManager.openBluetooth();

關閉藍牙

mBluetoothManager.closeBluetooth();

添加藍牙開關狀態的監聽

mBluetoothManager.setOnBluetoothStateListener(this);
/**
 * 正在關閉藍牙的回調
 */
@Override
public void onBluetoothStateTurningOff() {
    // TODO
}

/**
 * 藍牙關閉的回調
 */
@Override
public void onBluetoothStateOff() {
    // TODO
}

/**
 * 正在打開藍牙的回調
 */
@Override
public void onBluetoothStateTurningOn() {
    // TODO
}

/**
 * 藍牙打開的回調
 */
@Override
public void onBluetoothStateOn() {
    // TODO
}

移除藍牙開關狀態的監聽

mBluetoothManager.removeOnBluetoothStateListener();

設置藍牙可見

startActivity(mBluetoothManager.getDurationIntent(0));

獲取藍牙名稱

mBluetoothManager.getName()

修改藍牙名稱

mBluetoothManager.setName(newName);

掃描附近的藍牙設備

mBluetoothManager.discovery();

添加掃描藍牙設備的監聽

mBluetoothManager.setOnDiscoveryDeviceListener(this);
/**
 * 開始掃描附近藍牙設備的回調
 */
@Override
public void onDiscoveryDeviceStarted() {
    // TODO
}

/**
 * 掃描到附近藍牙設備的回調
 *
 * @param device 藍牙設備
 */
@Override
public void onDiscoveryDeviceFound(BluetoothDevice device) {
    // TODO
}

/**
 * 掃描附近藍牙設備完成的回調
 */
@Override
public void onDiscoveryDeviceFinished() {
    // TODO
}

移除掃描藍牙設備的監聽

mBluetoothManager.removeOnDiscoveryDeviceListener();

服務端

初始化

mBluetoothService = new BluetoothService() {

    @Override
    protected UUID onSecureUuid() {
        // TODO 設置自己的UUID
        return UUID_SECURE;
    }

    @Override
    protected UUID onInsecureUuid() {
        // TODO 設置自己的UUID
        return UUID_INSECURE;
    }
};

等待客戶端連接

mBluetoothService.start();

斷開連接/釋放資源

mBluetoothService.stop();

添加藍牙連接的監聽

mBluetoothService.setOnServiceConnectListener(new OnServiceConnectListener() {
    @Override
    public void onConnectListening() {
        // TODO
    }

    @Override
    public void onConnectSuccess(BluetoothDevice device) {
        // TODO
    }

    @Override
    public void onConnectFail(Exception e) {
        // TODO
    }

    @Override
    public void onConnectLost(Exception e) {
        // TODO
    }
});

發送消息

mBluetoothService.send(chatText);

添加消息收發的監聽

mBluetoothClient.setOnMessageListener(this);
/**
 * 藍牙發送了消息
 *
 * @param message 發送的消息
 */
@Override
public void onSend(String message) {
    // TODO
}

/**
 * 藍牙接收到消息
 *
 * @param message 接收的消息
 */
@Override
public void onRead(String message) {
    // TODO
}

客戶端

初始化

mBluetoothClient = new BluetoothClient() {
    @Override
    protected UUID onSecureUuid() {
        // TODO 設置自己的UUID
        return UUID_SECURE;
    }

    @Override
    protected UUID onInsecureUuid() {
        // TODO 設置自己的UUID
        return UUID_INSECURE;
    }
};

藍牙連接(安全)

mBluetoothClient.connect(mBluetoothDevice, true);

藍牙連接(不安全)

mBluetoothClient.connect(mBluetoothDevice, false);

斷開連接/釋放資源

mBluetoothClient.stop();

添加藍牙連接的監聽

mBluetoothClient.setOnClientConnectListener(new OnClientConnectListener() {
    @Override
    public void onConnecting() {
        // TODO
    }

    @Override
    public void onConnectSuccess(BluetoothDevice device) {
        // TODO
    }

    @Override
    public void onConnectFail(Exception e) {
        // TODO
    }

    @Override
    public void onConnectLost(Exception e) {
        // TODO
    }
});

發送消息

mBluetoothClient.send(chatText);

添加消息收發的監聽

mBluetoothClient.setOnMessageListener(this);
/**
 * 藍牙發送了消息
 *
 * @param message 發送的消息
 */
@Override
public void onSend(String message) {
    // TODO
}

/**
 * 藍牙接收到消息
 *
 * @param message 接收的消息
 */
@Override
public void onRead(String message) {
    // TODO
}

 

 

 

 本文由用戶 Johnny03Y 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!