# HG changeset patch # User nikita@nikita-laptop # Date 1266454950 -3600 # Node ID 47cd386089b31d7576a72992b61faf53420733fa # Parent d1a599ccf87925374a532a8b9a2702ef3ee54969 use the settings_away_chk pref at startup, i need to add a listener for runtime now diff -r d1a599ccf879 -r 47cd386089b3 src/com/beem/project/beem/BeemService.java --- 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();