package com.hellodev.lightme.activity;
import android.os.Bundle;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.TextView;
import com.hellodev.lightme.FlashController;
import com.hellodev.lightme.FlashController.OnFlashLevelChangedListener;
import com.hellodev.lightme.R;
import com.hellodev.lightme.service.ServiceHelper;
import com.hellodev.lightme.util.LightmeConstants;
import com.hellodev.lightme.util.MConnectHelper;
import com.hellodev.lightme.util.MDisplayHelper;
import com.hellodev.lightme.util.MLisenseMangaer;
import com.hellodev.lightme.util.MPreferenceManager;
import com.hellodev.lightme.util.SmartBarUtils;
import com.hellodev.lightme.util.MLisenseMangaer.OnLisenseStateChangeListener;
import com.hellodev.lightme.view.FlashView;
import com.hellodev.lightme.view.GuideViewManager;
import com.hellodev.lightme.view.OnFlashStateChangeListener;
import com.umeng.analytics.MobclickAgent;
public class MainActivity extends Activity implements
OnFlashStateChangeListener, OnFlashLevelChangedListener,
OnLisenseStateChangeListener, OnClickListener {
private final static String TAG = "MainActivity";
private FlashView flashView;
private ImageButton btnLock;
private FlashController flashController;
private MPreferenceManager prefsMgr;
private GuideViewManager guideViewMgr;
private boolean firstSetup = false;
private MConnectHelper connector;
private MLisenseMangaer lisenseManager;
private boolean isLisenseEnable = true;
private AlertDialog mLockDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ServiceHelper.startPanelService();
initData();
initSmartBar();
initView();
showGuideView();
MobclickAgent.updateOnlineConfig(this);// 更新在线发送策略
MobclickAgent.setDebugMode(false);
}
@Override
protected void onResume() {
super.onResume();
flashController.addObserver(this);
// initLisense();
if(flashController.hasCameraReleased()) {
flashController.turnFlashOffIfCameraReleased();
flashController.initCameraSync();
}
flashView.setFlashLevel(flashController.getCurrentLevel());
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
flashController.removeObserver(this);
MobclickAgent.onPause(this);
closeGuideView();
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseData();
}
@Override
public void onBackPressed() {
if (!prefsMgr.isLauncherPanelShown()) {
flashController.turnFlashOff();
}
super.onBackPressed();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.settings) {
Intent intent = new Intent(this, SettingActivity.class);
startActivity(intent);
return true;
} else
return super.onOptionsItemSelected(item);
}
@Override
public void onSwitchClick() {
flashView.setFlashLevel(flashController.toggleFlash());
closeGuideView();
}
@Override
public void onSwitchTurnUp() {
flashView.setFlashLevel(flashController.turnFlashUp());
}
@Override
public void onSwitchTurnDown() {
flashView.setFlashLevel(flashController.turnFlashDown());
}
@Override
public void onFlashLevelChanged(int currentLevel) {
flashView.setFlashLevel(currentLevel);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_lock:
initLockAlert();
mLockDialog.show();
break;
default:
break;
}
}
private void initView() {
flashView = (FlashView) findViewById(R.id.btn_toggle);
flashView.setOnSwitchStateChangeListener(this);
btnLock = (ImageButton) findViewById(R.id.btn_lock);
btnLock.setOnClickListener(this);
}
private void initSmartBar() {
ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(0);
SmartBarUtils.setActionBarViewCollapsable(actionBar, true);
// 替换back键图标
SmartBarUtils.setBackIcon(actionBar,
getResources().getDrawable(R.drawable.ic_back));
}
private void initData() {
// 相机和声音都在GuideActivity里面去初始化了
prefsMgr = MPreferenceManager.getInstance();
flashController = FlashController.getInstance();
connector = new MConnectHelper(this);
}
private void releaseData() {
if (mLockDialog != null && mLockDialog.isShowing())
mLockDialog.cancel();
if(!prefsMgr.isKeyguardPanelShown()
&& !prefsMgr.isLauncherPanelShown()) {
flashController.releaseInstance();
}
prefsMgr = null;
flashController = null;
flashView.releaseData();
}
private void showGuideView() {
firstSetup = prefsMgr.getFirtStartDate() == 0;
if (firstSetup) {
prefsMgr.setFirstStartDate();
firstSetup = false;
guideViewMgr = new GuideViewManager(this.getWindowManager(),
WindowManager.LayoutParams.TYPE_TOAST);
MDisplayHelper displayHelper = new MDisplayHelper();
int flashViewGuideY = displayHelper.dpiToPx(25);
TextView guideView = new TextView(this);
guideView.setBackgroundResource(R.drawable.guide_text);
guideViewMgr.add(guideView, Gravity.CENTER_HORIZONTAL
| Gravity.BOTTOM, 0, flashViewGuideY, true);
}
}
private void closeGuideView() {
if (guideViewMgr != null) {
guideViewMgr.close();
guideViewMgr = null;
}
}
private void initLisense() {
boolean purchased = flashController.isPurchased();
if (!purchased) {
lisenseManager = new MLisenseMangaer(this);
lisenseManager.bindRemoteService();
}
}
@Override
public void onRemoteServiceConnected() {
int lisenseState = lisenseManager.doRemoteCheck();
lisenseManager.unbindRemoteService();
if(flashController != null) {
flashController.setLisenseState(lisenseState);
refreshWhenLisenseChanged(flashController.islisenseEnable());
}
}
@Override
public void onRemoteServiceDisconnected() {
lisenseManager = null;
}
private void refreshWhenLisenseChanged(boolean isLisenseEnable) {
if (this.isLisenseEnable != isLisenseEnable) {
// 之后就直接setFlashLevel就好
flashView.setLisenseState(isLisenseEnable,
flashController.getCurrentLevel());
if (isLisenseEnable) {
btnLock.setVisibility(View.GONE);
} else {
btnLock.setVisibility(View.VISIBLE);
}
this.isLisenseEnable = isLisenseEnable;
}
}
private void initLockAlert() {
if (mLockDialog == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(this,
android.R.style.Theme_Holo_Light_Panel);
builder.setIcon(R.drawable.ic_logo_locked);
builder.setTitle(R.string.alert_lock_title);
builder.setMessage(R.string.alert_lock_message);
builder.setPositiveButton(R.string.alert_lock_positive,
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 跳转到应用中心
connector
.jumpToMarket(LightmeConstants.APP_IDENTIFY);
}
});
builder.setNeutralButton(R.string.alert_lock_neutral,
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 联系开发者
connector.sendLockMsgWithMail(flashController
.getLisenseState());
}
});
builder.setNegativeButton(R.string.alert_lock_negetive,
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// initLisense();
}
});
mLockDialog = builder.create();
mLockDialog.getWindow().setType(
WindowManager.LayoutParams.TYPE_APPLICATION);
}
}
}