www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]Wifi_Direct是目前設(shè)備間最快的無(wú)線數(shù)據(jù)連接方式,速度可以達(dá)到40Mb/s。Google從Android 4.0(ICS)開(kāi)始支持Wifi_Direct,而三星則更早些就在它自己的設(shè)備上支持了

Wifi_Direct是目前設(shè)備間最快的無(wú)線數(shù)據(jù)連接方式,速度可以達(dá)到40Mb/s。Google從Android 4.0(ICS)開(kāi)始支持Wifi_Direct,而三星則更早些就在它自己的設(shè)備上支持了Wifi_Direct。幾年來(lái),Wifi_Direct的發(fā)展一直不溫不火,但是目前市面上支持Wifi_Direct的設(shè)備并不是很多。 ? ? ? ? 從目前接觸過(guò)得設(shè)備來(lái)看,三星I9100的Wifi_Direct功能其實(shí)使用了Wifi的硬件,所以,它在使用Wifi_Direct功能時(shí),無(wú)法使用wifi;nexus7、Padfone infinite(A80)則有獨(dú)立的硬件來(lái)支持Wifi_Direct,所以,在使用Wifi_Direct功能的時(shí)候,Wifi仍舊可用。
? ? ? ? ? Android framework提供了一個(gè)android.net.wifi.p2p包來(lái)提供對(duì)于Wifi_Direct的支持,其中包含了7個(gè)class和9個(gè)interface。其中WifiP2pManager為最核心的class,其他的class和interface都為它所用。
? ? ? ? ? 使用Wifi_P2p需要的Permission有兩個(gè):

public static final?String?ACCESS_WIFI_STATE
Added in?API level 1
Allows applications to access information about Wi-Fi networks
Constant Value:?"android.permission.ACCESS_WIFI_STATE"


public static final?String?CHANGE_WIFI_STATE
Added in?API level 1
Allows applications to change Wi-Fi connectivity state
Constant Value:?"android.permission.CHANGE_WIFI_STATE"

? ? ? ? Wifi_Direct的大致配對(duì)流程如下:

? ? ? ? 1. WifiP2pManager.discoverPeers()開(kāi)始掃描設(shè)備 ? ? ? ? 2. 獲取掃描到的設(shè)備,選擇其中一個(gè)設(shè)備進(jìn)行連接配對(duì)WifiP2pManager.connect ? ? ? ? 3. 配對(duì)成功后,根據(jù)WifiP2pInfo.isGroupOwner和WifiP2pInfo.groupOwnerAddress進(jìn)行連接。

