欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android藍(lán)牙庫(kù)FastBle的基礎(chǔ)入門使用

 更新時(shí)間:2018年07月05日 17:05:51   作者:kindem  
這篇文章主要給大家介紹了關(guān)于Android藍(lán)牙庫(kù)FastBle的基礎(chǔ)入門使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近在做物聯(lián)網(wǎng)課設(shè),過(guò)程中需要用到Android的藍(lán)牙API,奈何原生的藍(lán)牙API使用有點(diǎn)麻煩。于是上網(wǎng)搜索看有沒(méi)有好用的Android藍(lán)牙庫(kù),然后發(fā)現(xiàn)了這個(gè)寶貝,給大家分享一下。

FastBle VS 原生Android藍(lán)牙API

原生Android的藍(lán)牙API使用有點(diǎn)麻煩,要先獲取設(shè)備的藍(lán)牙適配器,接著注冊(cè)廣播來(lái)接受藍(lán)牙設(shè)備信息,用完了還需要將廣播給注銷,相對(duì)來(lái)說(shuō)有點(diǎn)麻煩。

不好封裝,可以說(shuō)是原生Android最讓人痛苦的地方,這是因?yàn)樵鶤ndroid的代碼不是很獨(dú)立,與Activity、廣播等相雜糅。市面上的藍(lán)牙庫(kù)也是少之又少,先看了看BleLib,感覺(jué)還是換湯不換藥,用起來(lái)一點(diǎn)也不簡(jiǎn)潔。

但是FastLib封裝的就很技巧,基本上能把一個(gè)操作的粒度控制在一行內(nèi),另外,代碼也無(wú)需與線程、通知之類的打交道,庫(kù)中已經(jīng)幫我們把這些復(fù)雜的東西都做完了。

FastBle的Github項(xiàng)目地址在這,大家可以看看:[FastBle - GitHub](https://github.com/Jasonchenlijian/FastBle  (本地下載

它的文檔也相對(duì)比較完整,大家可以查看官方文檔來(lái)使用它:FastBle - Document

FastBle的使用

0x00 申明權(quán)限

只要使用到了藍(lán)牙,申明權(quán)限是必不可少的,F(xiàn)astBle需要的權(quán)限如下:

<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" />

這里要注意一點(diǎn),如果Android版本高于6.0,用戶還需要打開位置信息(不光要位置權(quán)限,還需要打開位置信息)才能通過(guò)藍(lán)牙進(jìn)行掃描。

0x01 初始化與全局配置

初始化需要在庫(kù)中任何函數(shù)被調(diào)用前執(zhí)行,由于庫(kù)使用的是單例模式,只需要初始化一次,在哪里都能使用,建議在onCreate里執(zhí)行初始化代碼:

BleManager.getInstance().init(getApplication());

全局配置可以緊跟初始化之后執(zhí)行,當(dāng)然如果不進(jìn)行配置也沒(méi)有任何關(guān)系,每一個(gè)選項(xiàng)都有默認(rèn)值:

BleManager.getInstance()
 .enableLog(true)
 .setReConnectCount(1, 5000)
 .setSplitWriteNum(20)
 .setConnectOverTime(10000)
 .setOperateTimeout(5000);

每一項(xiàng)的詳細(xì)信息你都能在官方文檔中找到說(shuō)明

0x02 打開藍(lán)牙

使用FastBle中的BleManager類有很多種方式來(lái)打開藍(lán)牙,這里推薦使用下面這種方式,這種方式會(huì)使線程被阻塞,如果用戶不選擇是否打開藍(lán)牙,線程將會(huì)暫停執(zhí)行:

BleManager.getInstance().enableBluetooth();

0x03 掃描設(shè)備

打開藍(lán)牙之后即可掃描設(shè)備,在正式掃描之前,可以自定義掃描規(guī)則,像這樣:

BleScanRuleConfig scanRuleConfig = new BleScanRuleConfig.Builder()
 .setServiceUuids(serviceUuids) // 只掃描指定的服務(wù)的設(shè)備,可選
 .setDeviceName(true, names)  // 只掃描指定廣播名的設(shè)備,可選
 .setDeviceMac(mac)   // 只掃描指定mac的設(shè)備,可選
 .setAutoConnect(isAutoConnect) // 連接時(shí)的autoConnect參數(shù),可選,默認(rèn)false
 .setScanTimeOut(10000)  // 掃描超時(shí)時(shí)間,可選,默認(rèn)10秒;小于等于0表示不限制掃描時(shí)間
 .build();

BleManager.getInstance().initScanRule(scanRuleConfig);

在設(shè)置規(guī)則后,即可開始掃描,像這樣

BleManager.getInstance().scan(new BleScanCallBack() {
 @Override
 public void onScanStarted(boolean success) {
 // 開始掃描的回調(diào)
 }

 @Override
 public void onScanning(BleDevice bleDevice) {
 // 掃描到一個(gè)之前沒(méi)有掃到過(guò)的設(shè)備的回調(diào)
 }

 @Override
 public void onScanFinished(List<BleDevice> scanResultList) {
 // 掃描完成的回調(diào),列表里將不會(huì)有重復(fù)的設(shè)備
 }
});

這幾個(gè)回調(diào)都是安全的,將會(huì)自動(dòng)返回主線程,所以可以放心使用。

當(dāng)然,在任何地方,任何時(shí)候,你都可以直接使用取消掃描這個(gè)函數(shù)來(lái)停止掃描:

BleManager.getInstance().cancelScan();

0x04 連接設(shè)備

在掃描之后,你已經(jīng)獲取到了一個(gè)或多個(gè)BleDevice對(duì)象,你可以直接使用這些對(duì)象向目標(biāo)設(shè)備發(fā)起連接,像這樣:

BleManager.getInstance().connect(bleDevice, new BleGattCallback() {
 @Override
 public void onStartConnect() {
 // 開始連接
 }

 @Override
 public void onConnectFail(BleDevice bleDevice, BleException exception) {
  // 連接失敗
 }

 @Override
 public void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status) {
  // 連接成功,BleDevice即為所連接的BLE設(shè)備
 }

 @Override
 public void onDisConnected(boolean isActiveDisConnected, BleDevice bleDevice, BluetoothGatt gatt, int status) {
  // 連接中斷,isActiveDisConnected表示是否是主動(dòng)調(diào)用了斷開連接方法
 }
});

