diff --git a/src/org/torproject/android/Orbot.java b/src/org/torproject/android/Orbot.java index 5300deaf..c448ed95 100644 --- a/src/org/torproject/android/Orbot.java +++ b/src/org/torproject/android/Orbot.java @@ -17,7 +17,7 @@ import org.torproject.android.wizard.ChooseLocaleWizardActivity; import org.torproject.android.wizard.TipsAndTricks; import android.app.AlertDialog; -import android.app.NotificationManager; +import android.app.ProgressDialog; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; @@ -101,10 +101,10 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic } + ProgressDialog mProgressDialog; private void startService () { - appendLogTextAndScroll("starting Tor background service... "); Intent torService = new Intent(this, TorService.class); startService(torService); @@ -112,7 +112,9 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic bindService(torService, mConnection, Context.BIND_AUTO_CREATE); - + appendLogTextAndScroll("starting Tor background service... "); + mProgressDialog = ProgressDialog.show(this, "", getString(R.string.status_starting_up), true); + } private void doLayout () @@ -124,11 +126,8 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic lblStatus.setOnLongClickListener(this); imgStatus = (ImageProgressView)findViewById(R.id.imgStatus); imgStatus.setOnLongClickListener(this); - imgStatus.setOnTouchListener(this); - imgStatus.setEnabled(false); - lblStatus.setText("Initializing the application..."); downloadText = (TextView)findViewById(R.id.trafficDown); @@ -983,7 +982,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic // this is a bit of a strange/old/borrowed code/design i used to change the service state // not sure it really makes sense when what we want to say is just "startTor" - mService.setProfile(TorServiceConstants.PROFILE_ON); //this means turn on + mService.setProfile(TorServiceConstants.STATUS_ON); //this means turn on //here we update the UI which is a bit sloppy and mixed up code wise //might be best to just call updateStatus() instead of directly manipulating UI in this method - yep makes sense @@ -1010,7 +1009,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic { if (mService != null) { - mService.setProfile(TorServiceConstants.PROFILE_OFF); + mService.setProfile(TorServiceConstants.STATUS_OFF); Message msg = mHandler.obtainMessage(TorServiceConstants.DISABLE_TOR_MSG); mHandler.sendMessage(msg); @@ -1200,6 +1199,9 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic public void onServiceConnected(ComponentName className, IBinder service) { + if (mProgressDialog != null && mProgressDialog.isShowing()) + mProgressDialog.dismiss(); + appendLogTextAndScroll("Tor background service connected."); // This is called when the connection with the service has been @@ -1208,10 +1210,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic // service through an IDL interface, so get a client-side // representation of that from the raw service object. mService = ITorService.Stub.asInterface(service); - - imgStatus.setEnabled(true); - // We want to monitor the service for as long as we are // connected to it. try { @@ -1233,6 +1232,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic } + public void onServiceDisconnected(ComponentName className) { appendLogTextAndScroll("Tor background service disconnected."); diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java index 1dd39f80..b9f3791a 100644 --- a/src/org/torproject/android/service/TorService.java +++ b/src/org/torproject/android/service/TorService.java @@ -83,7 +83,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst public static boolean ENABLE_DEBUG_LOG = false; - private static int currentStatus = STATUS_OFF; + private int mCurrentStatus = STATUS_OFF; private final static int CONTROL_SOCKET_TIMEOUT = 0; @@ -183,7 +183,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst { sendCallbackLogMessage (getString(R.string.found_existing_tor_process)); - currentStatus = STATUS_ON; + mCurrentStatus = STATUS_ON; return true; } @@ -217,7 +217,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst public int getTorStatus () { - return currentStatus; + return mCurrentStatus; } @@ -340,12 +340,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst try { - - if (fileTor == null) - initBinariesAndDirectories(); - - updateSettings (); - + initialize(); new Thread (new TorStarter(intent)).start(); return Service.START_STICKY; @@ -386,7 +381,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst //if this is a start on boot launch turn tor on if (mIntent != null && mIntent.getAction()!=null && mIntent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { - setTorProfile(PROFILE_ON); + setTorProfile(STATUS_ON); } } catch (Exception e) @@ -422,7 +417,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst //stop the foreground priority and make sure to remove the persistant notification stopForeground(true); - currentStatus = STATUS_OFF; + mCurrentStatus = STATUS_OFF; if (mHasRoot && mEnableTransparentProxy) disableTransparentProxy(); @@ -744,7 +739,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst public void startTor () throws Exception { - currentStatus = STATUS_CONNECTING; + mCurrentStatus = STATUS_CONNECTING; if (fileTor == null) initBinariesAndDirectories(); @@ -1127,7 +1122,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst conn.setConf("Log", "debug file " + fileLog2.getCanonicalPath()); }*/ - currentStatus = STATUS_CONNECTING; + mCurrentStatus = STATUS_CONNECTING; String confSocks = conn.getInfo("net/listeners/socks"); StringTokenizer st = new StringTokenizer(confSocks," "); @@ -1297,7 +1292,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst // get several values - if (currentStatus == STATUS_CONNECTING) + if (mCurrentStatus == STATUS_CONNECTING) { //Map vals = conn.getInfo(Arrays.asList(new String[]{ // "status/bootstrap-phase", "status","version"})); @@ -1317,7 +1312,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst catch (Exception e) { Log.d(TAG, "Unable to get Tor status from control port"); - currentStatus = STATUS_UNAVAILABLE; + mCurrentStatus = STATUS_UNAVAILABLE; } }*/ @@ -1359,16 +1354,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst } - - - public int getProfile() throws RemoteException { - //return mProfile; - return PROFILE_ON; - } - public void setTorProfile(int profile) { - if (profile == PROFILE_ON) + if (profile == STATUS_ON) { sendCallbackStatusMessage (getString(R.string.status_starting_up)); @@ -1382,7 +1370,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst { logException("Unable to start Tor: " + e.toString(),e); - currentStatus = STATUS_OFF; + mCurrentStatus = STATUS_OFF; showToolbarNotification(getString(R.string.unable_to_start_tor) + ": " + e.getMessage(), ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr); stopTor(); } @@ -1393,7 +1381,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst stopTor(); - currentStatus = STATUS_OFF; + mCurrentStatus = STATUS_OFF; } } @@ -1405,7 +1393,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1) { - currentStatus = STATUS_ON; + mCurrentStatus = STATUS_ON; showToolbarNotification(getString(R.string.status_activated), NOTIFY_ID, R.drawable.ic_stat_tor); } @@ -1550,8 +1538,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst else if(status.equals("BUILT")) { - if (currentStatus == STATUS_CONNECTING) - currentStatus = STATUS_ON; + if (mCurrentStatus == STATUS_CONNECTING) + mCurrentStatus = STATUS_ON; logNotice(sb.toString()); @@ -1679,10 +1667,18 @@ public class TorService extends Service implements TorServiceConstants, TorConst public IBinder onBind(Intent intent) { + logNotice("Background service is bound. Status=" + mCurrentStatus); + return mBinder; } - public boolean checkAndInitImpl () + @Override + public void onRebind(Intent intent) { + + super.onRebind(intent); + } + + public boolean checkAndInitImpl () { if (fileTor != null) { @@ -1693,8 +1689,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst return true; } } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logException("error init Tor", e); } } @@ -2026,7 +2021,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst mBinder.saveConfiguration(); } - if (currentStatus != STATUS_OFF) + if (mCurrentStatus != STATUS_OFF) { if (!mConnectivity) { diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java index 19a99c89..a77cdac2 100644 --- a/src/org/torproject/android/service/TorServiceConstants.java +++ b/src/org/torproject/android/service/TorServiceConstants.java @@ -71,9 +71,6 @@ public interface TorServiceConstants { public final static int STATUS_ON = 1; public final static int STATUS_CONNECTING = 2; - public final static int PROFILE_OFF = -1; - public final static int PROFILE_ON = 1; - public static final int STATUS_MSG = 1; public static final int ENABLE_TOR_MSG = 2; public static final int DISABLE_TOR_MSG = 3;