? ? ? ? 個(gè)人認(rèn)為Wifi_Direct配對(duì)需要注意的問(wèn)題: ? ? ? ? 1. Setting中啟用/關(guān)閉WifiP2p按鈕,應(yīng)該是和Wifi的啟用/關(guān)閉按鈕放在一起了(其實(shí),有些設(shè)備的實(shí)現(xiàn)中,Wifip2p使用的就是wifi的硬件),所以使用WifiP2p功能需要開(kāi)啟Wifi。 ? ? ? ? 2. Setting中BlueTooth有一個(gè)“讓自己可見(jiàn)”的按鈕,而Wifi_Direct沒(méi)有這樣的設(shè)置,僅提供了一個(gè)啟動(dòng)scan的按鈕。本人尚未明確在未啟動(dòng)scan的情況下,設(shè)備對(duì)于其他wifi_direct是否是可見(jiàn)的,但是可以明確scan中的wifi_direct設(shè)備對(duì)其他設(shè)備來(lái)說(shuō)是可見(jiàn)的。所以,建議需要進(jìn)行配對(duì)的兩臺(tái)Wifi_Direct設(shè)備都進(jìn)行scan。 ? ? ? ? 3. 配對(duì)成功的前提條件是:進(jìn)行配對(duì)的兩臺(tái)設(shè)備都必須能夠掃描到對(duì)方。所以,兩臺(tái)設(shè)備都進(jìn)行scan操作的根本原因在這里。 ? ? ? ? 4. 開(kāi)發(fā)者無(wú)法決定GroupOwner是哪臺(tái)設(shè)備,但是可以通過(guò)WifiP2pConfig.groupOwnerIntent參數(shù)進(jìn)行建議。
? ? ? ? 從測(cè)試的結(jié)果來(lái)說(shuō),Wifi_Direct的表現(xiàn)受具體設(shè)備的影響很大,配對(duì)的速度也有較大差異,從10秒到2分鐘甚至更久。大概的來(lái)說(shuō),nexus7成功的概率較高,個(gè)人感覺(jué)可以達(dá)到70%的成功率,Padfone infinite(A80)的成功率在50%以下。 ? ? ? ? ? ? ? ? ? ?為了兼容傳統(tǒng)的Wifi設(shè)備,Wifi_Direct其實(shí)還存在另一種使用方式,暫且稱為兼容模式。兼容模式的特點(diǎn)在于,只需要擔(dān)任GroupOwner的設(shè)備支持Wifi_Direct,而其他設(shè)備只需要支持傳統(tǒng)的Wifi就可以了(個(gè)人覺(jué)得其實(shí)這種使用模式很像Android的便攜熱點(diǎn)功能)。 ? ? ? ? ?操作流程為: ? ? ? ? ?1. 支持Wifi_Direct的設(shè)備創(chuàng)建group,WifiP2pManager.createGroup(),成為GroupOwner。 ? ? ? ? ?2. ?其他設(shè)備掃描Wifi_Direct設(shè)備創(chuàng)建group后產(chǎn)生的Wifi熱點(diǎn)并連接即可。
? ? ? ? ?兼容模式存在的一個(gè)問(wèn)題是:因?yàn)樽鳛間roup member的設(shè)備是使用Wifi硬件接入到group中,所以會(huì)導(dǎo)致member進(jìn)行wifi 熱點(diǎn)切換以及網(wǎng)絡(luò)中斷,可能對(duì)正在進(jìn)行的網(wǎng)絡(luò)操作造成影響,而group owner則不存在這個(gè)問(wèn)題。另外,而WifiP2p配對(duì)的使用方式,WifiP2p和Wifi可以獨(dú)立運(yùn)作,相互不受影響。 ? ? ? ? ? ? ? ? ? ? 但是,兼容模式因?yàn)槭∪チ藪呙韬团鋵?duì)的過(guò)程,所以建立連接的成功率明顯提升,并且建立連接的速度要快不少(具體時(shí)間比較隨機(jī))。 ? ? ? ? ? 從個(gè)人的使用感覺(jué)來(lái)講,這WifiP2p這套API接口高度的異步化,API都需要以回調(diào)的方式獲取操作結(jié)果(包內(nèi)interface比較多的原因就在于此)。更加麻煩的是,幾個(gè)關(guān)鍵API(例如WifiP2pManager.connect)的回調(diào)獲取到的結(jié)果僅僅是執(zhí)行是否開(kāi)始,真正的結(jié)果還得注冊(cè)broadcast receiver,通過(guò)監(jiān)聽(tīng)廣播來(lái)獲得,才能進(jìn)行下一步操作。異步的設(shè)計(jì)提高了代碼的邏輯復(fù)雜度。

? ? ? ? ?使用NFC來(lái)實(shí)現(xiàn)WifiP2p的連接: ? ? ? ? ?1. 使用NFC將owner設(shè)備創(chuàng)建的group的SSID和密碼傳遞給member設(shè)備 ? ? ? ? ?2. owner開(kāi)始監(jiān)聽(tīng)指定端口,等待member的連接 ? ? ? ? ?3. member接收到nfc傳遞過(guò)來(lái)的數(shù)據(jù)后,根據(jù)SSID和密碼連接到group ? ? ? ? ?4. 連接成功以后,過(guò)去owner設(shè)備的ip地址(獲取gateway ip即可),連接到owner的指定端口

