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中的Http(一)之Http協議基礎
本人水平有限,文章中如果出現什麼不正確或者模糊的地方,還請各位小夥伴留下評論,多多指教 : ) 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相關功能。藍芽耳機可以控制手機接聽、拒接、結束通話電話,撥打電話等功能。本文主要分析下起這些操作的大致流程。 在