1. 程式人生 > >關於Android連線藍芽的方法

關於Android連線藍芽的方法

尊重原創,轉載請註明出處 我是原文

今天在看自己的專案時,看到了關於藍芽連線的這部分,在此做個筆記。在之前,藍芽連線的方法為:

BluetoothDevice.createBond();

不過我記得那時所用的 API 版本這個方法是隱藏的 @hide ,具體是哪個版本的 API 我也不記得了,

然後今天無意間看了下原始碼,發現:

    /**
     * Start the bonding (pairing) process with the remote device.
     * <p>This is an asynchronous call, it will return immediately. Register
     * for {@link #ACTION_BOND_STATE_CHANGED} intents to be notified when
     * the bonding process completes, and its result.
     * <p>Android system services will handle the necessary user interactions
     * to confirm and complete the bonding process.
     * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}.
     *
     * @return
false on immediate error, true if bonding will begin */
public boolean createBond() { if (sService == null) { Log.e(TAG, "BT not enabled. Cannot create bond to Remote Device"); return false; } try { return sService.createBond(this); } catch
(RemoteException e) {Log.e(TAG, "", e);} return false; }

是的,這個方法是公開的了。

當我直接將程式碼改為直接使用後

deviceItem.createBond();

發現了這樣的提示

意思是說這個方法是在API版本為19後(Android 4.4)才開始可以使用的。

所以建議在Android版本為4.4以下的手機上,這麼使用:

                        try {
                                Method bondDevice = BluetoothDevice.class
                                        .getMethod("createBond"
); bondDevice.invoke(deviceItem); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }

整理過後,可以變為:

                        if(android.os.Build.VERSION.SDK_INT<19){
                                try {
                                    Method bondDevice = BluetoothDevice.class
                                            .getMethod("createBond");
                                    bondDevice.invoke(deviceItem);
                                } catch (NoSuchMethodException e) {
                                    e.printStackTrace();
                                } catch (IllegalAccessException e) {
                                    e.printStackTrace();
                                } catch (IllegalArgumentException e) {
                                    e.printStackTrace();
                                } catch (InvocationTargetException e) {
                                    e.printStackTrace();
                                }
                            } else {
                                deviceItem.createBond();
                            }

注:deviceItem 為 BluetoothDevice 物件。

相關推薦

關於Android連線方法

尊重原創,轉載請註明出處 我是原文 今天在看自己的專案時,看到了關於藍芽連線的這部分,在此做個筆記。在之前,藍芽連線的方法為: BluetoothDevice.createBond(); 不過我記得那時所用的 API 版本這個方法是隱藏的 @hide ,具

關於 Android 連線方法

尊重原創,轉載請註明出處 我是原文 今天在看自己的專案時,看到了關於藍芽連線的這部分,在此做個筆記。在之前,藍芽連線的方法為: BluetoothDevice.createBond(); 不過我記得那時所用的 API 版本這個方法是隱藏的 `@hide` ,具體是哪個

android 連線模組教程附原始碼

由於最近專案需要連線藍芽,類似於智慧手環連線藍芽模組,網上找了些教程,有一些零零散散的程式,自己於是也寫了一個能用,然後我發現谷歌有一個藍芽的sample,一對比突然發現自己寫的好low,不嚴謹。於是就直接 谷歌 例程,修改了部分。首先當初寫的時候我有以下幾個疑

Android開發 連線狀態】Android實時檢測連線狀態

http://blog.csdn.net/dengpeng0419/article/details/53178730 本程式能實時監聽並檢測Android藍芽的連線狀態,無論是通過介面上的switch按鈕開啟/關閉手機藍芽,還是手動開啟/關閉手機藍芽,程式都能監聽當前的狀態

Android開發 獲取系統已連線裝置

    根據公司最近一個專案的需求,我們的APP要與藍芽低功耗裝置進行連線,不過有些情況下系統藍芽會預設連線已配對的裝置,這樣就會導致我們的APP搜尋不到這些系統已連線的裝置,從而導致APP無法與之進行連線並進行接下來的操作。其實系統連線與我們的APP連線並不衝突,問題就在

Android-經典(BT)-建立長連線傳輸短訊息和檔案

一.藍芽模組簡介 從藍芽4.0開始包含兩個藍芽晶片模組:傳統/經典藍芽模組(Classic Bluetooth,簡稱BT)和低功耗藍芽(Bluetooth Low Energy,簡稱BLE) 經典藍芽是在之前的藍芽1.0,1.2,2.0+E

Android開發篇之配對、連線與接收資料

