56 lines
1.8 KiB
Java
56 lines
1.8 KiB
Java
package org.kivy.android;
|
|
|
|
import android.util.Log;
|
|
|
|
import java.io.IOException;
|
|
import java.net.Socket;
|
|
import java.net.InetSocketAddress;
|
|
|
|
import android.os.SystemClock;
|
|
|
|
import android.os.Handler;
|
|
|
|
import org.kivy.android.PythonActivity;
|
|
|
|
public class WebViewLoader {
|
|
private static final String TAG = "WebViewLoader";
|
|
|
|
public static void testConnection() {
|
|
|
|
while (true) {
|
|
if (WebViewLoader.pingHost("localhost", {{ args.port }}, 100)) {
|
|
Log.v(TAG, "Successfully pinged localhost:{{ args.port }}");
|
|
Handler mainHandler = new Handler(PythonActivity.mActivity.getMainLooper());
|
|
Runnable myRunnable = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
PythonActivity.mActivity.loadUrl("http://127.0.0.1:{{ args.port }}/");
|
|
Log.v(TAG, "Loaded webserver in webview");
|
|
}
|
|
};
|
|
mainHandler.post(myRunnable);
|
|
break;
|
|
|
|
} else {
|
|
Log.v(TAG, "Could not ping localhost:{{ args.port }}");
|
|
try {
|
|
Thread.sleep(100);
|
|
} catch(InterruptedException e) {
|
|
Log.v(TAG, "InterruptedException occurred when sleeping");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static boolean pingHost(String host, int port, int timeout) {
|
|
Socket socket = new Socket();
|
|
try {
|
|
socket.connect(new InetSocketAddress(host, port), timeout);
|
|
socket.close();
|
|
return true;
|
|
} catch (IOException e) {
|
|
try {socket.close();} catch (IOException f) {return false;}
|
|
return false; // Either timeout or unreachable or failed DNS lookup.
|
|
}
|
|
}
|
|
}
|