package com.videogo.devicemgt; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.videogo.EzvizApplication; import com.videogo.errorlayer.ErrorInfo; import com.videogo.exception.BaseException; import com.videogo.openapi.bean.EZDeviceUpgradeStatus; import com.videogo.openapi.bean.EZDeviceVersion; import com.videogo.util.LogUtil; import com.videogo.widget.TitleBar; import java.util.Timer; import java.util.TimerTask; import ezviz.ezopensdk.R; public class EZUpgradeDeviceActivity extends Activity { private final static String TAG = "EZUpgradeDeviceActivity"; private final static int TIMER_PERIODS = 3*1000; private TitleBar mTitleBar; LinearLayout mUpgradeLL = null; LinearLayout mUpgradeProgressLL = null; Button mUpgradeButton = null; TextView mProgressTextView = null; TextView mVersionDescTextView = null; String mDeviceSerial; private EZDeviceVersion mVersion = null; private EZDeviceUpgradeStatus mUpgradeStatus = null; private Timer mTimer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ezupgrade_device); initTitleBar(); find_views(); init_views(); } private void find_views() { mUpgradeLL = (LinearLayout) findViewById(R.id.ezupgrade_ll_btn); mUpgradeProgressLL = (LinearLayout) findViewById(R.id.ezupgrade_ll_progress); mUpgradeButton = (Button) findViewById(R.id.ezupgrade_button); mProgressTextView = (TextView) findViewById(R.id.ezupgrade_progress_text); mVersionDescTextView = (TextView) findViewById(R.id.ezupgrade_text_version_desc); } private void init_views() { mUpgradeButton.setEnabled(false); mDeviceSerial = getIntent().getStringExtra("deviceSerial"); LogUtil.i(TAG, "init_views: serial:" + mDeviceSerial); mUpgradeButton.setVisibility(View.VISIBLE); mProgressTextView.setVisibility(View.VISIBLE); // checkUpgradeStatusPeriodical(); showVersionViewOnce(); mProgressTextView.setText(String.format(getResources().getString(R.string.upgrade_progress),0)); mUpgradeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startUpgrade(); } }); } private void initTitleBar() { mTitleBar = (TitleBar) findViewById(R.id.title_bar); mTitleBar.addBackButton(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); mTitleBar.setTitle(R.string.ez_device_upgrade); } private void showButtonTab() { mUpgradeLL.setVisibility(View.VISIBLE); mUpgradeButton.setEnabled(true); mUpgradeProgressLL.setVisibility(View.GONE); } private void showProgressTab() { mUpgradeLL.setVisibility(View.GONE); mUpgradeProgressLL.setVisibility(View.VISIBLE); } private void showUpgradeSuccess() { showButtonTab(); mUpgradeButton.setEnabled(false); mUpgradeButton.setText(R.string.upgrade_success); } private void showUpgradeFailure() { showButtonTab(); mUpgradeButton.setEnabled(false); mUpgradeButton.setText(R.string.upgrade_fail); } private void showIsLatestVersion() { showButtonTab(); mUpgradeButton.setEnabled(true); mUpgradeButton.setText(R.string.upgrade); } private void showIsLatestVersion2() { showButtonTab(); mUpgradeButton.setEnabled(true); mUpgradeButton.setText(R.string.newest_version); } private int mStatus = -2; private void checkUpgradeStatusPeriodical() { final Runnable runit = new Runnable() { @Override public void run() { LogUtil.i(TAG, "checkUpgradeStatusPeriodical: status: " + mStatus); if (mStatus == 0) {//正在升级 showProgressTab(); mProgressTextView.setText(String.format(getResources().getString(R.string.upgrade_progress), mUpgradeStatus.getUpgradeProgress())); mTimer = new Timer(); mTimer.schedule(new TimerTask() { @Override public void run() { checkUpgradeStatusPeriodical(); } }, TIMER_PERIODS); } else if (mStatus == 1) {//设备重启 if (mUpgradeStatus != null && mUpgradeStatus.getUpgradeProgress() == 100) { mProgressTextView.setText(String.format(getResources().getString(R.string.upgrade_success_progress), mUpgradeStatus.getUpgradeProgress())); } showProgressTab(); } else if (mStatus == 2) {//升级成功 showUpgradeSuccess(); showButtonTab(); } else if (mStatus == 3) {//升级失败 showUpgradeFailure(); } else if (mStatus == -1) {//升级失败 showIsLatestVersion(); } else { showIsLatestVersion(); } } }; Thread thr = new Thread(new Runnable() { @Override public void run() { try { mUpgradeStatus = EzvizApplication.getOpenSDK().getDeviceUpgradeStatus(mDeviceSerial); mStatus = mUpgradeStatus.getUpgradeStatus(); LogUtil.i(TAG, "checkUpgradeStatusPeriodical: status: " + mStatus); } catch (BaseException e) { e.printStackTrace(); ErrorInfo errorInfo = (ErrorInfo) e.getObject(); LogUtil.d(TAG, errorInfo.toString()); return; } runOnUiThread(runit); } }); thr.start(); } private void startUpgrade() { if (mTimer != null) { mTimer.cancel(); mTimer = null; } Thread thr = new Thread(new Runnable() { @Override public void run() { try { EzvizApplication.getOpenSDK().upgradeDevice(mDeviceSerial); mTimer = new Timer(); mTimer.schedule(new TimerTask() { @Override public void run() { checkUpgradeStatusPeriodical(); } }, TIMER_PERIODS); } catch (BaseException e) { e.printStackTrace(); ErrorInfo errorInfo = (ErrorInfo) e.getObject(); LogUtil.d(TAG, errorInfo.toString()); } } }); thr.start(); } private void showVersionViewOnce() { LogUtil.i(TAG, "Enter showVersionViewOnce: "); Thread thr = new Thread(new Runnable() { @Override public void run() { try { mVersion = EzvizApplication.getOpenSDK().getDeviceVersion(mDeviceSerial); runOnUiThread(new Runnable() { @Override public void run() { // 版本描述 if (mVersion != null) { mVersionDescTextView.setText(mVersion.getUpgradeDesc()); checkUpgradeStatusPeriodical(); } } }); } catch (BaseException e) { e.printStackTrace(); ErrorInfo errorInfo = (ErrorInfo) e.getObject(); LogUtil.d(TAG, errorInfo.toString()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(EZUpgradeDeviceActivity.this, getResources().getString(R.string.string_get_device_version_fail), Toast.LENGTH_SHORT).show(); finish(); } }); } } }); thr.start(); } }