1. 程式人生 > >Android藍芽開發(一)之開啟藍芽和裝置搜尋

Android藍芽開發(一)之開啟藍芽和裝置搜尋

Android藍芽開發系列目錄:

一、判斷是否系統是否支援藍芽

在使用藍芽之前,我們首先要判斷手機裝置是否支援藍芽,雖然現在基本都支援藍芽了,但是為了程式碼的嚴謹性我們還是需要在程式碼中判斷:

private BluetoothManager bluetoothmanger;
private BluetoothAdapter bluetoothadapter;
/**
  判斷裝置是否支援藍芽
*/
bluetoothmanger = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
bluetoothadapter = bluetoothmanger.getAdapter();
if (bluetoothadapter == null) {
    Toast.makeText(MainActivity.this, "裝置不支援藍芽", Toast.LENGTH_SHORT).show();
}

二、判斷藍芽是否開啟

開始使用藍芽之前,首先要判斷藍芽是否開啟,如果沒有開啟則開啟,藍芽開啟有兩種方式一種是直接預設開啟,另一種是彈出框讓使用者選擇開啟:

/**
 * 判斷藍芽是否開啟
 *
 * @return
 */
public boolean blueisenable() {
    if (bluetoothadapter.isEnabled()) {
        return true;
    } else {
        return false;
    }
}

開啟方式一:

Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler, 1);

開啟方式二:

bluetoothadapter.enable()

如果開啟藍芽的同時想設定讓自己手機藍芽多少秒可見可以使用

Intent discoveryIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);//預設是120秒

discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);//設定持續時間(最多300秒)

startActivity(discoveryIntent);

3.搜尋裝置

搜尋之前我們需要判斷是否正在搜尋,如果正在搜尋則取消搜尋後再搜尋,使用:

if (bluetoothadapter.isDiscovering()) {
    bluetoothadapter.cancelDiscovery();
}
bluetoothadapter.startDiscovery();

這樣藍芽就開始搜尋裝置了,此外我們還需要註冊藍芽廣播,當掃描到裝置時才方便做處理

設定藍芽廣播過濾器也就是新增廣播型別,在這裡我們把藍芽狀態改變、搜尋到裝置、搜尋完成等廣播都新增進來,後續都可以用到

/**
 * 藍芽廣播過濾器
 * 藍芽狀態改變
 * 找到裝置
 * 搜尋完成
 * 開始掃描
 * 狀態改變
 *
 * @return
 */
public IntentFilter makeFilter() {
    IntentFilter filter = new IntentFilter();
    filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);//藍芽狀態改變的廣播
    filter.addAction(BluetoothDevice.ACTION_FOUND);//找到裝置的廣播
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);//搜尋完成的廣播
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);//開始掃描的廣播
    filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);//狀態改變
    return filter;
}

新建廣播

BlueToothReceiver,在OnReceive中判斷,當查詢到裝置時我們可以得到device,在這裡做處理即可,在這裡我們是將裝置存放在list集合中,方便做後續處理,讀者可自行做處理,記得在Activity或者AndroidManifest.xml註冊廣播。
case BluetoothDevice.ACTION_FOUND:
    Log.d(TAG, "查詢裝置");
    BluetoothDevice device = intent
            .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    EventBus.getDefault().post(new BluRxBean(findDevice,device));
    break;

4.獲取本地藍芽屬性

//獲取本地藍芽名稱
String name = bluetoothadapter.getName();
//獲取本地藍芽地址
String address = bluetoothadapter.getAddress();

5.特別注意事項

   記得在配置檔案中新增許可權:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-feature
    android:name="android.hardware.bluetooth_le"
    android:required="true" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />、

這些許可權是都可以用到的,Android5.0以上要新增定位許可權才可以,所以最後兩項是定位許可權,在掃描的時候,Android6.0以上的手機記得動態申請許可權才可以掃描到裝置,動態許可權文章推薦AndroidAcp百度即可。

 請閱讀下一篇文章:

歡迎關注技術公眾號,微訊號搜尋ColorfulCode 程式碼男人

分享技術文章,投稿分享,不限技術種類,不限技術深度,讓更多人因為分享而受益。

相關推薦

Android開發開啟裝置搜尋

Android藍芽開發系列目錄: 一、判斷是否系統是否支援藍芽 在使用藍芽之前,我們首先要判斷手機裝置是否支援藍芽,雖然現在基本都支援藍芽了,但是為了程式碼的嚴謹性我們還是需要在程式碼中判斷: private BluetoothManager bluetoothma

Android百度地圖開發初體驗

    做關於位置或者定位的app的時候免不了使用地圖功能,本人最近由於專案的需求需要使用百度地圖的一些功能,所以這幾天研究了一下,現寫一下blog記錄一下,歡迎大家評論指正!一、申請AK(API Key)    要想使用百度地圖sdk,就必須申請一個百度地圖的api key

Android相機開發預覽拍照檢視圖片基本功能的實現

前言         接觸Android開發有一段時間了。一開始時純粹是出於自己的興趣,空閒時寫幾個小軟體自娛自樂。剛好暑假時老闆佈置的任務跟Android相關,所以這段時間又繼續進行了Android的開發學習。現在的Android開發水平僅屬於

iOS 開發——CoreBluetooth開發

