2017年3月11日 星期六

Network Connection

Network Connection


Network Connection:網路連線。


Checking Network Connection


  android檢查網路需要ConnectivityManager 類別,還需要呼叫getSystemService 方法。
  

ConnectivityManager check = (ConnectivityManager

this.context.getSystemService(Context.CONNECTIVITY_SERVICE); 


  有了ConnectivityManager 類別,就可以使用getAllNetworkInfo 方法來獲取所有網路的資料。取得方法用NetworkInfo的陣列。

     NetworkInfo[] info = check.getAllNetworkInfo();


    最後,需要檢查網路連線狀態。
//尋找跟哪一個網路連結
   for (int i = 0; i<info.length; i++){
   if (info[i].getState() == NetworkInfo.State.CONNECTED){
      Toast.makeText(context, "Internet is connected
      Toast.LENGTH_SHORT).show();
   }
}
    //info[i].getState:查看目前連線狀態。



   getState的數值其他網路狀態
  
    1-->連線中
    2-->斷線
    3-->斷線中
    4-->暫停
    5-->不明
   

    

Performing Network Operations


    如果要檢查是連上網,android 提供 HttpURLConnection 和 URL類別。

    String link = "http://www.google.com";
   URL url = new URL(link);  



     之後,需要用 openConnection 方法,接收HttpURLConnection的物件。還需要 connect 方法。

   HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();



    最後一件事,獲取網站的HTML 代碼。會使用InputStream 和 BufferedReader 的方法。

     //InputStream以Byte為單位的輸入串流。
    //getInputStream:取得伺服器輸入串流
    //BufferedReader採用緩衝區來處理檔案讀寫, 以減少磁碟存取頻率加快處理速度,格式是UTF-8
       InputStream is = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));


   //把抓到的資料放入reader,reader一次讀一行放入data,data加上跳行放入webPage 。
  String webPage = "",data="";
while ((data = reader.readLine()) != null){
   webPage += data + "\n";
}
     


  HttpURLConnection 其他 類別


       disconnect():將http連線關閉。


           getRequestMethod(string)取得請求遠程HTTP服務器的請求方法。

           getResponseCode(int)取得回應狀態碼。

          setRequestMethod(String method)設定請求遠程HTTP服務器的請求方法。

          usingProxy()  

   記得在androidManifest.xml增加兩行(新增在package=下一行)

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

    第一行,讓app可以順利的使用網路存取資料。

    第二行,開啟檢查網路狀態權限



參考文獻


Android - Network Connection

Android網絡連接教程

Android – 判斷手機是否連上網路 (ConnectivityManager)  (getState)

 Android 檢查 網路狀態

Android檢查是否有網路連線
https://gnehcic.azurewebsites.net/android-%E6%AA%A2%E6%9F%A5%E6%98%AF%E5%90%A6%E6%9C%89%E7%B6%B2%E8%B7%AF%E9%80%A3%E7%B7%9A/

Android之Http通信——3.Android HTTP請求方式:HttpURLConnection(getInputStream)
https://read01.com/jEmdDx.html

Java的網路程式設計(InputStream)
https://litotom.com/2016/05/11/java%E7%9A%84%E7%B6%B2%E8%B7%AF%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88/

Java 複習筆記 : 檔案處理(BufferedReader)
http://yhhuang1966.blogspot.tw/2014/03/java_3503.html

Bufferedreader BufferedWriter
http://blog.xuite.net/hcy_java/blog/314827993-Bufferedreader+BufferedWriter

Android學習筆記21:ImageView獲取網络圖片(getRequestMethod)
http://fanli7.net/a/JAVAbiancheng/JAVAzonghe/20130202/302034.html

Android check internet connection 檢查網路連線狀態

android 檢查網路連線

【分享】- 如何在 Android 程式中加入不會因網路問題而出現錯誤網頁視窗的 AdSense Mobile 服務?

Android─偵測網路連線狀態by ConnectivityManager

Android - 取得手機 wifi 連線狀態

Android藍牙開發

處理程序和執行緒

Android Detect Internet Connection Status Tutorial - Androidhive

Check Internet Connectivity




  

沒有留言:

張貼留言