- Really change to SDK 7
- Start and stop buttons - Handler for screen updates - Make service not sticky - Log tweaks - Fix version script
This commit is contained in:
@ -10,7 +10,7 @@
|
||||
|
||||
<!-- 3 = 1.5, 2 = 1.1, 1 = 1.0; would probably work with 1 but don't have a 1.0 SDK to test against -->
|
||||
<!-- 3 required for NDK -->
|
||||
<uses-sdk android:minSdkVersion="3" />
|
||||
<uses-sdk android:minSdkVersion="7" />
|
||||
|
||||
<application android:label="@string/app_name"
|
||||
android:icon="@drawable/ic_launcher_itoopie" >
|
||||
|
@ -5,6 +5,7 @@
|
||||
android:layout_height="fill_parent"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/main_title"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="I2P Main Page"
|
||||
@ -20,5 +21,17 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Go to news"
|
||||
/>
|
||||
<Button
|
||||
android:id="@+id/router_start_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Start router"
|
||||
/>
|
||||
<Button
|
||||
android:id="@+id/router_stop_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Stop router"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -53,7 +53,7 @@ echo "Android version: '$VERSIONSTRING' (${VERSIONINT})"
|
||||
echo "my.version.name=${VERSIONSTRING}" > version.properties
|
||||
echo "my.version.code=${VERSIONINT}" >> version.properties
|
||||
|
||||
SUBST='s/android.versionCode="[0-9]"/android.versionCode="'${VERSIONINT}'"/'
|
||||
SUBST='s/android.versionCode="[0-9]*"/android.versionCode="'${VERSIONINT}'"/'
|
||||
sed "$SUBST" < $MANIFEST > $TMP
|
||||
SUBST='s/android.versionName="[^"]*"/android.versionName="'${VERSIONSTRING}'"/'
|
||||
sed "$SUBST" < $TMP > $MANIFEST
|
||||
|
@ -28,6 +28,7 @@ public abstract class I2PActivityBase extends Activity {
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
System.err.println(this + " onCreate called");
|
||||
super.onCreate(savedInstanceState);
|
||||
_myDir = getFilesDir().getAbsolutePath();
|
||||
}
|
||||
|
@ -2,13 +2,18 @@ package net.i2p.android.router.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
|
||||
public class MainActivity extends I2PActivityBase {
|
||||
|
||||
private Handler _handler;
|
||||
private Runnable _updater;
|
||||
|
||||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
@ -17,15 +22,74 @@ public class MainActivity extends I2PActivityBase {
|
||||
setContentView(R.layout.main);
|
||||
|
||||
Button news = (Button) findViewById(R.id.news_button);
|
||||
if (news == null) {
|
||||
System.err.println("No button resource!");
|
||||
return;
|
||||
}
|
||||
news.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(view.getContext(), NewsActivity.class);
|
||||
startActivityForResult(intent, 0);
|
||||
}
|
||||
});
|
||||
|
||||
Button start = (Button) findViewById(R.id.router_start_button);
|
||||
start.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View view) {
|
||||
if (_routerService != null && _isBound) {
|
||||
_routerService.manualStart();
|
||||
updateVisibility();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Button stop = (Button) findViewById(R.id.router_stop_button);
|
||||
stop.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View view) {
|
||||
if (_routerService != null && _isBound) {
|
||||
_routerService.manualStop();
|
||||
updateVisibility();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
_handler = new Handler();
|
||||
_updater = new Updater();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
super.onStart();
|
||||
_handler.removeCallbacks(_updater);
|
||||
_handler.postDelayed(_updater, 50);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop()
|
||||
{
|
||||
super.onStop();
|
||||
_handler.removeCallbacks(_updater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
updateVisibility();
|
||||
}
|
||||
|
||||
private class Updater implements Runnable {
|
||||
public void run() {
|
||||
updateVisibility();
|
||||
_handler.postDelayed(this, 2500);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateVisibility() {
|
||||
boolean showStart = _routerService != null && _isBound && _routerService.canManualStart();
|
||||
Button start = (Button) findViewById(R.id.router_start_button);
|
||||
start.setVisibility(showStart ? View.VISIBLE : View.INVISIBLE);
|
||||
|
||||
boolean showStop = _routerService != null && _isBound && _routerService.canManualStop();
|
||||
Button stop = (Button) findViewById(R.id.router_stop_button);
|
||||
stop.setVisibility(showStop ? View.VISIBLE : View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
|
@ -59,10 +59,11 @@ public class RouterService extends Service {
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
System.err.println(this + " onStart called" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
synchronized (_stateLock) {
|
||||
if (_state != State.INIT)
|
||||
return START_STICKY;
|
||||
//return START_STICKY;
|
||||
return START_NOT_STICKY;
|
||||
_receiver = new I2PReceiver(this);
|
||||
if (_receiver.isConnected()) {
|
||||
_statusBar.update("I2P is starting up");
|
||||
@ -76,14 +77,15 @@ public class RouterService extends Service {
|
||||
_starterThread.start();
|
||||
}
|
||||
}
|
||||
return START_STICKY;
|
||||
//return START_STICKY;
|
||||
return START_NOT_STICKY;
|
||||
}
|
||||
|
||||
/** maybe this goes away when the receiver can bind to us */
|
||||
private class Waiter implements Runnable {
|
||||
public void run() {
|
||||
System.err.println(MARKER + this + " waiter thread" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
while (_state == State.WAITING) {
|
||||
try {
|
||||
Thread.sleep(30*1000);
|
||||
@ -110,7 +112,7 @@ public class RouterService extends Service {
|
||||
private class Starter implements Runnable {
|
||||
public void run() {
|
||||
System.err.println(MARKER + this + " starter thread" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
//System.err.println(MARKER + this + " JBigI speed test started");
|
||||
//NativeBigInteger.main(null);
|
||||
//System.err.println(MARKER + this + " JBigI speed test finished, launching router");
|
||||
@ -139,7 +141,7 @@ public class RouterService extends Service {
|
||||
private class StatusThread implements Runnable {
|
||||
public void run() {
|
||||
System.err.println(MARKER + this + " status thread started" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
Router router = _context.router();
|
||||
while (_state == State.RUNNING && router.isAlive()) {
|
||||
try {
|
||||
@ -187,7 +189,7 @@ public class RouterService extends Service {
|
||||
}
|
||||
_statusBar.update("Status thread died");
|
||||
System.err.println(MARKER + this + " status thread finished" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
}
|
||||
}
|
||||
|
||||
@ -195,7 +197,7 @@ public class RouterService extends Service {
|
||||
public IBinder onBind(Intent intent)
|
||||
{
|
||||
System.err.println("onBind called" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
return _binder;
|
||||
}
|
||||
|
||||
@ -218,13 +220,19 @@ public class RouterService extends Service {
|
||||
return rv;
|
||||
}
|
||||
|
||||
public boolean canManualStop() {
|
||||
return _state == State.WAITING || _state == State.STARTING || _state == State.RUNNING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop and don't restart
|
||||
*/
|
||||
public void manualStop() {
|
||||
System.err.println("manualStop called" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
synchronized (_stateLock) {
|
||||
if (!canManualStop())
|
||||
return;
|
||||
if (_state == State.WAITING || _state == State.STARTING)
|
||||
_starterThread.interrupt();
|
||||
if (_state == State.STARTING || _state == State.RUNNING) {
|
||||
@ -240,7 +248,7 @@ public class RouterService extends Service {
|
||||
*/
|
||||
public void networkStop() {
|
||||
System.err.println("networkStop called" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
synchronized (_stateLock) {
|
||||
if (_state == State.WAITING || _state == State.STARTING)
|
||||
_starterThread.interrupt();
|
||||
@ -253,7 +261,21 @@ public class RouterService extends Service {
|
||||
}
|
||||
}
|
||||
|
||||
public void restart() {
|
||||
public boolean canManualStart() {
|
||||
return _state == State.MANUAL_STOPPED;
|
||||
}
|
||||
|
||||
public void manualStart() {
|
||||
System.err.println("restart called" +
|
||||
" Current state is: " + _state);
|
||||
synchronized (_stateLock) {
|
||||
if (!canManualStart())
|
||||
return;
|
||||
_statusBar.update("I2P is starting up");
|
||||
_state = State.STARTING;
|
||||
_starterThread = new Thread(new Starter());
|
||||
_starterThread.start();
|
||||
}
|
||||
}
|
||||
|
||||
// ******** end methods accessed from Activities and Receivers ************
|
||||
@ -261,14 +283,17 @@ public class RouterService extends Service {
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
System.err.println("onDestroy called" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
|
||||
_statusBar.off(this);
|
||||
|
||||
I2PReceiver rcvr = _receiver;
|
||||
if (rcvr != null) {
|
||||
synchronized(rcvr) {
|
||||
unregisterReceiver(rcvr);
|
||||
try {
|
||||
// throws if not registered
|
||||
unregisterReceiver(rcvr);
|
||||
} catch (IllegalArgumentException iae) {}
|
||||
//rcvr.unbindRouter();
|
||||
//_receiver = null;
|
||||
}
|
||||
@ -298,11 +323,11 @@ public class RouterService extends Service {
|
||||
|
||||
public void run() {
|
||||
System.err.println(MARKER + this + " stopper thread" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
if (_context != null)
|
||||
_context.router().shutdown(Router.EXIT_HARD);
|
||||
_statusBar.off(RouterService.this);
|
||||
System.err.println("shutdown complete");
|
||||
System.err.println("********** Router shutdown complete");
|
||||
synchronized (_stateLock) {
|
||||
if (_state == nextState)
|
||||
_state = stopState;
|
||||
@ -313,12 +338,15 @@ public class RouterService extends Service {
|
||||
private class ShutdownHook implements Runnable {
|
||||
public void run() {
|
||||
System.err.println(this + " shutdown hook" +
|
||||
"Current state is: " + _state);
|
||||
" Current state is: " + _state);
|
||||
_statusBar.off(RouterService.this);
|
||||
I2PReceiver rcvr = _receiver;
|
||||
if (rcvr != null) {
|
||||
synchronized(rcvr) {
|
||||
unregisterReceiver(rcvr);
|
||||
try {
|
||||
// throws if not registered
|
||||
unregisterReceiver(rcvr);
|
||||
} catch (IllegalArgumentException iae) {}
|
||||
//rcvr.unbindRouter();
|
||||
//_receiver = null;
|
||||
}
|
||||
|
@ -47,7 +47,6 @@ class LogWriter implements Runnable {
|
||||
flushRecords();
|
||||
rereadConfig();
|
||||
}
|
||||
System.err.println("Done writing");
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error writing the logs: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
|
Reference in New Issue
Block a user