概要:
本文主要介紹基于Android原生WiFidirect封裝的jar包。其中實(shí)現(xiàn)的要點(diǎn)有:
1,IP列表管理;
2,1行代碼配置WiFidirect;
3,實(shí)現(xiàn)了文本,文件,buffer的通訊傳遞;
4,自動(dòng)連接與恢復(fù)(當(dāng)利用強(qiáng)迫退出后,再次進(jìn)入的自動(dòng)連接進(jìn)程)。
以上4點(diǎn)都是原生WiFidirect未實(shí)現(xiàn)的,相信對(duì)想基于WiFidirect進(jìn)行開(kāi)發(fā)的朋友會(huì)有所幫助。
想必對(duì)WiFidirect有些了解的朋友都知道,WiFidirect在Android4.0后得以支持,并且傳遞數(shù)度,距離都遠(yuǎn)好過(guò)WiFi熱門(mén)與藍(lán)牙,并且開(kāi)啟WiFidirect不影響正常的wifi上網(wǎng)。做近場(chǎng)通訊絕對(duì)是個(gè)好東西!
為了方便以后的開(kāi)發(fā),這里本人將全部WiFidirect通訊工作從WiFidirect的開(kāi)啟、搜索、連接、傳遞信息都進(jìn)行了封裝。基本做到了在項(xiàng)目中以極少的代碼較好的使用WiFidirect進(jìn)行通訊。這里筆者也分享給大家。
正文:
1,系統(tǒng)功能描寫(xiě):
本SDK終究目的就是完成通訊,下圖能很好的說(shuō)明(圖中結(jié)構(gòu)僅供參考)。
2,接入與配置:
a,下載SDKjia包,地址:http://download.csdn.net/detail/coycleipenghui/9634551;
b,導(dǎo)入到項(xiàng)目中(FriendMusic為demo項(xiàng)目);
c,初始化配置;
(1)WifiDirectManager.getInstance().init() // 初始化SDK
(2)WifiDirectManager.getInstance().setFileSaveDir() //設(shè)置緩存路徑
具體代碼以下:
WifiDirectManager.getInstance().init(getActivity(), new OnPeersDataChangeListener() {//裝備變化通知接口
@Override
public void onPeersDataChange() {
//周?chē)b備產(chǎn)生改變
}
}, new OnGroupListChangeListener() {
@Override
public void onGroupListChange() {
//組內(nèi)裝備(已連接裝備)產(chǎn)生改變
}
}, new OnReceiveDataListener() {//數(shù)據(jù)接收接 其中MyWifiP2pDevice 是指該數(shù)據(jù)來(lái)源裝備
@Override
public void onReceiveText(final String text, final MyWifiP2pDevice myWifiP2pDevice) {
//收到文本消息
}
@Override
public void onReceiveByte(final byte[] bytes, MyWifiP2pDevice myWifiP2pDevice) {
//收到byte數(shù)組
}
@Override
public void onReceiveFile(final String s,final MyWifiP2pDevice myWifiP2pDevice,final String tag) {
//收到文件 s為本地文件存儲(chǔ)路徑
}
});
WifiDirectManager.getInstance().setFileSaveDir(Environment.getExternalStorageDirectory()+"/FriendMusic/musicCache");//設(shè)置文件緩存路徑
3,使用:
開(kāi)啟WiFidirect:
WifiDirectManager.getInstance().open();
關(guān)閉WiFidirect:
WifiDirectManager.getInstance().close();
搜索周?chē)b備:
WifiDirectManager.getInstance().startSearch();//搜索結(jié)果將通過(guò)OnPeersDataChangeListener監(jiān)聽(tīng)器觸發(fā)
在OnPeersDataChangeListener觸發(fā)后便可調(diào)用下面方法更新裝備列表。
//獲得周?chē)b備:
WifiDirectManager.getInstance().getPeers();//返回值是ArrayList<MyWifiDirectDevice> 列表
獲得組中裝備
WifiDirectManager.getInstance().getGroup();//返回值是ArrayList<MyWifiDirectDevice> 列表
連接裝備
在搜索完成后會(huì)得到周?chē)b備列表對(duì)象,這里傳入任意1裝備對(duì)象便可約請(qǐng)其加入組。
WifiDirectManager.getInstance().addGroups(myWifiP2pDevice);
發(fā)送文本消息:
WifiDirectManager.getInstance().sendTextByDevice(wifiP2pDevice,"msg");//傳入對(duì)方裝備對(duì)象和文本類容
發(fā)送文件:
WifiDirectManager.getInstance().sendFileByDevice(wifiP2pDevice,"file_path","filetag");//傳入裝備對(duì)象,文件路徑,和文件標(biāo)簽。其中文件標(biāo)簽是為了方面接收方在收到文件時(shí)可以對(duì)文件做基本的判斷,由用戶自定義。
發(fā)送byte數(shù)組:
WifiDirectManager.getInstance().sendBufferByDevice(wifiP2pDevice,new byte[10]);
4,總結(jié):
根據(jù)本SDK本人制作了1個(gè)demo項(xiàng)目供大家參考。基于WiFidirect的音樂(lè)播放器,在連接后能夠查看好友的手機(jī)音樂(lè)歌單,能控制對(duì)方裝備進(jìn)行播放(基于json文本傳輸),并且能在自己裝備上播放好友裝備的歌曲(基于文件傳輸)。個(gè)人覺(jué)得也是1款好玩的音樂(lè)app,合適好友之間1起玩。詳情可查看下1篇博客 基于WiFidirect的音樂(lè)播放器
下載地址:https://github.com/coyclei/FriendMusic
筆者能力有限,SDK中難免會(huì)出現(xiàn)1些毛病,還望大家多多包涵,并請(qǐng)及時(shí)向我反饋交換。謝謝!
上一篇 [置頂] Python selenium —— 動(dòng)態(tài)id、class怎么定位
下一篇 javascript基礎(chǔ)復(fù)習(xí)之函數(shù),定時(shí)器,erval函數(shù)