在呼叫藍芽方面,接觸最多的可能是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裡面,則可以不需要...