use the settings_away_chk pref at startup, i need to add a listener for runtime now
--- a/src/com/beem/project/beem/BeemService.java Wed Feb 17 02:29:11 2010 +0100
+++ b/src/com/beem/project/beem/BeemService.java Thu Feb 18 02:02:30 2010 +0100
@@ -57,6 +57,7 @@
import android.app.Notification;
import android.app.NotificationManager;
import android.app.Service;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -102,7 +103,10 @@
private boolean mUseProxy;
private IXmppFacade.Stub mBind;
- private BeemServiceBroadcastReceiver mReceiver = new BeemServiceBroadcastReceiver();
+ private BeemBroadcastReceiver mReceiver = new BeemBroadcastReceiver();
+ private BeemServiceBroadcastReceiver mOnOffReceiver = new BeemServiceBroadcastReceiver();
+
+ private boolean mOnOffReceiverIsRegistered;
/**
* Constructor.
@@ -111,7 +115,7 @@
}
/**
- * Initialise la configuration de la connexion.
+ * Initialize the connection.
*/
private void initConnectionConfig() {
mUseProxy = mSettings.getBoolean("settings_key_proxy_use", false);
@@ -160,6 +164,8 @@
}
return true;
}
+
+
/**
* {@inheritDoc}
@@ -168,8 +174,11 @@
public void onCreate() {
super.onCreate();
registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
- registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
- registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
+ if (mSettings.getBoolean("settings_away_chk",false)) {
+ mOnOffReceiverIsRegistered = true;
+ registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
+ registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
+ }
mSettings = PreferenceManager.getDefaultSharedPreferences(this);
String tmpJid = mSettings.getString("settings_key_account_username", "");
@@ -210,6 +219,8 @@
Log.d("Service", "onDestroy");
mNotificationManager.cancelAll();
unregisterReceiver(mReceiver);
+ if (mOnOffReceiverIsRegistered)
+ unregisterReceiver(mOnOffReceiver);
if (mConnection.isAuthentificated() && BeemConnectivity.isConnected(this))
mConnection.disconnect();
Log.d(TAG, "ONDESTROY");
@@ -247,7 +258,7 @@
}
/**
- * Reset the status to online after a deconnection.
+ * Reset the status to online after a disconnect.
*/
public void resetStatus() {
Editor edit = mSettings.edit();
@@ -369,17 +380,16 @@
*/
}
- private class BeemServiceBroadcastReceiver extends BeemBroadcastReceiver {
-
+ private class BeemServiceBroadcastReceiver extends BroadcastReceiver {
+
private String mOldStatus;
private int mOldMode;
-
+
public BeemServiceBroadcastReceiver() {
}
@Override
public void onReceive(final Context context, final Intent intent) {
- super.onReceive(context, intent);
String intentAction = intent.getAction();
if (intentAction.equals(Intent.ACTION_SCREEN_OFF)) {
mOldMode = mConnection.getPreviousMode();