當(dāng)然,在官方文檔中還有很多詳細(xì)的說(shuō)明,這里只是簡(jiǎn)單介紹了一下FastBle的基本使用,了解詳情還請(qǐng)看官方文檔。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例

    Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例

    本篇文章主要介紹了Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件

    實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件

    AutoCompleteTextView組件被用在輸入框中能實(shí)現(xiàn)輸入內(nèi)容自動(dòng)補(bǔ)全的功能,類似于大家平時(shí)用Google時(shí)的輸入聯(lián)想,這里我們來(lái)用實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件,特別是實(shí)現(xiàn)郵箱地址補(bǔ)全的例子,非常實(shí)用
    2016-05-05
  • Android傳感器使用實(shí)例介紹

    Android傳感器使用實(shí)例介紹

    這篇文章主要為大家詳細(xì)介紹了Android傳感器的簡(jiǎn)單使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • 利用Android中的TextView實(shí)現(xiàn)逐字顯示動(dòng)畫

    利用Android中的TextView實(shí)現(xiàn)逐字顯示動(dòng)畫

    在安卓程序啟動(dòng)的時(shí)候,想逐字顯示一段話,每個(gè)字都有一個(gè)從透明到不透明的漸變動(dòng)畫。那如何顯示這個(gè)效果,下面一起來(lái)看看。
    2016-08-08
  • Android開發(fā)RecyclerView性能優(yōu)化之異步預(yù)加載

    Android開發(fā)RecyclerView性能優(yōu)化之異步預(yù)加載

    這篇文章主要介紹了Android開發(fā)RecyclerView性能優(yōu)化之異步預(yù)加載實(shí)現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Android開發(fā)之拼音轉(zhuǎn)換工具類PinyinUtils示例

    Android開發(fā)之拼音轉(zhuǎn)換工具類PinyinUtils示例

    這篇文章主要介紹了Android開發(fā)之拼音轉(zhuǎn)換工具類PinyinUtils,涉及Android基于pinyin4j-2.5.0.jar包文件實(shí)現(xiàn)漢字轉(zhuǎn)拼音功能的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • 規(guī)避Android開發(fā)中內(nèi)存泄漏陷阱的解決方案

    規(guī)避Android開發(fā)中內(nèi)存泄漏陷阱的解決方案

    在Android開發(fā)中,內(nèi)存泄漏是一個(gè)常見但容易被忽視的問(wèn)題,它會(huì)導(dǎo)致應(yīng)用程序占用過(guò)多的內(nèi)存資源,最終影響應(yīng)用的性能和用戶體驗(yàn),本文將深入探討Android常見的內(nèi)存泄漏問(wèn)題,并提供優(yōu)化指南,需要的朋友可以參考下
    2024-05-05
  • Android路由框架ARouter的使用示例

    Android路由框架ARouter的使用示例

    組件化或者模塊化開發(fā)模式,已逐漸成為熱浪的形式,使用這些模式可以讓我們程序更容易的擴(kuò)展、更方便的維護(hù)、更快捷的同步開發(fā)與更簡(jiǎn)單的單獨(dú)調(diào)試,而ARouter的出現(xiàn)就是讓組件間、模塊間是實(shí)現(xiàn)完全的獨(dú)立。ARouter主要解決組件間、模塊間的界面跳轉(zhuǎn)問(wèn)題。
    2021-06-06
  • 詳解Android中AsyncTask機(jī)制

    詳解Android中AsyncTask機(jī)制

    在Android當(dāng)中,提供了兩種方式來(lái)解決線程直接的通信問(wèn)題,一種是通過(guò)Handler的機(jī)制,還有一種就是今天要詳細(xì)講解的 AsyncTask 機(jī)制,對(duì)android中asynctask相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • Android 自定義加載動(dòng)畫Dialog彈窗效果的示例代碼

    Android 自定義加載動(dòng)畫Dialog彈窗效果的示例代碼

    這篇文章主要介紹了Android 自定義加載動(dòng)畫Dialog彈窗效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論