1. 程式人生 > >Android藍芽開發教程(一)——搜尋藍芽裝置

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)為我的文章進行維權行動.轉載務必轉載所