Android藍芽開發教程(一)——搜尋藍芽裝置
Android藍芽功能的開發一直是很多新手頭疼的問題,網上雖然也有很多教程貼,但大多都寫得不全面,不能讓我們真正掌握藍芽開發的基本知識。本教程主要講解搜尋藍芽裝置、藍芽裝置之間的連線和藍芽之間的通訊三個主要模組。掌握了這三個,基本就能進行簡單的藍芽開發了。
先上效果圖
介面比較簡單。主要有三個按鈕,兩個文字和一個列表。三個按鈕主要對應開啟藍芽,搜尋裝置和傳送資訊三個功能。兩個文字主要用於提示連線狀態和傳送的訊息以及獲取的訊息。列表主要展示搜尋到的藍芽裝置。原始碼在後面會提供。
要用到藍芽的功能,需要先在manifest中宣告一下藍芽的使用許可權
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
開啟藍芽裝置
BluetoothAdapter bTAdatper = BluetoothAdapter.getDefaultAdapter();
if(bTAdatper==null){
Toast.makeText (this,"當前裝置不支援藍芽功能",Toast.LENGTH_SHORT).show();
}
if(!bTAdatper.isEnabled()){
/* Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(i);*/
bTAdatper.enable();
}
//開啟被其它藍芽裝置發現的功能
if (bTAdatper.getScanMode() != BluetoothAdapter.SCAN _MODE_CONNECTABLE_DISCOVERABLE) {
Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
//設定為一直開啟
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivity(i);
}
開啟藍芽需要用到BluetoothAdapter,我們可以通過BluetoothAdapter.ACTION_REQUEST_ENABLE 提示使用者開啟,也可以bTAdatper.enable()直接開啟藍芽。
開啟藍芽後,需要設定藍芽為可發現狀態,讓其他裝置能夠搜尋到。
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
最後的引數設定為0,可以讓藍芽裝置一直處於可發現狀態。當我們需要設定具體可被發現的時間時,最多隻能設定300秒。
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
搜尋藍芽裝置
成功開啟藍芽裝置後,呼叫藍芽介面卡的startDiscovery方法就可以搜尋附近可連線的藍芽裝置。另外我們可以呼叫cancelDiscovery()來取消搜尋。
mBluetoothAdapter.startDiscovery();
mBluetoothAdapter.cancelDiscovery()
當我們開始搜尋附近藍芽裝置的時候,系統會發出三個搜尋狀態的廣播:
BluetoothAdapter.ACTION_DISCOVERY_STARTED、
BluetoothDevice.ACTION_FOUND、
BluetoothAdapter.ACTION_DISCOVERY_FINISHED。
這三個分別對應開始搜尋、搜尋到裝置、搜尋結束。因此,我們可以定義一個廣播,來獲取這些狀態。
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//避免重複新增已經繫結過的裝置
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
//此處的adapter是列表的adapter,不是BluetoothAdapter
adapter.add(device);
adapter.notifyDataSetChanged();
}
} else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
Toast.makeText(MainActivity.this,"開始搜尋",Toast.LENGTH_SHORT).show();
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
Toast.makeText(MainActivity.this,"搜尋完畢",Toast.LENGTH_SHORT).show();
}
}
};
在這裡,我將搜尋到的裝置新增到列表中進行展示。
if (device.getBondState() != BluetoothDevice.BOND_BONDED)
系統會儲存之前配對過的藍芽裝置,這裡我們對搜尋到的裝置進行過濾,判斷是否裝置是否已經配對過。因此,我們還可以直接獲取之前配對過的裝置。
獲取配對過的藍芽裝置
Set<BluetoothDevice> pairedDevices = bTAdatper.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
adapter.add(device);
}
}
至此,我們就成功地獲取到附近的藍芽裝置。
歡迎繼續閱讀下一篇
相關推薦
Android藍芽開發教程(一)——搜尋藍芽裝置
Android藍芽功能的開發一直是很多新手頭疼的問題,網上雖然也有很多教程貼,但大多都寫得不全面,不能讓我們真正掌握藍芽開發的基本知識。本教程主要講解搜尋藍芽裝置、藍芽裝置之間的連線和藍芽之間的通訊三個主要模組。掌握了這三個,基本就能進行簡單的藍芽開發了。
Android外掛化開發教程(一)
1.什麼是外掛化開發首先我們要對外掛化的概念有一個認識:外掛化開發是將整個app拆分成很多模組,這些模組包括一個宿主和多個外掛,每個模組都是一個apk(元件化的每個模組是個lib),最終打包的時候將宿主apk和外掛apk分開或者聯合打包。外掛式開發通俗的講就是把一個很大的app分成n多個
學習 MeteoInfo二次開發教程(一)
mat 沒有 組件 資源管理 img 教程 layer 添加 bbs 來自氣象家園:http://bbs.06climate.com/forum.php?mod=viewthread&tid=6631 按照教程,沒有太大問題,有些是對c#操作不熟悉導致。 1.添加d
netty開發教程(一)
prot eventloop 操作 公司 大量 read readline 獲得 github Netty介紹 Netty is an asynchronous event-driven network application framework for
微信公眾平臺開發教程(一) 微信公眾賬號註冊流程
身份證 logs 政府 提交 註意 bsp 訪問服務器 定義 htm 具體的操作步驟 1、註冊公眾賬號 註冊地址:http://mp.weixin.qq.com/ 1)首先需要郵箱註冊: 2)郵箱激活。郵箱將會收到激活郵件,點擊激活鏈接即可。 3)需要登記個人信息。這裏需
PythonWeb開發教程(一),開發之前需要準備什麽
服務 操作數 什麽 upload 進行 數據 AR 安裝 函數 這個博客系列,主要是寫怎麽用python開發網站,web開發,一來加深自己的印象,溫故而知新,二來希望可以幫助到其他想學pythonWeb開發的朋友。 什麽是web開發呢,其實就是開發一個網站了。那開發
ARKit For Unity windows開發教程(一)
windows開發 安裝步驟 html vmware 黑蘋果 ios1 。。 土豪 war 現在常常看見網上有一些ARKit教程,本人也是新人小白一枚,如果寫錯了,請見諒指正。。。。QQ:362057738 閑話不多說,如果你想了解ARkit框架,自行度娘去就行,網
PythonWeb開發教程(一),開發之前需要準備什麼
什麼是web開發呢,其實就是開發一個網站了。那開發網站需要用到哪些知識呢 1、python基礎,因為用python開發的,所以python指定要會,最起碼你也得會條件判斷,迴圈,函式,類這些知識;
arcgis runtime for android 100.3開發學習(一)(點、線、面,圖層的建立)
本節我們來學習一下arcgis runtime for android方面的相關內容,一一學習相關方面的api知識。這個案例是摘取github官網上面的。主要建立圖形案例的點、線、面,當然還有圖層的建立。來看一下實現的程式碼。 package com.example.arc
UML建模工具 Visual Paradigm敏捷開發教程(一):如何確立專案願景
每個專案都有一個願景,這是你獲得成功的基石。專案願景作為專案的靈感和焦點。它闡明瞭專案的目標,對於整個團隊來說,理解、共享和在整個專案中朝著相同的願景工作是很重要的。 如何確立專案願景? 通常,專案願景是通過執行專案願景會議來確定的,該會議涉及終端使用者、產品負責人和敏捷開發管理員。該會議有
HTC VIVE開發教程(一)
在這一節,我介紹的主要內容有 HTC VIVE的安裝與入門 VIVE外掛的結構目錄 學習VR有一段時間了,在這段時間裡我對HTC的vive還有Oculcus都進行過一定的研究,也開發出了幾款VR專案,算是基本完成了從Android客戶端到VR開發的技術轉
Android 即時通訊開發小結(一)
《Android 即時通訊開發小結》基於IM Andriod 開發的各種常見問題,結合網易雲信即時通訊技術的實踐,對 IM 開發做一個全面的總結。相關推薦閱讀:、客戶端架構作為一個 IM 軟體,最重要的一個特性就是保證訊息的達到率和實時性。達到率受伺服器效能和設計協議影響,後
android開發系列教程(一)啟動頁
1.啟動頁延時跳轉+沉浸狀態列+啟動頁圖片全屏 public class SplashActivity extends AppCompatActivity { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
關於青風藍芽NRD52832開發經驗(一)
1.首先是按照環境的搭建,藍芽協議和外設功能用到的是keil5和nRFgo Studio(賊不好用,用來進行協議的下載)開發工具,52832用的協議是S132的藍芽協議,關於藍芽mesh的開發在nordic官網上面找到一個關於藍芽點燈的程式,開啟這個程式用的開發環境是(Emb
無需程式設計,DIY自己智慧小車的Android藍芽遙控軟體(一)
很多熱衷於玩微控制器小車、機器人的童靴,往往也向往著有天能自己編寫一個Android手機的遙控程式,通過自己的手機遙控小車,微控制器程式用C語言或者彙編什麼的都可以容易完成,,無奈要寫一個上位機的Android控制程式就要會java、還要學一點xml知識,對於只學過C
Android BLE 藍芽學習總結(一):手機作為周邊BluetoothGattServer的實現
低功耗藍芽的基本概念: 在BLE協議中,有兩個角色,周邊(Periphery)和中央(Central)。周邊是資料的提供者,中央是資料的使用和處理者。在Android SDK裡面,Android4.3以後手機可以作為中央使用;Android5.0以後手機才可以
android5.1 藍芽子系統介紹(一)Android下bluedroid、bluetooth apk介紹
前言本文件主要介紹android平臺下bluetooth的應用層軟體,先介紹bluetooth應用層的框架,接著分別介紹Bluedroid層軟體、Bluetooth應用程式(Bluetooth.apk),Bluetooth framework層,最後完整分析一些藍芽的操作流程。基於android 5.1的平臺
android BLE藍芽詳細講解(一)
本文主要講解Android低功耗藍芽的api使用以及藍芽掃描、連線、傳送資料、接收資料等一系列操作,本篇結尾有本人封裝的BleLib藍芽庫,非常適合藍芽初學者使用,只需要一行程式碼注入就OK了,而且用法也極其簡單,我會在第二篇中專門講解一下BleLib庫的使用。
ThinkJS框架入門詳細教程(一)開發環境
install devel 版本 開發 conf doc 瀏覽器 打開 變量 一、前端標配環境 1、nodeJS正確安裝,可以參考:http://www.cnblogs.com/chengxs/p/6221393.html 2、git正確安裝,可以參考:http://w
Android TV開發總結(一)構建一個TV app前要知道的事兒
進入 line 指南 col 遠程 引導 允許 方法 imp 原文:Android TV開發總結(一)構建一個TV app前要知道的事兒 版權聲明:我已委托“維權騎士”(rightknights.com)為我的文章進行維權行動.轉載務必轉載所