Ton*_*ony 5 android android-wifi android-wireless android-event
我想设置监听器来监听无线状态,任何人都可以帮助我使用我的代码
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
Run Code Online (Sandbox Code Playgroud)
...
TelephonyManager wTelephonyManager;
Run Code Online (Sandbox Code Playgroud)
...
wTelephonyManager=(TelephonyManager)getSystemService(Context.WIFI_SERVICE);
wTelephonyManager.listen(new PhoneL(),PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
Run Code Online (Sandbox Code Playgroud)
//这是我使用的事件,我想收听wifi更改,上面的代码全部在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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
//任何人都可以帮我创建一个监听器,它将监听wifi状态并检查wifi是否已连接或连接,如果不是我想通过3g/4g启用数据包流量
我也遇到了这个问题,这就是我解决它的方法.
在我的活动onCreate(..)我做了
this.registerReceiver(mWifiStateChangedReceiver,new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));
Run Code Online (Sandbox Code Playgroud)
另外我用这种方式创建了成员'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;
}
}
};
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,当我得到WifiManager.WIFI_STATE_ENABLED我另外测试网络是否真的连接时,因为启用的WiFi并不意味着它已连接.至少这是我的猜测,这就是我等到网络真正连接的原因.
den*_*nza -2
android系统要求切换到未连接Data Traffic时WiFi,但有问题。
如果您在屏幕关闭时关闭 WiFi,它会不断地在 WiFi 和 3G 网络之间切换,如果您选择了在后台发送数据的应用程序,它将使用数据连接,如果您没有无限数据计划,则成本会更高。
另一个问题是,当您位于 WiFi 信号不太强的区域时,它会不断变为数据流量,并且您会遇到浏览或其他问题。
第三个问题是电池,据我所知,使用 WiFi 连接比使用数据更好(电池方面),有一个附加组件在屏幕关闭时不会关闭 WiFi。(即使我这样做)因为关闭并打开 WiFi 是最昂贵的(电池),所以始终打开。所以把它留给android系统吧。
| 归档时间: |
|
| 查看次数: |
12028 次 |
| 最近记录: |