首先是此部分涉及到的類 BluetoothAdapter 藍芽介面卡,即該類裡面包含了藍芽使用中常用到的一些API。 BroadcastReceiver 廣播接收者,不難猜測,藍芽裝置開啟或者關閉、搜尋到周邊裝置就要來通知應用,那麼Android系統就會以廣

Android開發——多裝置連線(四)

前言 經過一個多月的時間藍芽多裝置連線的重構終於告一段落了,這次的重構不止是程式碼方面的完善,還結合了一些使用者的使用場景,另外增加一些離線操作,使手機端對藍芽的操作更加的便捷,對藍芽裝置的管理更加統一。 場景分析 支援的場景 多裝置連線(一個

Android實現主動連線耳機

原網址:http://www.cnblogs.com/tt2015-sz/p/5616607.html private static final String TAG = "BluetoothA2DPTest"; private BroadcastReceive

Android手機靠近模組自動連線模組,斷後自動重連。也可以手機靠近手機自動連線連線成功率百分之百,可後臺執行

全球首創的新技術。小黃人獨家推出基於bluetoothchat的,手機靠近藍芽模組自動連線藍芽模組,斷後自動重連,多裝置自由切換,記憶連線,可後臺執行。連線成功率百分之百。可以應用在工業通訊,手機遊戲,自動解鎖等領域。也可以手機靠近手機自動連線,換UUID即可。歡迎定製,演

Android Bluetooth 強度Rssi

轉自 https://blog.csdn.net/lhc1105/article/details/54585632 轉自 https://blog.csdn.net/jasonwang18/article/details/73131020 轉自 http://www.cnblogs.co

Android學習——(Bluetooth)

藍芽(Bluetooth) 藍芽(Bluetooth)是一種短距離的無線通訊技術標準。 藍芽協議 藍芽協議分為4層,即核心替代層、電纜替代協議層、電話控制協議層和採納的其他的協議層。這4種最重要的是核心協議層。藍芽協議包括基帶、鏈路管理、邏輯鏈路控制和適應協議四部分。其中鏈路

Android學習——傳輸

藍芽傳輸 通過藍芽傳輸資料與Socket類似。在網路中使用Socket和ServerSocket控制客戶端和服務端的資料讀寫。而藍芽通訊也由客戶端和服務端Socket來完成。藍芽客戶端Socket是BluetoothSocket,藍芽服務端Socket是BluetoothServer

Android學習——Socket通訊

藍芽Socket通訊 UUID 在藍芽中,每個服務和服務屬性都唯一地由 全域性唯一識別符號 ,Universally Unique Identifier(UUID)來校驗。正如它的名字所暗示的,每一個這樣的識別符號都要在時空上保證唯一。UUID類可表現為短整形(16或32位)和長

Android獲取地址(非mac地址)

方法: public static String getBlueToothAddress(Context context){ return android.provider.Settings.Secure.getString(context.getContentResol

Android BLE 快速開發框架。

FastBle 專案地址:Jasonchenlijian/FastBle  簡介:Android BLE 藍芽快速開發框架。 更多:作者   提 Bug    標籤: 藍芽- Thanks to th

Android手機總結之傳統

出處:Android手機藍芽總結之傳統藍芽   最近,公司有一個專案時關於手機藍芽和硬體藍芽相互通訊的需求。基於之前很久沒有學習硬體的知識,這次記錄下來,以備下次需要時使用。 首先,需要搞清楚一些基本的概要,藍芽3.0以前的是傳統藍芽,4.0以後的是低功耗藍芽,Android藍

微信小程式連線裝置

最近再弄小程式連線藍芽,分享一下。 首先值得注意的是,微信小程式只支援連線低功耗藍芽裝置 部分oppo和vivo手機要把定位也開啟,否則搜尋不到附近藍芽裝置(比如我坑爹的oppoR11就必須把定位和藍芽都開啟才行) 下面直接上程式碼,複製貼上就行,然後點選“開始掃描”(目前我知道蘋果手錶

Android BLE4.0開發—Android手機與BLE終端通訊

轉載自: https://blog.csdn.net/fu908323236/article/details/76208997 這篇部落格主要講解AndroidBLE藍芽4.0的基本概念,以及基礎用法。  BLE 即 Bluetooth Low Energy,藍芽低功耗技術,是藍芽

關於電腦連線耳機出現的一些問題,以及解決方案

首先,會有找不到對應的藍芽耳機裝置,這時,就說明,你的藍芽驅動不行,證明方法,網上有很多,自己查,重點是你需要重新下載藍芽驅動,重點來了  “關掉無線”---“關掉無線”---“關掉無線”,一定要關掉,否則,即使你的本來能用的,也一定用不了     ,等你下