package com.hellodev.lightme.service;
import com.hellodev.lightme.FlashApp;
import com.hellodev.lightme.FlashController;
import com.hellodev.lightme.R;
import com.hellodev.lightme.activity.SettingActivity;
import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.os.IBinder;
import android.util.Log;
import android.view.WindowManager;
public class ControlService extends Service {
private final static String TAG = "AUTO_CLOSE";
public final static String CONTROL_TYPE_KEY = "control_type";
public final static int CONTROL_TYPE_UNKNOWN = 0;
public final static int CONTROL_TYPE_SHOW_ACDIALOG = 1;
public final static int CONTROL_TYPE_CLOSE_ACDIALOG = 2;
public final static String ACTION_AUTO_CLOSE = "hellodev.service.action.AUTO_CLOSE";
private FlashController flashController;
private AlertDialog mAutoCloseDialog;
private boolean handlingAutoClose,checkingLisense;
@Override
public void onCreate() {
super.onCreate();
flashController = FlashController.getInstance();
handlingAutoClose = checkingLisense = false;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent != null) {
String action = intent.getAction();
if (ACTION_AUTO_CLOSE.equals(action)) {
int controlType = intent.getIntExtra(CONTROL_TYPE_KEY, CONTROL_TYPE_UNKNOWN);
if(controlType == CONTROL_TYPE_SHOW_ACDIALOG) {
showAutoCloseCommand();
}
}
}
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
}
private void showAutoCloseCommand() {
if(flashController.isFlashOn()) {
//滑动滚动条
flashController.turnFlashOff();
flashController.notifyFlashLevelChanged();//自动关闭时
if (mAutoCloseDialog == null)
initAutoCloseAlert();
mAutoCloseDialog.show();
handlingAutoClose = true;
}
}
private void initAutoCloseAlert() {
if (mAutoCloseDialog == null) {
final Context appContext = FlashApp.getContext();
AlertDialog.Builder builder = new AlertDialog.Builder(
appContext,
android.R.style.Theme_Holo_Light_Panel);
builder.setIcon(R.drawable.ic_logo);
builder.setTitle(R.string.alert_auto_close_title);
builder.setMessage(R.string.alert_auto_close_message);
builder.setPositiveButton(R.string.alert_auto_close_positive,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
stopAutoCloseService();
}
});
builder.setNeutralButton(R.string.alert_auto_close_neutral,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(appContext,
SettingActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
appContext.startActivity(intent);
dialog.cancel();
stopAutoCloseService();
}
});
builder.setNegativeButton(R.string.alert_auto_close_negetive,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
flashController.toggleFlash();
flashController.notifyFlashLevelChanged();
stopAutoCloseService();
}
});
builder.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
stopAutoCloseService();//FIXME 点击其他区域关闭了dialog
}
});
mAutoCloseDialog = builder.create();
mAutoCloseDialog.getWindow().setType(
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
}
private void stopAutoCloseService() {
handlingAutoClose = false;
if(checkingLisense == false) {
stopSelf();
}
}
}