WIFI 状態のリスニング
-
12-11-2019 - |
質問
リスナーをワイヤレス状態でリッスンするように設定したいのですが、誰か私のコードを手伝ってくれませんか
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
...
TelephonyManager wTelephonyManager;
...
wTelephonyManager=(TelephonyManager)getSystemService(Context.WIFI_SERVICE);
wTelephonyManager.listen(new PhoneL(),PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
//ここに Wi-Fi の変更をリッスンするために使用するイベントがあり、上記のコードはすべて onCreate にあります{}
class PhoneL extends PhoneStateListener
{
public void onWifiStateChanged(int state, String nesto)
{
mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
//mWifi.isConnectedOrConnecting()
if(mWifi.isConnectedOrConnecting())
{
Toast.makeText(WifiActivity.this,"Ima WIFI",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(WifiActivity.this,"! NEMA WIFI",Toast.LENGTH_LONG).show();
}
}
}
//Wi-Fi の状態をリッスンして Wi-Fi が接続されているかどうかを確認するリスナーの作成を手伝ってくれる人はいますか、そうでない場合は接続しています 3g/4g 経由のデータ パケット トラフィックを有効にしたい
解決
Data Traffic
が接続されていないときは、WiFi
に切り替えるように求められますが、問題があります。
画面がオフになっているときにWiFiをオフにすると、WiFiと3Gネットワークの間で絶えず変更され、バックグラウンドでデータを送信するためのアプリを選択した場合は、無制限のデータプランを持たない場合はCostlierのデータ接続を使用します。。
もう1つの問題は、それほど強いWiFiシグナルを持つエリア内にいるとき、それは常にデータトラフィックに変更され、あなたは閲覧または何でも問題を抱えています。
3番目の問題は、データよりもWiFi接続を使用するのが良い(バッテリ賢明)ことが、画面が消灯しているときにWiFiをオフにしないでください。(さもなければ)それをオフにしてWiFiに回すと、常にオンになるために最も費用がかかる(バッテリー)。したがって、それをAndroidシステムに残します。
他のヒント
私はその問題にも出会いましたが、これが私が解決する方法です。
私の活動の中で存在する(..)私はしました
this.registerReceiver(mWifiStateChangedReceiver,new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));
.
そしてさらに私はこのようにしてメンバー 'MWiFistateChangedReceiver'を作成しました
private BroadcastReceiver mWifiStateChangedReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
int extraWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
switch (extraWifiState)
{
case WifiManager.WIFI_STATE_DISABLED:
case WifiManager.WIFI_STATE_DISABLING:
enableUI(false);
break;
case WifiManager.WIFI_STATE_ENABLED:
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
while(conMan.getActiveNetworkInfo() == null || conMan.getActiveNetworkInfo().getState() != NetworkInfo.State.CONNECTED)
{
try
{
Thread.sleep(500);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
update();
enableUI(true);
break;
case WifiManager.WIFI_STATE_ENABLING:
break;
case WifiManager.WIFI_STATE_UNKNOWN:
break;
}
}
};
.
表示できるように、WifiManager.WIFI_STATE_ENABLED
を取得すると、ネットワークが実際に接続されているかどうかをさらにテストします。少なくともこれは私の推測でした、それが私がネットワークが本当に接続されるまで待っている理由です。
信号強度を聞きたい場合は、次の場所でも聞くことができます。
WifiManager.RSSI_CHANGED_ACTION