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

當(dāng)前位置:首頁 > 智能硬件 > 人工智能AI
[導(dǎo)讀] 如今開發(fā)的app沒有不用到網(wǎng)絡(luò)的,所以對(duì)當(dāng)前網(wǎng)絡(luò)狀態(tài)的準(zhǔn)確把控就尤為重要了。經(jīng)常有這樣的場(chǎng)景:獲取手機(jī)當(dāng)前網(wǎng)絡(luò)類型、是否連接Wi-Fi、是否能夠訪問外網(wǎng)(英特網(wǎng))。今天我們要說的就是如何判斷手機(jī)

如今開發(fā)的app沒有不用到網(wǎng)絡(luò)的,所以對(duì)當(dāng)前網(wǎng)絡(luò)狀態(tài)的準(zhǔn)確把控就尤為重要了。經(jīng)常有這樣的場(chǎng)景:獲取手機(jī)當(dāng)前網(wǎng)絡(luò)類型、是否連接Wi-Fi、是否能夠訪問外網(wǎng)(英特網(wǎng))。今天我們要說的就是如何判斷手機(jī)是否能夠與服務(wù)器通信。

Note: 本文所有代碼均是基于kotlin語言實(shí)現(xiàn)

1.錯(cuò)誤方法

在寫代碼前,先在網(wǎng)上搜索了主流的解決方案,發(fā)現(xiàn)大家都是前篇一律的思路:使用NetworkInfo中的一個(gè)狀態(tài)(State)是否是連接狀態(tài)來判斷,但是結(jié)果是殘酷的,該方法是用來判斷是否連接了Wi-Fi,并不能表示手機(jī)連接了互聯(lián)網(wǎng)。不過我也把代碼貼出來,供大家參考:

2.正確方法

權(quán)限:

<uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

方案一:ping服務(wù)器地址(簡單)

通過ping命令的返回結(jié)果來得知是否連接外網(wǎng),現(xiàn)在主流有效的方法均是這個(gè)原理,只是大部分都是ping的百度的地址,這里推薦使用8.8.8.8,示例代碼如下:

PS:8.8.8.8是一個(gè)dns服務(wù)器地址,是Google提供的免費(fèi)DNS服務(wù)器的IP地址。
這個(gè)方案的優(yōu)點(diǎn)是:

可以運(yùn)行在主線程,且是同步的

速度快

缺點(diǎn)也有:

在一些老的手機(jī)上并不起效,比如Galaxy S3,原因是跟手機(jī)的OEM有關(guān),具體原因可以參考:Why does ping works on some devices and not others?

方案二:連接服務(wù)器端口(推薦)

使用socket連接服務(wù)器的一個(gè)端口,并通過連接的結(jié)果來判斷手機(jī)是否連接外網(wǎng),推薦使用該方法,因?yàn)樵摲椒ㄟm用于所有的手機(jī)Android版本,示例代碼如下:

funisOnline() =try{valTImeoutMs =1500Socket().use{//連接的端口不同,網(wǎng)絡(luò)協(xié)議不同。 DNS:53;HTTP:80valsocketAddr = InetSocketAddress("8.8.8.8",53) it.connect(socketAddr, TImeoutMs) }true} catch (e: Throwable) {false}

優(yōu)點(diǎn):

速度快,非常快

方法通吃,沒有煩人的版本適配

缺點(diǎn):

不能在主線程中運(yùn)行

方案三:根據(jù)域名獲取IP(推薦)

使用InetAddress提供的方法getByName()獲取某個(gè)域名的IP地址,然后根據(jù)是否獲取的成功來判斷是否連接外網(wǎng)。推薦使用該方法。

優(yōu)點(diǎn):

速度快,超時(shí)可自定義

可運(yùn)行在主線程

各個(gè)版本通吃

缺點(diǎn):

暫無

3.總結(jié)

其實(shí)以上有效的三個(gè)方案的思路都是一樣的:

進(jìn)行一次網(wǎng)絡(luò)訪問(必須訪問公網(wǎng)的一個(gè)地址,無論是域名或者IP地址)

根據(jù)網(wǎng)絡(luò)返回的結(jié)果進(jìn)行實(shí)際判斷

本站聲明: 本文章由作者或相關(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日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

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

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(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中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

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

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

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

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

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

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(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年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

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