package com.bigdo.app;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.bigdo.common.BDSQLiteHelper;
import com.bigdo.common.RState;
import com.bigdo.controls.KeepDialog;
import com.bigdo.controls.XProgressDialog;
import com.bigdo.service.DownloadService;
import com.bigdo.service.VideoPayService;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnDismissListener;
import android.os.Bundle;
import android.os.Parcelable;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
public abstract class BaseActivity extends Activity {
protected volatile static int prot = 0;
protected volatile static int _prot = -1;
protected volatile static int video_status = RState.Video_Status_Unknown;
protected volatile static int _video_status = -1;
protected volatile static int video_broadcast_receiver_count = 0;
protected volatile static int clear_broadcast_receiver_count = 0;
private volatile static VideoBroadcastReceiver videoBroadcast = null;
private volatile static ClearBroadcastReceiver clearBroadcast = null;
private WakeLock wakeLock = null;
private XProgressDialog dialog;
private KeepDialog keepDialog;
private int isVInit = 0, isBInit = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BDSQLiteHelper sqlobj = null;
if (sqlobj == null) {
}
hiddenrKeepDialog();
// checkTime();
startVideoService();
startVideoBroadcast();
startClearBroadcast();
}
@SuppressLint("SimpleDateFormat")
private void _checkTime() {
BDSQLiteHelper sqlobj = null;
if (sqlobj == null) {
}
Date now = new Date(System.currentTimeMillis());
Date enow = new Date();
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
enow = (Date) sdf.parse("2014-10-28 23:59:59");
} catch (Exception e) {
}
if (now.after(enow)) {
finish();
return;
}
}
public void messageBox(String Msg) {
hiddenKeyboard();
try {
if (Msg != null && !Msg.equals("")) {
new AlertDialog.Builder(this).setMessage("\n" + Msg + "\n")
.setNegativeButton("确认", null).show();
}
} catch (Exception e) {
}
}
public void messageBox(String Msg, OnDismissListener dismissListener) {
hiddenKeyboard();
try {
if (Msg != null && !Msg.equals("")) {
new AlertDialog.Builder(this).setMessage("\n" + Msg + "\n")
.setNegativeButton("确认", null).show()
.setOnDismissListener(dismissListener);
}
} catch (Exception e) {
}
}
public void messageBox(String Msg, OnClickListener listener) {
hiddenKeyboard();
try {
if (Msg != null && !Msg.equals("")) {
new AlertDialog.Builder(this).setMessage("\n" + Msg + "\n")
.setNegativeButton("确认", listener).show();
}
} catch (Exception e) {
}
}
public void messageBox(String Msg, OnClickListener oklistener,
OnClickListener cancelistener) {
messageBox(Msg, "确认", "取消", oklistener, cancelistener);
}
public void messageBox(String Msg, String ok, String no,
OnClickListener oklistener, OnClickListener cancelistener) {
hiddenKeyboard();
try {
if (Msg != null && !Msg.equals("")) {
new AlertDialog.Builder(this).setMessage("\n" + Msg + "\n")
.setPositiveButton(ok, oklistener)
.setNegativeButton(no, cancelistener).show();
}
} catch (Exception e) {
}
}
public void showInfo(String Msg) {
Toast.makeText(this, Msg, Toast.LENGTH_LONG).show();
}
public void showProgress(String message) {
hiddenKeyboard();
if (dialog == null) {
dialog = XProgressDialog.show(this, message, Gravity.CENTER);
} else {
dialog.getWindow().setGravity(Gravity.CENTER);
dialog.show(message);
}
}
public void hiddenProgress() {
if (dialog != null) {
dialog.hide();
}
}
public void clearProgress() {
if (dialog != null) {
dialog.hide();
dialog.cancel();
dialog = null;
}
}
protected void hiddenKeyboard() {
try {
InputMethodManager im = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
if (im != null) {
View vo = getCurrentFocus();
if (vo != null) {
im.hideSoftInputFromWindow(vo.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
} catch (Exception e) {
}
}
public class ClearBroadcastReceiver extends BroadcastReceiver {
public static final String ACTION = "com.bigdo.service.ClearService";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION)) {
onClearData();
}
}
}
public class VideoBroadcastReceiver extends BroadcastReceiver {
public static final String ACTION = "com.bigdo.service.VideoPayService";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION)) {
Notification___Message_Handler(intent);
}
}
private void Notification___Message_Handler(Intent intent) {
int optype = intent.getIntExtra("optype", 0);
try {
// String Msg = intent.getStringExtra("msg");
Bundle bdata = intent.getBundleExtra("data");
if (optype == RState.Video_Status_Info) {
int p = 0;
int s = RState.Video_Status_Unknown;
if (bdata != null) {
p = bdata.getInt("prot", 0);
s = bdata.getInt("status", RState.Video_Status_Unknown);
}
if (_prot != -1 && _video_status != -1 && _prot == p
&& _video_status == s) {
return;
}
prot = p;
if (s != RState.Video_Status_Unknown) {
video_status = s;
}
_video_status = s;
_prot = p;
// ShowInfo("端口:" + prot);
}
onVideoBroadcast(intent);
} catch (Exception s) {
}
}
}
private void startVideoService() {
Intent bms = new Intent(this, VideoPayService.class);
startService(bms);
Intent dms = new Intent(this, DownloadService.class);
startService(dms);
}
protected void stopVideoService() {
Intent bms = new Intent(this, VideoPayService.class);
stopService(bms);
Intent dms = new Intent(this, DownloadService.class);
stopService(dms);
}
private void startClearBroadcast() {
if (clearBroadcast == null) {
clearBroadcast = new ClearBroadcastReceiver();
IntentFilter filter = new IntentFilter(
ClearBroadcastReceiver.ACTION);
registerReceiver(clearBroadcast, filter);
Log.e("clearBroadcast", "start");
clear_broadcast_receiver_count = 0;
}
if (isBInit <= 0 || clear_broadcast_receiver_count == 0) {
if (isBInit <= 0) {
isBInit = 1;
}
clear_broadcast_receiver_count++;
}
}
private void stopClearBroadcast() {
if (isBInit == 1 && clear_broadcast_receiver_count > 0) {
clear_broadcast_receiver_count--;
}
if (clear_broadcast_receiver_count <= 0 && clearBroadcast != null) {
try {
unregisterReceiver(clearBroadcast);
} catch (Exception e) {
}
clearBroadcast = null;
Log.e("clearBroadcast", "stop");
clear_broadcast_receiver_count = 0;
}
// Log.e("clearBroadcast", "stop--c" + clear_broadcast_receiver_count);
}
private void startVideoBroadcast() {
if (videoBroadcast == null) {
videoBroadcast = new VideoBroadcastReceiver();
IntentFilter filter = new IntentFilter(
VideoBroadcastReceiver.ACTION);
registerReceiver(videoBroadcast, filter);
Log.e("VideoBroadcast", "start");
video_broadcast_receiver_count = 0;
}
if (isVInit <= 0 || video_broadcast_receiver_count == 0) {
if (isVInit <= 0) {
isVInit = 1;
}
video_broadcast_receiver_count++;
}
}
private void stopVideoBroadcast() {
if (isVInit == 1 && video_broadcast_receiver_count > 0) {
video_broadcast_receiver_count--;
}
if (video_broadcast_receiver_count <= 0 && videoBroadcast != null) {
try {
unregisterReceiver(videoBroadcast);
} catch (Exception e) {
}
videoBroadcast = null;
Log.e("VideoBroadcast", "stop");
video_broadcast_receiver_count = 0;
}
}
protected void acquireWakeLock(String lockKey) {
if (lockKey == null || lockKey.equals("")) {
lockKey = "com_bigdo_app_wake_lock";
}
if (null == wakeLock) {
PowerManager pm = (PowerManager) this
.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK,
lockKey);
}
if (null != wakeLock && !wakeLock.isHeld()) {
wakeLock.acquire();
}
}
// 释放设备电源锁
protected void releaseWakeLock() {
if (null != wakeLock) {
wakeLock.release();
wakeLock = null;
}
}
public void broadcastClearData() {
Intent i = new Intent();
i.setAction("com.bigdo.service.ClearService");
i.putExtra("clear", true);
sendBroadcast(i);
}
public abstract void onVideoBroadcast(Intent intent);
public abstract void onClearData();
public void showKeepDialog() {
if (keepDialog == null) {
keepDialog = KeepDialog.show(this);
} else {
keepDialog.show();
}
}
public void hiddenrKeepDialog() {
if (keepDialog != null) {
keepDialog.hide();
}
}
public void clearKeepDialog() {
if (dialog != null) {
dialog.hide();
dialog.cancel();
dialog = null;
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
hiddenrKeepDialog();
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void startActivity(Intent intent) {
super.startActivity(intent);
showKeepDialog();
}
@Override
public void startActivityForResult(Intent intent, int requestCode) {
super.startActivityForResult(intent, requestCode);
showKeepDialog();
}
@Override
protected void onStart() {
super.onStart();
hiddenrKeepDialog();
startVideoBroadcast();
startClearBroadcast();
startVideoService();
}
@Override
protected void onRestart() {
super.onRestart();
hiddenrKeepDialog();
startVideoBroadcast();
startClearBroadcast();
startVideoService();
}
@Override
protected void onResume() {
super.onResume();
hiddenrKeepDialog();
startVideoBroadcast();
startClearBroadcast();
startVideoService();
}
@Override
protected void onPause() {
super.onPause();
// stopVideoBroadcast();
// stopClearBroadcast();
showKeepDialog();
}
@Override
protected void onStop() {
super.onStop();
// stopVideoBroadcast();
// stopClearBroadcast();
showKeepDialog();
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseWakeLock();
stopVideoBroadcast();
stopClearBroadcast();
clearProgress();
clearKeepDialog();
}
}