開啟藍芽並設定永久可見

2021-09-26 09:25:17 字數 2530 閱讀 7555

在呼叫藍芽方面,接觸最多的可能是bluetoothadapter,很多操作藍芽的方法多在此類中有介面,哪怕很多介面是不公開的,也可以通過反射的方式使用,如設定藍芽永久可見和關閉可見的函式;而開啟藍芽大體邏輯為:

開啟藍芽許可權

註冊藍芽廣播

初始化bluetoothadapter例項

開啟藍芽

設定可見或不可見

androidmanifest.xml 中註冊

if (mreceiver == null)
在啟動藍芽搜尋時,系統會傳送3個 action

bluetoothadapter.action_discovery_started  //啟動藍芽搜尋

bluetoothdevice.action_found //查詢到的結果

bluetoothadapter.action_discovery_finished //結束藍芽搜尋

在自定義broadcastreceiver中接受處理action; 這裡需要注意的是:

@1開啟藍芽

@2接收action_state_changed廣播

@3藍芽狀態是開啟狀態(bluetoothadapter.getstate() == bluetoothadapter.state_on)

@4 設定藍芽永久可見setdiscoverabletimeout(0);

以下是搜尋藍芽的具體方法:

private class custombroadcastreceiver extends broadcastreceiver  else if (action.equals(bluetoothdevice.action_found))  else 

} else if (action.equals(bluetoothadapter.action_discovery_finished))

if (action.equals(bluetoothadapter.action_state_changed)) else if (mbluetoothadapter.getstate() == bluetoothadapter.state_off) }}

}

android6.0藍芽搜尋需要定位許可權,具體博文請看android6.0許可權詳解, 藍芽搜尋使用的許可權申請方法如下:

private void mayrequestlocation(), request_permission_location);

return;}}

}

bluetoothadapter自身定義靜態函式,獲取介面卡物件

public static synchronized bluetoothadapter getdefaultadapter()

if (!mbluetoothadapter.isenabled())
可見:

通過系統setting強制開啟,直接從後台開啟藍芽可見,但會一直可見下去,直到藍芽關閉。

private void setdiscoverabletimeout(int timeout)  catch (exception e) 

}

不可見:

關閉了藍芽可見性。

private void closediscoverabletimeout()  catch (exception e) 

}

getaddress() //獲取本地藍芽位址

getdefaultadapter() //獲取預設bluetoothadapter,實際上,也只有這一種方法獲取bluetoothadapter

getname() //獲取本地藍芽名稱

getremotedevice(string address) //根據藍芽位址獲取遠端藍芽裝置

getstate() //獲取本地藍芽介面卡當前狀態(感覺可能除錯的時候更需要)

isdiscovering() //判斷當前是否正在查詢裝置,是返回true

isenabled() //判斷藍芽是否開啟,已開啟返回true,否則,返回false

listenusingrfcommwithservicerecord(string name,uuid uuid) //根據名稱,uuid建立並返回

bluetoothserversocket,這是建立bluetoothsocket伺服器端的第一步

startdiscovery() //開始搜尋,這是搜尋的第一步

bluetoothadapter裡的方法很多,常用的有以下幾個:

disable() //關閉藍芽

enable() //開啟藍芽,這個方法開啟藍芽不會彈出提示

設定hostname並永久生效

原來我機器的網域名稱是wen.redhat,我使用如下命令設定網域名稱,hostname idp.example.com hostname idp.example.com 重啟計算機後,使用如下命令檢視,hostname wen.redhat hostname又變為開始的wen.redhat了。使用...

Android判斷網路是否開啟,並開啟設定網路介面

由於android的sdk版本不同所以裡面的api和設定方式也是有少量變化的,尤其是在android 3.0 及後面的版本,ui和顯示方式也發生了變化,現在就以開啟網路設定為例,同大家分享一下,效果如下 1.首先先看一下android 判斷網路是否已開啟 如果直接寫在activity裡面,則可以不需...

Android判斷網路是否開啟,並開啟設定網路介面

於android的sdk版本不同所以裡面的api和設定方式也是有少量變化的,尤其是在android 3.0 及後面的版本,ui和顯示方式也發生了變化,現在就以開啟網路設定為例,同大家分享一下,效果如下 1.首先先看一下android 判斷網路是否已開啟 如果直接寫在activity裡面,則可以不需要...