2017年5月21日 星期日

[工作] 在Android上如何確認你的裝置有連外的能力

在Android上, 我們可能會用ConnectivityManager來檢查連線狀態:
public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
}
 
這只能檢查Android device是否有連線到AP, 卻不能知道是否有對外連線的能力.
 
想要檢查現在裝置是否能對外連線, 目前找到兩種方式:
1. 用ping檢查
public boolean isOnline() {
    Runtime runtime = Runtime.getRuntime();
    try {
        Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
        int     exitValue = ipProcess.waitFor();
        return (exitValue == 0);
    }
    catch (IOException e)          { e.printStackTrace(); }
    catch (InterruptedException e) { e.printStackTrace(); }

    return false;
}
 
2. 連線至DNS檢查  
public boolean isOnline() {
    try {
        int timeoutMs = 1500;
        Socket sock = new Socket();
        SocketAddress sockaddr = new InetSocketAddress("8.8.8.8", 53);

        sock.connect(sockaddr, timeoutMs);
        sock.close();

        return true;
    } catch (IOException e) { return false; }
}
 
來源參考:
http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-times-out
 

2017年5月20日 星期六

[工作] Windows10版docker安裝路徑更改

我的Windows10是Home Edition的,

所以只能安裝Docker tool

首先在還沒開始安裝之前, 需要先設定以下環境變數.

MACHINE_STORAGE_PATH
DOCKER_CERT_PATH
路徑設為你要安裝的地方.

然後再開始安裝docker tool, 就ok了