package org.superdry.sample.tasker.receiver.state;
import org.superdry.sample.tasker.activity.EditStateActivity;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.os.PowerManager;
public final class BackgroundService extends Service {
protected static final Intent INTENT_REQUEST_REQUERY = new Intent(
com.twofortyfouram.locale.Intent.ACTION_REQUEST_QUERY).putExtra(
com.twofortyfouram.locale.Intent.EXTRA_ACTIVITY,
EditStateActivity.class.getName());
static final String EXTRA_BOOLEAN_WAS_SCREEN_ON = BackgroundService.class
.getName() + ".extra.BOOLEAN_WAS_SCREEN_ON";
private BroadcastReceiver mReceiver;
private boolean mIsOnStartCommandCalled = false;
@Override
public void onCreate() {
super.onCreate();
mReceiver = new DisplayReceiver();
final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(mReceiver, filter);
}
@Override
public int onStartCommand(final Intent intent, final int flags,
final int startId) {
super.onStartCommand(intent, flags, startId);
if (null != intent) {
if (!mIsOnStartCommandCalled) {
if ((((PowerManager) getSystemService(Context.POWER_SERVICE))
.isScreenOn()) != intent.getBooleanExtra(
EXTRA_BOOLEAN_WAS_SCREEN_ON, false))
sendBroadcast(INTENT_REQUEST_REQUERY);
}
ServiceWakeLockManager.releaseLock();
}
mIsOnStartCommandCalled = true;
return START_STICKY;
}
@Override
public IBinder onBind(final Intent arg0) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
mReceiver = null;
}
/**
* �f�B�X�v���C��Ԃ����Receiver
*/
private static final class DisplayReceiver extends BroadcastReceiver {
public DisplayReceiver() {
super();
}
@Override
public void onReceive(final Context context, final Intent intent) {
if (isInitialStickyBroadcast())
return;
context.sendBroadcast(INTENT_REQUEST_REQUERY);
}
}
}