? ? ? ? ? 常見(jiàn)問(wèn)題: ? ? ? ? ? 1. WifiP2p相關(guān)的廣播有哪些,各自有哪些參數(shù)?
WifiP2pManager.WIFI_P2P_DISCOVERY_CHANGED_ACTION:當(dāng)WifiP2p掃描開(kāi)始或者停止時(shí),觸發(fā)該廣播 該廣播包含一個(gè)int型extra, key為WifiP2pManager.EXTRA_DISCOVERY_STATE,其值為WifiP2pManager.WIFI_P2P_DISCOVERY_STARTED或者WifiP2pManager.WIFI_P2P_DISCOVERY_STARTED.
WifiP2pManager.WIFI_P2P_STATE_CHANGED_ATIONIC:當(dāng)WifiP2p狀態(tài)發(fā)生變化時(shí)觸發(fā)(如果WifiP2p可用,那么當(dāng)BroadcastReceiverregister時(shí),也會(huì)收到該廣播) 該廣播包含一個(gè)int型extra,key為WifiP2pManager.EXTRA_WIFI_STATE,其值為WifiP2pManager.WIFI_P2P_STATE_ENABLED或者WifiP2pManager.WIFI_P2P_STATE_DISABLED。
WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION:當(dāng)設(shè)備的WifiP2p狀態(tài)發(fā)生變化時(shí)觸發(fā)廣播(如果WifiP2p可用,那么當(dāng)BroadcastReceiverregister時(shí),也會(huì)收到該廣播) 該廣播包含一個(gè)類型為WifiP2pDevice的extra,key為WifiP2pManager.EXTRA_WIFI_P2P_DEVICE.
WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION:當(dāng)WifiP2p掃描時(shí),發(fā)現(xiàn)device列表發(fā)生變化時(shí),觸發(fā)該廣播 該廣播不含extra,開(kāi)發(fā)者應(yīng)該接收到此廣播后,調(diào)用WifiP2pManager.requestPeers()函數(shù)查詢當(dāng)前設(shè)別列表。
WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION:當(dāng)WifiP2p的group發(fā)生變化時(shí),觸發(fā)該廣播。 該廣播包含兩個(gè)extra: key:WifiP2pManager.EXTRA_NETWORK_INFO,其值為NetworkInfo類型。 key:WifiP2pManager.EXTRA_P2P_INFO,其值為WifiP2pInfo類型。 PS:這里的WifiP2p group發(fā)生變化包含如下情況: 1. 建立group 2. member加入到group 3. member退出group 4. 關(guān)閉group
? ? ? ? 2. 如何獲得WifiP2pGroupInfo,它有什么用? WifiP2pManager.requestGroupInfo()函數(shù),可以獲取GroupInfo,較為有用的api有: 1. GroupInfo.getClientList()可以獲得連接到group的member列表 2. GroupInfo.getNetWorkName()可以獲得group的wifi熱點(diǎn)名稱(SSID) 3. GroupInfo.getPassphrase() 可以獲得連接到wifi 熱點(diǎn)的密碼
? ? ? ? 3. 如何獲得WifiP2pInfo? 可以從WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION廣播中的extra中獲取 也可以從WifiP2pManager.requestConnectionInfo()函數(shù)獲取。
? ? ? ? 4. 如何防止配對(duì)產(chǎn)生的提示框? 在不修改framework的情況下,本人暫時(shí)為找到可行的方案。 這個(gè)提示狂是由系統(tǒng)提供的,具體表現(xiàn)視設(shè)備而定。nexus只在第一次配對(duì)的時(shí)候彈出,而A80每一次配對(duì)都會(huì)彈出。 但是,使用兼容模式使用Wifi_Direct是沒(méi)有提示框的。
? ? ? ? ?5. 如何實(shí)現(xiàn)wifi熱點(diǎn)的連接? ?經(jīng)過(guò)測(cè)試,在A80上,如下代碼可以實(shí)現(xiàn)連接到熱點(diǎn)。

????????????//?build?a?wifi?config
????????????final?WifiConfiguration?config?=?new?WifiConfiguration();
????????????config.allowedAuthAlgorithms.clear();
????????????config.allowedPairwiseCiphers.clear();
????????????config.allowedGroupCiphers.clear();
????????????config.allowedKeyManagement.clear();
????????????config.allowedProtocols.clear();

????????????config.SSID?=?"""?+?ssid?+?""";//設(shè)定ssid
????????????config.preSharedKey?=?"""?+?pw?+?""";//設(shè)定密碼
????????????config.hiddenSSID?=?false;
????????????config.status?=?WifiConfiguration.Status.ENABLED;
????????????config.priority?=?1;
????????????config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
????????????config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
????????????config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
????????????config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
????????????config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
????????????config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
????????????config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
????????????config.allowedPairwiseCiphers.set(3);
????????????config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
????????????config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);

