mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-02-05 20:45:49 +01:00
GamesList starts a repeating alarm that invokes a new activity that
launches the service. Service can now do a single check with the relay, notify if needed, and exit (but doesn't yet.)
This commit is contained in:
parent
25e7889c28
commit
48ac79be51
4 changed files with 72 additions and 19 deletions
|
@ -81,6 +81,10 @@
|
||||||
>
|
>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity android:name="RelayActivity"
|
||||||
|
>
|
||||||
|
</activity>
|
||||||
|
|
||||||
<!-- downloading dicts -->
|
<!-- downloading dicts -->
|
||||||
<activity android:name=".DictImportActivity"
|
<activity android:name=".DictImportActivity"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
|
|
|
@ -23,6 +23,9 @@ package org.eehouse.android.xw4;
|
||||||
import android.app.ListActivity;
|
import android.app.ListActivity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
import android.app.AlarmManager;
|
||||||
|
import android.app.PendingIntent;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
@ -45,6 +48,7 @@ import org.eehouse.android.xw4.jni.*;
|
||||||
public class GamesList extends ListActivity {
|
public class GamesList extends ListActivity {
|
||||||
private static final int WARN_NODICT = Utils.DIALOG_LAST + 1;
|
private static final int WARN_NODICT = Utils.DIALOG_LAST + 1;
|
||||||
private static final int CONFIRM_DELETE_ALL = Utils.DIALOG_LAST + 2;
|
private static final int CONFIRM_DELETE_ALL = Utils.DIALOG_LAST + 2;
|
||||||
|
private static final long CHECK_INTERVAL_SECONDS = 5;
|
||||||
|
|
||||||
private GameListAdapter m_adapter;
|
private GameListAdapter m_adapter;
|
||||||
private String m_invalPath = null;
|
private String m_invalPath = null;
|
||||||
|
@ -105,7 +109,8 @@ public class GamesList extends ListActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState)
|
||||||
|
{
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
PreferenceManager.setDefaultValues( this, R.xml.xwprefs, false );
|
PreferenceManager.setDefaultValues( this, R.xml.xwprefs, false );
|
||||||
|
@ -130,8 +135,16 @@ public class GamesList extends ListActivity {
|
||||||
|
|
||||||
FirstRunDialog.show( this, false );
|
FirstRunDialog.show( this, false );
|
||||||
|
|
||||||
Intent service = new Intent(this, RelayService.class );
|
// Intent service = new Intent(this, RelayService.class );
|
||||||
startService( service );
|
// startService( service );
|
||||||
|
|
||||||
|
AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
|
||||||
|
PendingIntent intent =
|
||||||
|
PendingIntent.getActivity( this, 0,
|
||||||
|
new Intent(this, RelayActivity.class), 0);
|
||||||
|
am.setInexactRepeating( AlarmManager.ELAPSED_REALTIME_WAKEUP,
|
||||||
|
0, // first firing
|
||||||
|
CHECK_INTERVAL_SECONDS*1000, intent );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
/* -*- compile-command: "cd ../../../../../; ant install"; -*- */
|
||||||
|
/*
|
||||||
|
* Copyright 2010 by Eric House (xwords@eehouse.org). All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.eehouse.android.xw4;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
public class RelayActivity extends Activity {
|
||||||
|
@Override
|
||||||
|
protected void onCreate( Bundle savedInstanceState )
|
||||||
|
{
|
||||||
|
super.onCreate( savedInstanceState );
|
||||||
|
|
||||||
|
Intent service = new Intent(this, RelayService.class );
|
||||||
|
startService( service );
|
||||||
|
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,6 +21,7 @@
|
||||||
package org.eehouse.android.xw4;
|
package org.eehouse.android.xw4;
|
||||||
|
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
|
@ -28,6 +29,7 @@ import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
|
|
||||||
public class RelayService extends Service {
|
public class RelayService extends Service {
|
||||||
|
|
||||||
private NotificationManager m_nm;
|
private NotificationManager m_nm;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -36,9 +38,8 @@ public class RelayService extends Service {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
Utils.logf( "RelayService::onCreate() called" );
|
Utils.logf( "RelayService::onCreate() called" );
|
||||||
|
|
||||||
// setupNotification();
|
|
||||||
|
|
||||||
Thread thread = new Thread(null, m_task, getClass().getName() );
|
Thread thread = new Thread( null, m_task, getClass().getName() );
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,32 +67,29 @@ public class RelayService extends Service {
|
||||||
// return 0;
|
// return 0;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private void setupNotification()
|
// private void setupNotification()
|
||||||
{
|
// {
|
||||||
m_nm = (NotificationManager)getSystemService( NOTIFICATION_SERVICE );
|
// m_nm = (NotificationManager)getSystemService( NOTIFICATION_SERVICE );
|
||||||
|
|
||||||
Notification notification =
|
// Notification notification =
|
||||||
new Notification( R.drawable.icon48x48, "foo",
|
// new Notification( R.drawable.icon48x48, "foo",
|
||||||
System.currentTimeMillis());
|
// System.currentTimeMillis());
|
||||||
|
|
||||||
PendingIntent intent = PendingIntent
|
// PendingIntent intent = PendingIntent
|
||||||
.getActivity( this, 0, new Intent(this, BoardActivity.class), 0);
|
// .getActivity( this, 0, new Intent(this, BoardActivity.class), 0);
|
||||||
|
|
||||||
notification.setLatestEventInfo( this, "bazz", "bar", intent );
|
// notification.setLatestEventInfo( this, "bazz", "bar", intent );
|
||||||
|
|
||||||
m_nm.notify( R.string.running_notification, notification );
|
// m_nm.notify( R.string.running_notification, notification );
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Thread that does the actual work of pinging the relay
|
// Thread that does the actual work of pinging the relay
|
||||||
private Runnable m_task = new Runnable() {
|
private Runnable m_task = new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
// Set an alarm to try again in n minutes, then quit.
|
|
||||||
|
|
||||||
RelayService.this.stopSelf();
|
RelayService.this.stopSelf();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue