我所做的是
我正在播放无线网络流,3g也开启了。 我禁用了wifi,流停止但是重新启动导致3g启用。
但是当wifi和4g打开时,问题就开始了,那个时候它无法正常工作
我添加了像
这样的听众IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver,intentFilter) ;
接收者是
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try{ {
if(GetNetworkStatus.isNetworkAvailable(getApplicationContext()))
{if(!mIsPlaying)
justPlay();
}
else
{justStop();
handler=new Handler();
r = new Runnable()
{
public void run()
{
try{
Thread.sleep(4000);
}
catch(Exception s)
{}
if(GetNetworkStatus.isNetworkAvailable(getApplicationContext()))
justPlay();
/*if(!mIsPlaying)
handler.postDelayed(this, 3000);*/
}
};
try{
handler.postDelayed(r, 1000);
}
catch(Exception e)
{
}
Toast.makeText(getApplicationContext(), "Internet Connection Failed", Toast.LENGTH_LONG).show();
}
}
}
catch(Exception e)
{
finish();
} }
};
答案 0 :(得分:1)
我相信记录 Extra 内容信息可能有助于您确定实际原因。 参考网址:http://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION
发生了网络连接的变化。默认连接 已经建立或丢失。受影响的NetworkInfo 网络作为额外发送;应该咨询一下,看看是什么样的 发生连通事件。
如果这是从a故障转移的结果 断开网络,然后FAILOVER_CONNECTION布尔额外是 设置为true。
如果连接管理器正在尝试连接丢失 连接(或已经连接)到另一个网络, 新网络的NetworkInfo也作为额外传递。这让我们 广播的任何接收者都知道他们不一定 告诉用户没有数据流量可行。相反, 接收器应该很快就会有另一个广播,这表明要么 故障转移尝试成功(因此仍然存在整体数据 连接),或故障转移尝试失败,意味着所有 连接已经丢失。
对于断开事件,设置了布尔额外的EXTRA_NO_CONNECTIVITY 如果根本没有连接的网络,则为true。
常量值:" android.net.conn.CONNECTIVITY_CHANGE"
在您的GetNetworkStatus.isNetworkAvailable()中,您是否正确检查了LTE连接类型? 您可以使用以下方法(从其他地方收集,但效果很好)
public static String getNetworkClass(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if(info==null || !info.isConnected())
return "-"; //not connected
if(info.getType() == ConnectivityManager.TYPE_WIFI)
return "WIFI";
if(info.getType() == ConnectivityManager.TYPE_MOBILE){
int networkType = info.getSubtype();
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return "2G";
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
return "3G";
case TelephonyManager.NETWORK_TYPE_LTE:
return "4G";
default:
return "?";
}
}
return "?";
}