????????????//?connect?to?ap
????????????int?id?=?WifiManager.addNetwork(config);
????????????config.networkId?=?id;
????????????if?(id?!=?-1?&&?mWifiManager.enableNetwork(id,?true))?{
????????????????....
????????????}


? ? ? ? 6. 如何通過(guò)代碼開(kāi)啟便攜熱點(diǎn)?(這個(gè)問(wèn)題和Wifi_Direct無(wú)關(guān),但是可以讓不支持Wifi_Direct的Android設(shè)備獲得類似模擬模式的效果,可能和快牙的實(shí)現(xiàn)方式相似)
正常情況下,開(kāi)啟便攜熱點(diǎn)的API因?yàn)閔ide隱藏的關(guān)系,無(wú)法被apk調(diào)用,僅原生app可以調(diào)用。但是用java的反射機(jī)制可以讓普通app也能調(diào)用這個(gè)api,實(shí)現(xiàn)如下: //?wifi熱點(diǎn)開(kāi)關(guān)?? ????public?boolean?setWifiApEnabled(boolean?enabled)?{?? ????????if?(enabled)?{?//?disable?WiFi?in?any?case?? ????????????//wifi和熱點(diǎn)不能同時(shí)打開(kāi),所以打開(kāi)熱點(diǎn)的時(shí)候需要關(guān)閉wifi?? ????????????wifiManager.setWifiEnabled(false);?? ????????}?? ????????try?{?? ????????????//熱點(diǎn)的配置類?? ????????????WifiConfiguration?apConfig?=?new?WifiConfiguration();?? ????????????//配置熱點(diǎn)的名稱(可以在名字后面加點(diǎn)隨機(jī)數(shù)什么的)?? ????????????apConfig.SSID?=?"YRCCONNECTION";?? ????????????//配置熱點(diǎn)的密碼?? ????????????apConfig.preSharedKey="12122112";?? ????????????????//通過(guò)反射調(diào)用設(shè)置熱點(diǎn)?? ????????????Method?method?=?wifiManager.getClass().getMethod(?? ????????????????????"setWifiApEnabled",?WifiConfiguration.class,?Boolean.TYPE);?? ????????????//返回?zé)狳c(diǎn)打開(kāi)狀態(tài)?? ????????????return?(Boolean)?method.invoke(wifiManager,?apConfig,?enabled);?? ????????}?catch?(Exception?e)?{?? ????????????return?false;?? ????????}?? ????} ? 以上代碼拷貝自:http://blog.csdn.net/luoboo525/article/details/7883998

? ? ? ? 7. WifiP2pManager.discovePeers僅僅返回附近有哪些設(shè)備開(kāi)啟了wifi p2p,而app的實(shí)際使用場(chǎng)景,往往希望尋找可以提供某些特定服務(wù)的設(shè)備。例如同一房間內(nèi),有A,B,C,D四臺(tái)設(shè)備開(kāi)啟了wifi p2p,而A設(shè)備和B設(shè)備都安裝了app1,C設(shè)備和D設(shè)備都安裝了app2,使用者希望A設(shè)備能和B設(shè)備配對(duì)連接,而C設(shè)備與D設(shè)備連接,運(yùn)行在A設(shè)備上的app1如何識(shí)別它應(yīng)該連接的是B設(shè)備,而非C、D設(shè)備呢?
? ? ? ? 為了支持更加個(gè)性化的設(shè)備發(fā)現(xiàn),WifiP2pManager支持UPNP和DNS兩種方式的設(shè)備(服務(wù)?)發(fā)現(xiàn)。 ? ? ? ? App可以通過(guò)WifiP2pManager.addLocalService來(lái)向周邊的設(shè)備廣播自己支持哪些服務(wù)。 ? ? ? ? 也可以通過(guò)如下步驟實(shí)現(xiàn)發(fā)現(xiàn)這些服務(wù): ? ? ? ? 1. 通過(guò)WifiP2pManager.addServiceRequest()添加服務(wù)請(qǐng)求 ? ? ? ? 2. 通過(guò)WifiP2pManager.discoverService()開(kāi)始服務(wù)發(fā)現(xiàn) ? ? ? ? 3. 通過(guò)WifiP2pManager.setDnsSdResponseListener()或者WifiP2pManager.setUpnpServiceResponseListener()監(jiān)聽(tīng)服務(wù)內(nèi)容。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