最近要做關於iOS上的藍芽開發專案,為此閱讀了蘋果的官方文件,這裡做一些翻譯和摘錄和大家共享交流。(如需轉載請註明出處) 關於Core BlueTooth Core BlueTooth是一個iOS的開發框架,其中包含了若干類,能夠和低功耗藍芽(符合藍芽4

iOS開發相關基礎知識

藍芽常見名稱和縮寫 MFI ======= make for ipad ,iphone, itouch 專們為蘋果裝置製作的裝置 BLE ==== buletouch low energy,藍芽4.0裝置因為低耗電,所以也叫做BLE peripher

Android 開發2——低功耗

低功耗藍芽官方文件 本文章是參考官網,然後加入自己實踐中的理解完成!沒有看上一篇的讀者,可以先閱讀一下前一篇,這是一個系列。 官網地址:https://developer.android.com/guide/topics/connectivity/bluetooth-le Android 4.3 (API

Android註冊程式編寫圖解程式設計

Android註冊程式編寫(一) (作者:Baron_wu 禁止轉載) 介面設計 首先進入Androidstudio建立一個空的工程: 選擇要執行的裝置: 選擇一個空的活動: 為app命名: 之後進入主介面: 點選紅筆畫中的視窗進入介面設計視窗: 介面設計視窗如下

步學習Android TV/盒子開發

寫在前面的話: 本人做了幾年的機頂盒和Android電視上的應用開發,寫這些文章只是為了讓初次接觸大屏開發的同學能夠快速上手。 TV端因為沒有觸控操作,只有遙控操作,所以焦點處理、控制以及按鍵監聽是其主要特點。 焦點處理 設定可獲取焦點 佈局中需要設定某個控制元件可獲取焦點需要加

Android音視訊】Android Onvif-IPC開發——在Android端搭建伺服器模擬Onvif-IP-Camera

Android端實現Onvif IPC開發: 本篇內容簡介: 本篇是上一文章移植失敗採取的第二方案,通過在android搭建service,模擬成一個onvif協議對接的IPC端,在這之前,首先需要明白,onvif裝置對接的流程或者說方式,接下來的文章內容

Android音視訊】Android Onvif-IPC開發——gSoap移植NDK嘗試

Android端實現Onvif IPC開發: 閱讀說明(必讀) 我在進行gSoap移植時暫時失敗了,而是採用方案二,在android端通過java搭建的server去模擬IPC,達到需求(實現Android端可供Onvif檢測的IPC),以下是我移植的步驟

網路篇——android中的HttpHttp協議基礎

本人水平有限,文章中如果出現什麼不正確或者模糊的地方,還請各位小夥伴留下評論,多多指教 : ) Http概述 什麼是Http 採用知識點的形式,個人認為會更加高效直觀一點。 - HTTP,即超文字傳輸協議 - 它定義了瀏覽器(客戶端的一種

iOS開發:iOS 4.0中心模式 程式碼實現

上一篇簡單介紹了藍芽的部分基礎知識,詳細的東西大家可以去github上搜babyBluetooth,裡面有一些學習資料 iOS連線外設的流程 建立中心管理者 掃描外設 discoverPeripheral 連線外設 connectPeripheral

Android cocos2d-x開發建立Android工程編譯

1、進入cocs2d-x目錄,用文字編輯器開啟create-android-project.bat 將_CYGBIN=設定為cycgwin\bin安裝的的絕對路徑。 將_ANDROIDTOOLS設定為android sdk 的tools絕對路徑 將_NDKROOT設定為an

Android自定義錄影錄影功能實現(附demo原始碼)

引言 最近在做一個專案,是有關用手機攝像頭做影象實時識別的。所以裡面需要自定義一個錄影功能。該demo實現了錄影和錄影後文件的儲存檢視,錄影會實時自動對焦(AutoFocus)。根據功能分兩篇講述。這第一篇講述錄影基本實現思路和需要注意的點。後面附有githu

Android 使用Kotlin開發

本文為自己學kotlin時的一些筆記 Kotlin的特色 Kotlin作為Java的改良,在Android開發中有很多優勢,我們先從相對直觀的介面繪製開始瞭解,然後看看Kotlin的語法特點,再慢慢去接觸更深層次的程式設計思想。 簡化f

TCP/IP開啟計算機網絡

廣域網 概述 pic .cn 慢慢 internet 通信 hub album 前言 在一段時間裏,都很想知道一臺電腦怎麽跟另一臺電腦通信的,我發送一個qq給女朋友,怎麽準確的發送過去的,又是怎麽接受消息的。 接下來一段時間給大家慢慢分享關於計算機網絡的相關知識。 一、局域

java 併發程式設計學習筆記 基礎框架搭建併發模擬工具,程式碼

                                基礎框架搭建和併發模擬工具,程式碼 (1)基礎框架搭建 (2)併發模擬 (3)CountDownLatch  通常用來 保證 幾個執行緒執行完成之後,再執行其他的程式碼 Semaphore

Android 網路開發 okHttp網路請求快取控制Cache-Control

Cache-Control: Cache-Control指定請求和響應遵循的快取機制。在請求訊息或響應訊息中設定Cache-Control並不會修改另一個訊息處理過程中的快取處理過程。請求時的快取指令有下幾種: Public指示響應可被任何快取區快取。 Private指示對於單個

Android使用Android-query框架進行開發

開發Android使用Android-query框架能夠快速的,比傳統開發android所要編寫的程式碼要少得很多,容易閱讀等優勢。  以下內容是我學習的一些心得分享: 第一節:   // 必須實現AQuery這個類 AQuery aq = new AQuery(view);// 按順序分析:取得xm

Android 開發hfp接聽、結束通話電話

本文已授權微信公眾號 fanfan程式媛 獨家釋出 掃一掃文章底部的二維碼或在微信搜尋 fanfan程式媛 即可關注 繼續研究hfp相關功能。藍芽耳機可以控制手機接聽、拒接、結束通話電話,撥打電話等功能。本文主要分析下起這些操作的大致流程。 在