2014-08-29 98 views
0

目前我正在开发音乐播放器的应用程序,其中DJ正在播放歌曲和听众听音乐,但它涉及网络,如果客户端和DJ在同一个网络上,那么他们听那里的演出活动否则不是所以我们有更多的两个WiFi网络问题是这样的,如果网络1是关闭的移动交换机默认情况下网络,所以我的应用程序将崩溃我想从OS获取通知,如果它从一个网络改变它热点另一个提前Android中的无线网络开关

回答

1

我们理解Thankx任何帮助,我经常这样做这样的,如果我拿出一个请求:

private static final int NETWORK_TYPE_MOBILE = 0; 
private static final int NETWORK_TYPE_WIFI = 1; 
private static final int NETWORK_TYPE_ETHERNET = 9; //yep, cable 

public static boolean checkForActiveNetworkOnDevice(Context applicationContext) { 
    boolean deviceHasConnectedWifi = false; 
    boolean deviceHasConnectedMobile = false; 
    boolean deviceHasConnectedEthernet = false; 

    ConnectivityManager connectivityManager = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo[] networkInfos = connectivityManager.getAllNetworkInfo(); 
    if (networkInfos != null) { 
     for (NetworkInfo networkInfo : networkInfos) { 
      if (NETWORK_TYPE_WIFI == networkInfo.getType()) { 
       if (networkInfo.isConnected()) { deviceHasConnectedWifi = true;} 
      } 
      if (NETWORK_TYPE_MOBILE == networkInfo.getType()) { 
       if (networkInfo.isConnected()) { deviceHasConnectedMobile = true;} 
      } 
      if (NETWORK_TYPE_ETHERNET == networkInfo.getType()) { 
       if (networkInfo.isConnected()) { deviceHasConnectedEthernet = true; } 
      } 
     } 
    } 
    return deviceHasConnectedWifi || deviceHasConnectedMobile || deviceHasConnectedEthernet; 
} 

public static boolean checkForWifi(Context applicationContext) { 
    boolean deviceHasConnectedWifi = false; 

    ConnectivityManager connectivityManager = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo[] networkInfos = connectivityManager.getAllNetworkInfo(); 
    if (networkInfos != null) { 
     for (NetworkInfo networkInfo : networkInfos) { 
      if (NETWORK_TYPE_WIFI == networkInfo.getType()) { 
       if (networkInfo.isConnected()) { deviceHasConnectedWifi = true;} 
      } 
     } 
    } 
    return deviceHasConnectedWifi; 
} 

public static boolean checkForEthernet(Context applicationContext) { 
    boolean deviceHasConnectedEthernet = false; 

    ConnectivityManager connectivityManager = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo[] networkInfos = connectivityManager.getAllNetworkInfo(); 
    if (networkInfos != null) { 
     for (NetworkInfo networkInfo : networkInfos) { 
      if (NETWORK_TYPE_ETHERNET == networkInfo.getType()) { 
       if (networkInfo.isConnected()) { deviceHasConnectedEthernet = true;} 
      } 
     } 
    } 
    return deviceHasConnectedEthernet; 
} 

但是,如果设备断开连接,您应该让MediaPlayer拨打OnErrorListener。如果发生这种情况,你可以再次检查连接,如果你有网络连接,你可以恢复播放。

编辑 哦,看来我误解了你的问题,但我留下了我的答案,因为你仍然可以检查连接。