2014-08-29 102 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。如果發生這種情況,你可以再次檢查連接,如果你有網絡連接,你可以恢復播放。

編輯 哦,看來我誤解了你的問題,但我留下了我的答案,因爲你仍然可以檢查連接。