作者COOLOD (看八卦 認真你就輸了)
看板AndroidDev
標題[問題] Wifi連線能力問題請益
時間Wed Feb 4 09:36:43 2015
各位大大好 小弟最近再做有關android wifi相關的程式部份 爬了很多文
目前作到利用BroadcastReceiver偵測wifi狀態開關 但是遇到另外一種狀況
APP功能:
要從網路下載檔案 必須能偵測連線狀態 斷線時關閉下載 連線恢復後自動重啟下載
狀況:
用A手機當AP(開3G,開熱點名稱GGG),用B平板載入APP wifi選擇GGG
我操作A手機 開啟/關閉熱點 B平板都可以偵測到 關閉下載重啟下載
但是情況2 我熱點持續開著 關閉3G開啟3G 於B平板來說他都是有連線的狀態
可是實際上卻沒有出去連線的能力
我想要針對這種情況做偵測 但是都失敗了 也爬了很多文 但是都是針對wifi的連線
沒有對連線能力的解法
-------
以下是我針對wifi偵測部份的code
onCreat() {
...
mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
mNetworkChangedReceiver = new ConnectivityChangedReceiver();
registerReceiver(mNetworkChangedReceiver,
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
...
}
...
public boolean isNetworkConnected() {
NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
boolean connected = info != null && info.isConnected();
return connected;
}
...
private class ConnectivityChangedReceiver extends BroadcastReceiver {
public ConnectivityChangedReceiver() {
//do something
}
@Override
public void onReceive(Context context, Intent intent) {
//do something
}
}
---------
下面這些function都嘗試過 但是會認定正常連線 無法利用判斷
info.getTypeName(); // 目前以何種方式連線 [WIFI]
info.getState(); // 目前連線狀態 [CONNECTED]
info.isAvailable(); // 目前網路是否可使用 [true]
info.isConnected(); // 網路是否已連接 [true]
info.isConnectedOrConnecting(); // 網路是否已連接 或 連線中 [true]
info.isFailover(); // 網路目前是否有問題 [false]
也嘗試了蠻多ConnectivityManager和WifiManager的Intent但是都沒反應
想問大大們 是否有針對同樣情況做過處理 是否有哪個Intent或function關鍵字
是針對這種情況做處理的 請求大大們分享了 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.146.195.238
※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1423013807.A.975.html
→ ssccg: 你是說他有wifi,但是那個wifi沒連internet? 02/04 09:53
→ erttyy8821: 1.ping 2.follow systemUI 3.set connect timeout 02/04 09:56
→ COOLOD: s大 是的 02/04 11:20
→ COOLOD: e大的第2項 稍微有點不解 稍微爬一下文 是指判斷StatusBar 02/04 11:31
→ COOLOD: 去判斷 是否連線正常嗎? 情況對平板來說連線圖示沒有改變 02/04 11:34
→ COOLOD: 感謝大大提供 我先針對1 3做嘗試 02/04 11:34
→ erttyy8821: 看起來沒變不代表沒變 02/04 14:05
→ erttyy8821: 不過2.的做法算比較偷吃步 02/04 14:06
→ erttyy8821: 遇到特殊的devices可能會有問題 02/04 14:06
推 MrJerome: 照你的案例來看,建議不要從[連線狀態]進行判斷 02/04 19:24
→ MrJerome: 改從判斷[檔案是否完成] 02/04 19:25