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(); } }