/* * @ProjectName VideoGoJar * @Copyright null * * @FileName CameraListActivity.java * @Description 这里对文件进行描述 * * @author xia xingsuo * @data 2015-11-5 * * @note 这里写本文件的详细功能描述和注释 * @note 历史记录 * * @warning 这里写本文件的相关警告 */ package com.videogo.ui.cameralist; import android.Manifest; import android.annotation.SuppressLint; import android.app.AlertDialog.Builder; import android.app.Dialog; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import android.text.format.DateFormat; import android.util.Log; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.ezviz.demo.common.CollectDeviceInfoActivity; import com.ezviz.demo.videotalk.WatchVideoTalkActivity; import com.ez.stream.EZStreamClientManager; import ezviz.ezopensdkcommon.common.BaseApplication; import ezviz.ezopensdkcommon.common.RootActivity; import com.videogo.constant.Constant; import com.videogo.constant.IntentConsts; import com.videogo.constants.ReceiverKeys; import com.videogo.devicemgt.EZDeviceSettingActivity; import com.videogo.download.DownLoadTaskRecordAbstract; import com.videogo.errorlayer.ErrorInfo; import com.videogo.exception.BaseException; import com.videogo.exception.ErrorCode; import com.videogo.openapi.bean.EZCameraInfo; import com.videogo.openapi.bean.EZDeviceInfo; import com.videogo.remoteplayback.list.EZPlayBackListActivity; import com.videogo.remoteplayback.list.RemoteListContant; import com.videogo.scan.main.CaptureActivity; import com.videogo.ui.message.EZMessageActivity2; import com.videogo.ui.realplay.EZRealPlayActivity; import com.videogo.ui.util.ActivityUtils; import com.videogo.ui.util.EZUtils; import com.videogo.util.ConnectionDetector; import com.videogo.util.DateTimeUtil; import com.videogo.util.LogUtil; import com.videogo.util.Utils; import com.videogo.widget.PullToRefreshFooter; import com.videogo.widget.PullToRefreshFooter.Style; import com.videogo.widget.PullToRefreshHeader; import com.videogo.widget.pulltorefresh.IPullToRefresh.Mode; import com.videogo.widget.pulltorefresh.IPullToRefresh.OnRefreshListener; import com.videogo.widget.pulltorefresh.LoadingLayout; import com.videogo.widget.pulltorefresh.PullToRefreshBase; import com.videogo.widget.pulltorefresh.PullToRefreshBase.LoadingLayoutCreator; import com.videogo.widget.pulltorefresh.PullToRefreshBase.Orientation; import com.videogo.widget.pulltorefresh.PullToRefreshListView; import java.util.ArrayList; import java.util.Date; import java.util.List; import ezviz.ezopensdk.R; //import ezviz.ezopensdk.debug.TestActivityForFullSdk; import ezviz.ezopensdk.demo.DemoConfig; import ezviz.ezopensdk.demo.ValueKeys; import static com.ez.stream.EZError.EZ_OK; import static com.videogo.EzvizApplication.getOpenSDK; public class EZCameraListActivity extends RootActivity implements OnClickListener, SelectCameraDialog.CameraItemClick { protected static final String TAG = "CameraListActivity"; public final static int REQUEST_CODE = 100; public final static int RESULT_CODE = 101; private final static int SHOW_DIALOG_DEL_DEVICE = 1; private BroadcastReceiver mReceiver = null; private PullToRefreshListView mListView = null; private View mNoMoreView; private EZCameraListAdapter mAdapter = null; private LinearLayout mNoCameraTipLy = null; private LinearLayout mGetCameraFailTipLy = null; private TextView mCameraFailTipTv = null; private Button mAddBtn; private Button mUserBtn; private TextView mMyDevice; private TextView mShareDevice; private boolean bIsFromSetting = false; public final static int TAG_CLICK_PLAY = 1; public final static int TAG_CLICK_REMOTE_PLAY_BACK = 2; public final static int TAG_CLICK_SET_DEVICE = 3; public final static int TAG_CLICK_ALARM_LIST = 4; private int mClickType; private final static int LOAD_MY_DEVICE = 0; private final static int LOAD_SHARE_DEVICE = 1; private int mLoadType = LOAD_MY_DEVICE; private String mSingleDeviceSerial=""; @Override public void onCameraItemClick(EZDeviceInfo deviceInfo, int camera_index) { EZCameraInfo cameraInfo = null; Intent intent = null; if (mClickType==TAG_CLICK_PLAY) { cameraInfo = EZUtils.getCameraInfoFromDevice(deviceInfo, camera_index); if (cameraInfo == null) { return; } int ret = EZStreamClientManager.create(getApplication().getApplicationContext()).clearTokens(); if (EZ_OK == ret){ Log.i(TAG, "clearTokens: ok"); }else{ Log.e(TAG, "clearTokens: faile"); } intent = new Intent(EZCameraListActivity.this, EZRealPlayActivity.class); intent.putExtra(IntentConsts.EXTRA_CAMERA_INFO, cameraInfo); intent.putExtra(IntentConsts.EXTRA_DEVICE_INFO, deviceInfo); startActivityForResult(intent, REQUEST_CODE); }else if (mClickType==TAG_CLICK_REMOTE_PLAY_BACK) { cameraInfo = EZUtils.getCameraInfoFromDevice(deviceInfo, camera_index); if (cameraInfo == null) { return; } intent = new Intent(EZCameraListActivity.this, EZPlayBackListActivity.class); intent.putExtra(RemoteListContant.QUERY_DATE_INTENT_KEY, DateTimeUtil.getNow()); intent.putExtra(IntentConsts.EXTRA_DEVICE_INFO, deviceInfo); intent.putExtra(IntentConsts.EXTRA_CAMERA_INFO, cameraInfo); startActivity(intent); }else { } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (DemoConfig.isNeedJumpToTestPage){ // startActivity(new Intent(mContext, TestActivityForFullSdk.class)); } setContentView(R.layout.cameralist_page_ez); // 只展示单个设备 mSingleDeviceSerial = getIntent().getStringExtra(ValueKeys.DEVICE_SERIAL.name()); if (!TextUtils.isEmpty(mSingleDeviceSerial)){ Log.e(TAG, "only show the device which serial is " + mSingleDeviceSerial ); } initData(); initView(); } private void initView() { mMyDevice = (TextView) findViewById(R.id.text_my); mShareDevice = (TextView) findViewById(R.id.text_share); mAddBtn = (Button) findViewById(R.id.btn_add); mUserBtn = (Button) findViewById(R.id.btn_user); mUserBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { popLogoutDialog(); } }); // findViewById(R.id.btn_multi_screen_preview).setOnClickListener(new OnClickListener() { // @Override // public void onClick(View v) { // MultiScreenPreviewActivity.Companion.launch(v.getContext()); // } // }); mAddBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { addCameraAccess(); } }); mShareDevice.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mShareDevice.setTextColor(getResources().getColor(R.color.orange_text)); mMyDevice.setTextColor(getResources().getColor(R.color.black_text)); mAdapter.clearAll(); mLoadType = LOAD_SHARE_DEVICE; getCameraInfoList(true); } }); mMyDevice.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mShareDevice.setTextColor(getResources().getColor(R.color.black_text)); mMyDevice.setTextColor(getResources().getColor(R.color.orange_text)); mAdapter.clearAll(); mLoadType = LOAD_MY_DEVICE; getCameraInfoList(true); } }); mNoMoreView = getLayoutInflater().inflate(R.layout.no_device_more_footer, null); mAdapter = new EZCameraListAdapter(this); mAdapter.setOnClickListener(new EZCameraListAdapter.OnClickListener() { /** * 根据设备型号判断是否是HUB设备 */ private boolean isHubDevice(String deviceType){ if (TextUtils.isEmpty(deviceType)){ return false; } if (deviceType=="CASTT"||deviceType=="CAS_HUB_NEW"){ return true; }else{ return deviceType.startsWith("CAS_WG_TEST"); } } @Override public void onPlayClick(BaseAdapter adapter, View view, int position) { mClickType = TAG_CLICK_PLAY; final EZDeviceInfo deviceInfo = mAdapter.getItem(position); if (isHubDevice(deviceInfo.getDeviceType())){ jumpToDeviceInfoInputPage(); return; } if (deviceInfo.getCameraNum() <= 0 || deviceInfo.getCameraInfoList() == null || deviceInfo.getCameraInfoList().size() <= 0) { LogUtil.d(TAG, "cameralist is null or cameralist size is 0"); return; } /*单通道设备*/ if (deviceInfo.getCameraNum() == 1 && deviceInfo.getCameraInfoList() != null && deviceInfo.getCameraInfoList().size() == 1) { LogUtil.d(TAG, "cameralist have one camera"); final EZCameraInfo cameraInfo = EZUtils.getCameraInfoFromDevice(deviceInfo, 0); if (cameraInfo == null) { return; } int ret = EZStreamClientManager.create(getApplication().getApplicationContext()).clearTokens(); if (EZ_OK == ret){ Log.i(TAG, "clearTokens: ok"); }else{ Log.e(TAG, "clearTokens: fail"); } Intent intent = new Intent(EZCameraListActivity.this, EZRealPlayActivity.class); intent.putExtra(IntentConsts.EXTRA_CAMERA_INFO, cameraInfo); intent.putExtra(IntentConsts.EXTRA_DEVICE_INFO, deviceInfo); startActivityForResult(intent, REQUEST_CODE); return; } /*多通道设备*/ SelectCameraDialog selectCameraDialog = new SelectCameraDialog(); selectCameraDialog.setEZDeviceInfo(deviceInfo); selectCameraDialog.setCameraItemClick(EZCameraListActivity.this); selectCameraDialog.show(getFragmentManager(), "onPlayClick"); } @Override public void onRemotePlayBackClick(BaseAdapter adapter, View view, int position) { mClickType = TAG_CLICK_REMOTE_PLAY_BACK; EZDeviceInfo deviceInfo = mAdapter.getItem(position); if (isHubDevice(deviceInfo.getDeviceType())){ jumpToDeviceInfoInputPage(); return; } if (deviceInfo.getCameraNum() <= 0 || deviceInfo.getCameraInfoList() == null || deviceInfo.getCameraInfoList().size() <= 0) { LogUtil.d(TAG, "cameralist is null or cameralist size is 0"); return; } /*单通道设备*/ if (deviceInfo.getCameraNum() == 1 && deviceInfo.getCameraInfoList() != null && deviceInfo.getCameraInfoList().size() == 1) { LogUtil.d(TAG, "cameralist have one camera"); EZCameraInfo cameraInfo = EZUtils.getCameraInfoFromDevice(deviceInfo, 0); if (cameraInfo == null) { return; } Intent intent = new Intent(EZCameraListActivity.this, EZPlayBackListActivity.class); intent.putExtra(RemoteListContant.QUERY_DATE_INTENT_KEY, DateTimeUtil.getNow()); intent.putExtra(IntentConsts.EXTRA_CAMERA_INFO, cameraInfo); startActivity(intent); return; } /*多通道设备*/ SelectCameraDialog selectCameraDialog = new SelectCameraDialog(); selectCameraDialog.setEZDeviceInfo(deviceInfo); selectCameraDialog.setCameraItemClick(EZCameraListActivity.this); selectCameraDialog.show(getFragmentManager(), "RemotePlayBackClick"); } /** * 如果是HUB设备,则需要手动输入相应HUB设备和子设备序列号组合后的序列号才能进行取流操作 */ private void jumpToDeviceInfoInputPage(){ startActivity(new Intent(mContext, CollectDeviceInfoActivity.class)); } @Override public void onSetDeviceClick(BaseAdapter adapter, View view, int position) { mClickType = TAG_CLICK_SET_DEVICE; EZDeviceInfo deviceInfo = mAdapter.getItem(position); Intent intent = new Intent(EZCameraListActivity.this, EZDeviceSettingActivity.class); Bundle bundle = new Bundle(); bundle.putParcelable(IntentConsts.EXTRA_DEVICE_INFO,deviceInfo); intent.putExtra("Bundle",bundle); startActivity(intent); bIsFromSetting = true; } @Override public void onDeleteClick(BaseAdapter adapter, View view, int position) { showDialog(SHOW_DIALOG_DEL_DEVICE); } @Override public void onVideoClickClick(BaseAdapter adapter, View view, int position) { LogUtil.d(TAG, "this is a kid watch"); mClickType = TAG_CLICK_REMOTE_PLAY_BACK; EZDeviceInfo deviceInfo = mAdapter.getItem(position); Intent intent = new Intent(EZCameraListActivity.this, WatchVideoTalkActivity.class); intent.putExtra(WatchVideoTalkActivity.InIntentKeysAndValues.KEY_DEVICE_SERIAL, deviceInfo.getDeviceSerial()); startActivity(intent); } @Override public void onAlarmListClick(BaseAdapter adapter, View view, int position) { mClickType = TAG_CLICK_ALARM_LIST; final EZDeviceInfo deviceInfo = mAdapter.getItem(position); LogUtil.d(TAG, "cameralist is null or cameralist size is 0"); Intent intent = new Intent(EZCameraListActivity.this, EZMessageActivity2.class); intent.putExtra(IntentConsts.EXTRA_DEVICE_ID, deviceInfo.getDeviceSerial()); startActivity(intent); } @Override public void onDevicePictureClick(BaseAdapter adapter, View view, int position) { } @Override public void onDeviceVideoClick(BaseAdapter adapter, View view, int position) { } @Override public void onDeviceDefenceClick(BaseAdapter adapter, View view, int position) { } }); mListView = (PullToRefreshListView) findViewById(R.id.camera_listview); mListView.setLoadingLayoutCreator(new LoadingLayoutCreator() { @Override public LoadingLayout create(Context context, boolean headerOrFooter, Orientation orientation) { if (headerOrFooter) return new PullToRefreshHeader(context); else return new PullToRefreshFooter(context, Style.EMPTY_NO_MORE); } }); mListView.setMode(Mode.BOTH); mListView.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(PullToRefreshBase refreshView, boolean headerOrFooter) { getCameraInfoList(headerOrFooter); } }); mListView.getRefreshableView().addFooterView(mNoMoreView); mListView.setAdapter(mAdapter); mListView.getRefreshableView().removeFooterView(mNoMoreView); mNoCameraTipLy = (LinearLayout) findViewById(R.id.no_camera_tip_ly); mGetCameraFailTipLy = (LinearLayout) findViewById(R.id.get_camera_fail_tip_ly); mCameraFailTipTv = (TextView) findViewById(R.id.get_camera_list_fail_tv); } @SuppressLint("NewApi") void addCameraAccess(){ if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED) { if (Build.VERSION_CODES.M <= Build.VERSION.SDK_INT) { requestPermissions(new String[]{Manifest.permission.CAMERA}, 100); } else { Intent intent = new Intent(EZCameraListActivity.this, CaptureActivity.class); startActivity(intent); } } else { Intent intent = new Intent(EZCameraListActivity.this, CaptureActivity.class); startActivity(intent); } } private void initData() { mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); LogUtil.d(TAG, "onReceive:" + action); if (action.equals(Constant.ADD_DEVICE_SUCCESS_ACTION)) { refreshButtonClicked(); } } }; IntentFilter filter = new IntentFilter(); filter.addAction(Constant.ADD_DEVICE_SUCCESS_ACTION); registerReceiver(mReceiver, filter); } int count = 100; @Override protected void onResume() { super.onResume(); if (bIsFromSetting || (mAdapter != null && mAdapter.getCount() == 0)) { refreshButtonClicked(); bIsFromSetting = false; } } @Override protected void onPause() { super.onPause(); if (mAdapter != null) { mAdapter.shutDownExecutorService(); } } private void getCameraInfoList(boolean headerOrFooter) { if (this.isFinishing()) { return; } new GetCamersInfoListTask(headerOrFooter).execute(); } /** * 多次点击打开调试页面 */ public void onClickTryOpenTestPage(View view) { long currentTime = System.currentTimeMillis(); if (currentTime - mLastClickTime < 1000){ mValidCount++; }else{ mValidCount = 0; } // 短时间内连续点击至少5次,则打开测试页面 if (mValidCount >= 5){ // startActivity(new Intent(mContext, TestActivityForFullSdk.class)); showToast("test!!!"); mValidCount = 0; } mLastClickTime = currentTime; } private int mValidCount = 0; private long mLastClickTime = 0; public void onClickMoreFeatures(View view) { //startActivity(new Intent(this, MoreFeaturesEntranceActivity.class)); } private class GetCamersInfoListTask extends AsyncTask> { private boolean mHeaderOrFooter; private int mErrorCode = 0; public GetCamersInfoListTask(boolean headerOrFooter) { mHeaderOrFooter = headerOrFooter; } @Override protected void onPreExecute() { super.onPreExecute(); //mListView.setFooterRefreshEnabled(true); if (mHeaderOrFooter) { mListView.setVisibility(View.VISIBLE); mNoCameraTipLy.setVisibility(View.GONE); mGetCameraFailTipLy.setVisibility(View.GONE); } mListView.getRefreshableView().removeFooterView(mNoMoreView); } @Override protected List doInBackground(Void... params) { if (EZCameraListActivity.this.isFinishing()) { return null; } if (!ConnectionDetector.isNetworkAvailable(EZCameraListActivity.this)) { mErrorCode = ErrorCode.ERROR_WEB_NET_EXCEPTION; return null; } try { List result = null; if (!TextUtils.isEmpty(mSingleDeviceSerial)) { EZDeviceInfo deviceInfo = getOpenSDK().getDeviceInfo(mSingleDeviceSerial); result = new ArrayList(); result.add(deviceInfo); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "已过滤多余设备", Toast.LENGTH_SHORT).show(); } }); return result; } if (mLoadType == LOAD_MY_DEVICE) { if (mHeaderOrFooter) { result = getOpenSDK().getDeviceList(0, 10); } else { result = getOpenSDK().getDeviceList((mAdapter.getCount() / 20) + (mAdapter.getCount() % 20 > 0 ? 1 : 0), 20); } } else if (mLoadType == LOAD_SHARE_DEVICE) { if (mHeaderOrFooter) { result = getOpenSDK().getSharedDeviceList(0, 10); } else { result = getOpenSDK().getSharedDeviceList((mAdapter.getCount() / 20) + (mAdapter.getCount() % 20 > 0 ? 1 : 0), 20); } } return result; } catch (BaseException e) { ErrorInfo errorInfo = (ErrorInfo) e.getObject(); mErrorCode = errorInfo.errorCode; LogUtil.d(TAG, errorInfo.toString()); return null; } } @Override protected void onPostExecute(List result) { super.onPostExecute(result); mListView.onRefreshComplete(); if (EZCameraListActivity.this.isFinishing()) { return; } if (result != null) { if (mHeaderOrFooter) { CharSequence dateText = DateFormat.format("yyyy-MM-dd kk:mm:ss", new Date()); for (LoadingLayout layout : mListView.getLoadingLayoutProxy(true, false).getLayouts()) { ((PullToRefreshHeader) layout).setLastRefreshTime(":" + dateText); } mAdapter.clearItem(); } if (mAdapter.getCount() == 0 && result.size() == 0) { mListView.setVisibility(View.GONE); mNoCameraTipLy.setVisibility(View.VISIBLE); mGetCameraFailTipLy.setVisibility(View.GONE); mListView.getRefreshableView().removeFooterView(mNoMoreView); } else if (result.size() < 10) { mListView.setFooterRefreshEnabled(false); mListView.getRefreshableView().addFooterView(mNoMoreView); } else if (mHeaderOrFooter) { mListView.setFooterRefreshEnabled(true); mListView.getRefreshableView().removeFooterView(mNoMoreView); } addCameraList(result); mAdapter.notifyDataSetChanged(); } if (mErrorCode != 0) { onError(mErrorCode); } } protected void onError(int errorCode) { if (errorCode == ErrorCode.ERROR_WEB_SESSION_ERROR || errorCode == ErrorCode.ERROR_WEB_SESSION_ERROR) { ActivityUtils.handleSessionException(EZCameraListActivity.this); } else if (errorCode == ErrorCode.ERROR_WEB_SESSION_ERROR) { if (mAdapter.getCount() == 0) { mListView.setVisibility(View.GONE); mNoCameraTipLy.setVisibility(View.GONE); mCameraFailTipTv.setText(Utils.getErrorTip(EZCameraListActivity.this, R.string.get_camera_list_fail, errorCode)); mGetCameraFailTipLy.setVisibility(View.VISIBLE); } else { Utils.showToast(EZCameraListActivity.this, R.string.get_camera_list_fail, errorCode); } } } } private void addCameraList(List result) { int count = result.size(); EZDeviceInfo item = null; for (int i = 0; i < count; i++) { item = result.get(i); mAdapter.addItem(item); } } @Override protected void onDestroy() { super.onDestroy(); if (mReceiver != null) { unregisterReceiver(mReceiver); } stopAllDownloadTasks(); } @Override public void onClick(View view) { if (view.getId() == R.id.camera_list_refresh_btn || view.getId() == R.id.no_camera_tip_ly) { refreshButtonClicked(); } if (view.getId() == R.id.camera_list_gc_ly) { // Intent intent = new Intent(EZCameraListActivity.this, SquareColumnActivity.class); // startActivity(intent); } } private void refreshButtonClicked() { mListView.setVisibility(View.VISIBLE); mNoCameraTipLy.setVisibility(View.GONE); mGetCameraFailTipLy.setVisibility(View.GONE); mListView.setMode(Mode.BOTH); mListView.setRefreshing(); } @Override protected Dialog onCreateDialog(int id) { Dialog dialog = null; if (id==SHOW_DIALOG_DEL_DEVICE) { } return dialog; } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 1, 1, R.string.update_exit).setIcon(R.drawable.exit_selector); return super.onCreateOptionsMenu(menu); } @Override protected void onPrepareDialog(int id, Dialog dialog) { if (dialog != null) { removeDialog(id); TextView tv = (TextView) dialog.findViewById(android.R.id.message); tv.setGravity(Gravity.CENTER); } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId()==1) { // 得到被点击的item的itemId // 对应的ID就是在add方法中所设定的Id popLogoutDialog(); }else{ } return super.onOptionsItemSelected(item); } private void popLogoutDialog() { Builder exitDialog = new Builder(EZCameraListActivity.this); exitDialog.setTitle(R.string.exit); exitDialog.setMessage(R.string.exit_tip); exitDialog.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), getString(R.string.tip_login_out), Toast.LENGTH_LONG).show(); new Thread(new Runnable() { @Override public void run() { getOpenSDK().logout(); } }).start(); finish(); } }); exitDialog.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // doNothing } }); exitDialog.show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (resultCode == RESULT_CODE){ if (requestCode == REQUEST_CODE){ String deviceSerial = intent.getStringExtra(IntentConsts.EXTRA_DEVICE_ID); int cameraNo = intent.getIntExtra(IntentConsts.EXTRA_CAMERA_NO,-1); int videoLevel = intent.getIntExtra("video_level",-1); if (TextUtils.isEmpty(deviceSerial)){ return; } if (videoLevel == -1 || cameraNo == -1){ return; } if (mAdapter.getDeviceInfoList() != null){ for (EZDeviceInfo deviceInfo:mAdapter.getDeviceInfoList()){ if (deviceInfo.getDeviceSerial().equals(deviceSerial)){ if (deviceInfo.getCameraInfoList() != null){ for (EZCameraInfo cameraInfo:deviceInfo.getCameraInfoList()){ if (cameraInfo.getCameraNo() == cameraNo){ cameraInfo.setVideoLevel(videoLevel); mAdapter.notifyDataSetChanged(); } } } } } } } } } // @Override // public void onBackPressed() { // checkExit(); // } private long mLastPressTimeMs = 0; private void checkExit(){ boolean isExist = false; if (mLastPressTimeMs > 0){ if (System.currentTimeMillis() - mLastPressTimeMs < 2 * 1000){ isExist = true; } } if (isExist){ Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.app_closed), Toast.LENGTH_LONG).show(); //exitApp(); }else{ Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.press_again_to_exit), Toast.LENGTH_SHORT).show(); mLastPressTimeMs = System.currentTimeMillis(); } } public static ArrayList mDownloadTaskRecordListAbstract = new ArrayList<>(); /** * 展示下载通知 * @param context * @param notificationId * @param title * @param content * @param clickToCancel */ public static void showSimpleNotification(Context context, int notificationId, String title, String content, boolean clickToCancel){ LogUtil.d(TAG, "show notification " + notificationId); Intent intent = new Intent(BaseApplication.mInstance, NotificationReceiver.class) .putExtra(ReceiverKeys.NOTIFICATION_ID, notificationId); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(mContext) .setContentTitle(title) .setStyle(new NotificationCompat.BigTextStyle().bigText(content)) .setWhen(System.currentTimeMillis()) .setSmallIcon(ezviz.ezopensdkcommon.R.mipmap.videogo_icon) .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), ezviz.ezopensdkcommon.R.mipmap.videogo_icon)) .setPriority(NotificationCompat.PRIORITY_MAX); // 点击发送通知到NotificationReceiver if (clickToCancel) { notificationBuilder.setContentIntent(PendingIntent.getBroadcast(mContext, notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT)); } NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); if (notificationManager != null) { notificationManager.notify(notificationId, notificationBuilder.build()); } } public static class NotificationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int notificationId = intent.getIntExtra(ReceiverKeys.NOTIFICATION_ID, -1); LogUtil.d(TAG, "onClick, notificationId is " + notificationId); DownLoadTaskRecordAbstract downLoadTaskRecord = null; for (DownLoadTaskRecordAbstract downLoadTaskRecordAbstract : mDownloadTaskRecordListAbstract){ if (downLoadTaskRecordAbstract.getNotificationId() == notificationId){ LogUtil.d(TAG, "stopped download task which related to notificationId " + notificationId); downLoadTaskRecord = downLoadTaskRecordAbstract; downLoadTaskRecord.stopDownloader(); } } if (downLoadTaskRecord != null){ mDownloadTaskRecordListAbstract.remove(downLoadTaskRecord); } NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); if (notificationManager != null){ notificationManager.cancel(notificationId); RootActivity.toastMsg("canceled to downloaded!"); } } } private static void stopAllDownloadTasks(){ for (DownLoadTaskRecordAbstract downloadRecord: mDownloadTaskRecordListAbstract){ downloadRecord.stopDownloader(); } } }