package com.mehtank.androminion.server; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; public class DominionServer extends Service { @SuppressWarnings("unused") private static final String TAG = "DominionServer"; VDomServer vds; private final static String stopped = "Server stopped"; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); if (!test().equals(stopped)) return; Strings.context = this; VDomServer.main(new String[] { "Drew (AI)", "com.vdom.players.VDomPlayerDrew", "Earl (AI)", "com.vdom.players.VDomPlayerEarl", "Mary (AI)", "com.vdom.players.VDomPlayerMary", "Chuck (AI)", "com.vdom.players.VDomPlayerChuck", "Sarah (AI)", "com.vdom.players.VDomPlayerSarah", "Patrick (AI)", "com.vdom.players.VDomPlayerPatrick", // "-debug" }); vds = VDomServer.me; } @Override public void onDestroy() { if (vds != null) try { vds.quit(); } catch (NullPointerException e) { // whatever. } vds = null; super.onDestroy(); } String test() { if (vds == null) return stopped; int port = vds.getPort(); if (port == 0) return stopped; String host = getLocalIpAddress(); return "Server started on " + (host == null ? "localhost" : host) + ":" + port; } public String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { Log.e("DroidServer", ex.toString()); } return null; } }