package com.videogo.ui.devicelist; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.InputFilter; import android.text.TextUtils; import android.text.method.PasswordTransformationMethod; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.videogo.constant.Constant; import com.videogo.constant.IntentConsts; import com.videogo.errorlayer.ErrorInfo; import com.videogo.exception.BaseException; import com.videogo.exception.ErrorCode; import com.videogo.exception.ExtraException; import com.videogo.openapi.bean.EZProbeDeviceInfoResult; import com.videogo.ui.util.ActivityUtils; import com.videogo.util.ConnectionDetector; import com.videogo.util.LocalInfo; import com.videogo.util.LocalValidate; import com.videogo.util.LogUtil; import com.videogo.widget.TitleBar; import com.videogo.widget.WaitDialog; import java.util.HashMap; import ezviz.ezopensdk.R; import ezviz.ezopensdk.configwifi.ApConfigWifiPresenterForFullSdk; import ezviz.ezopensdk.configwifi.SmartConfigWifiPresenterForFullSdk; import ezviz.ezopensdk.configwifi.SoundWaveConfigWifiPresenterForFullSdk; import ezviz.ezopensdkcommon.common.IntentConstants; import ezviz.ezopensdkcommon.common.RootActivity; import ezviz.ezopensdkcommon.configwifi.AutoWifiNetConfigActivity; import ezviz.ezopensdkcommon.configwifi.AutoWifiPrepareStepOneActivity; import ezviz.ezopensdkcommon.configwifi.ConfigWifiExecutingActivityPresenter; import static com.videogo.EzvizApplication.getOpenSDK; public class SeriesNumSearchActivity extends RootActivity implements OnClickListener/*, OnAuthListener*/ { private static final String TAG = "SeriesNumSearchActivity"; protected static final int MSG_QUERY_CAMERA_FAIL = 0; protected static final int MSG_QUERY_CAMERA_SUCCESS = 1; private static final int MSG_LOCAL_VALIDATE_SERIALNO_FAIL = 8; private static final int MSG_LOCAL_VALIDATE_CAMERA_PSW_FAIL = 9; private static final int MSG_ADD_CAMERA_SUCCESS = 10; private static final int MSG_ADD_CAMERA_FAIL = 12; // private static final int SHOW_DIALOG_ADD_FINISHED = 15; private static final int SHOW_DIALOG_SET_WIFI = 16; public static final String BUNDLE_TYPE = "type"; public static final String BUNDE_SERIANO = "SerialNo"; public static final String BUNDE_VERYCODE = "very_code"; public static final String BUNDLE_ISACTIVATED = "activated"; private static final String BUNDE_VERYCODE_VALUE = "old"; private static final String BUNDE_DIALOG_TIP = "tip"; private final int MODIFYPSD_FAIL_DIALOG_ID = 25; private EditText mSeriesNumberEt = null; private MessageHandler mMsgHandler = null; private WaitDialog mWaitDlg = null; private LocalValidate mLocalValidate = null; private String mSerialNoStr = ""; private View mQueryingCameraRyt; private View errorPage; private View mCameraListLy; private TextView mDeviceName = null; private ImageView mDeviceIcon = null; private Button mAddButton = null; // type - 0 Enter the serial number manually, type - 1 Two-dimensional code scanning private int mType = 0; private Bundle mBundle; private String mVerifyCode = null; private boolean mHasShowInputPswDialog = false; private LocalInfo mLocalInfo = null; private View mBtnNext; private View mActivateHint; private TextView mTitle; private View mInputLinearlayout; private TextView mTvStatus; private TextView mConnectTip; private TextView mFailedMsg; private String mDeviceType; private DeviceModel mDeviceModel; private boolean isActivated; // Used to determine whether the jump from the activation page private EZProbeDeviceInfoResult mEZProbeDeviceInfo = null; private EditText mVerifyCodeEt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_camera_by_series_number_page); init(); initTitleBar(); findViews(); initUI(); setListener(); getData(); } private void initTitleBar() { TitleBar mTitleBar = (TitleBar) findViewById(R.id.title_bar); mTitle = mTitleBar.setTitle(R.string.result_txt); mTitleBar.addBackButton(new OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); } private void init() { mLocalValidate = new LocalValidate(); mMsgHandler = new MessageHandler(); mWaitDlg = new WaitDialog(SeriesNumSearchActivity.this, android.R.style.Theme_Translucent_NoTitleBar); // mWaitDlg.setCancelable(false); mBundle = getIntent().getExtras(); if (mBundle != null) { mType = mBundle.getInt(BUNDLE_TYPE); if (mType == 0) { mSerialNoStr = ""; } else if (mType == 1) { mSerialNoStr = mBundle.getString(BUNDE_SERIANO); mVerifyCode = mBundle.getString(BUNDE_VERYCODE); } isActivated = mBundle.getBoolean(BUNDLE_ISACTIVATED, false); mDeviceType = mBundle.getString(AutoWifiNetConfigActivity.DEVICE_TYPE); mDeviceModel = DeviceModel.getDeviceModel(mDeviceType); } LogUtil.d(TAG, "mSerialNoStr = " + mSerialNoStr + ",mVerifyCode = " + mVerifyCode + ",deviceType=" + mDeviceModel); mLocalInfo = LocalInfo.getInstance(); // mTriggerHelper = new UnbindDeviceTriggerHelper(this, R.id.unbind_button); } private void findViews() { mSeriesNumberEt = (EditText) findViewById(R.id.seriesNumberEt); mVerifyCodeEt = (EditText) findViewById(R.id.verifycodeEt); if (mSerialNoStr != null) { mSeriesNumberEt.setText(mSerialNoStr); } if (mVerifyCode != null) { mVerifyCodeEt.setText(mVerifyCode); } mInputLinearlayout = findViewById(R.id.inputLinearlayout); mQueryingCameraRyt = findViewById(R.id.queryingCameraRyt); errorPage = findViewById(R.id.errorPage); mCameraListLy = findViewById(R.id.cameraListLy); mDeviceIcon = (ImageView) findViewById(R.id.deviceIcon); mDeviceName = (TextView) findViewById(R.id.deviceName); mTvStatus = (TextView) findViewById(R.id.tvStatus); mAddButton = (Button) findViewById(R.id.addBtn); mBtnNext = findViewById(R.id.btnNext); mActivateHint = findViewById(R.id.activateHint); mFailedMsg = (TextView) findViewById(R.id.failedMsg); mConnectTip = (TextView) findViewById(R.id.connectTip); ImageView searchAnim = (ImageView) findViewById(R.id.searchAnim); ((AnimationDrawable) searchAnim.getBackground()).start(); } private void initUI() { if (mTvStatus != null){ mTvStatus.setPadding(100,0, 100, 0); } if (mType == 1) { mInputLinearlayout.setVisibility(View.GONE); } else { showInputSerialNo(); } } private void setListener() { mSeriesNumberEt.setFilters(new InputFilter[] {new InputFilter.LengthFilter(Constant.SERIAL_NO_LENGTH)}); mAddButton.setOnClickListener(this); mBtnNext.setOnClickListener(this); mActivateHint.setOnClickListener(this); } private void getData() { if (mType == 1) { searchCameraBySN(); } } @Override public void onClick(View view) { mVerifyCode = mVerifyCodeEt.getText().toString().trim(); if (TextUtils.isEmpty(mVerifyCode)) { Toast.makeText(this, "VerifyCode can not be empty", Toast.LENGTH_LONG).show(); return; } if (view.getId() == R.id.searchBtn) { // Only manually search when the click will, clear the verification code, two-dimensional code over will not be empty // If the scanned serial number is the same as the entered serial number, the verification code will not be cleared final String serialNo = mSeriesNumberEt.getText().toString().trim(); if (mSerialNoStr == null || !mSerialNoStr.equals(serialNo)) { mVerifyCode = null; mDeviceType = ""; mDeviceModel = null; } searchCameraBySN(); } else if (view.getId() == R.id.addBtn) { addQueryCamera(); } else if (view.getId() == R.id.btnNext) { Intent intent; // demo code here only show wifi configuration // Determine the type of equipment (you can determine whether only wireless or wired) jump the corresponding page intent = new Intent(this, AutoWifiPrepareStepOneActivity.class); intent.putExtra(BUNDE_SERIANO, mSeriesNumberEt.getText().toString()); intent.putExtra(BUNDE_VERYCODE, mVerifyCodeEt.getText().toString()); if (mEZProbeDeviceInfo != null && mEZProbeDeviceInfo.getEZProbeDeviceInfo() != null) { if (mEZProbeDeviceInfo.getEZProbeDeviceInfo().getSupportAP() == 2 || mEZProbeDeviceInfo.getEZProbeDeviceInfo().getSupportAP() == 1) { ConfigWifiExecutingActivityPresenter.addPresenter(new ApConfigWifiPresenterForFullSdk()); intent.putExtra("support_Ap", true); } if (mEZProbeDeviceInfo.getEZProbeDeviceInfo().getSupportWifi() == 3) { ConfigWifiExecutingActivityPresenter.addPresenter(new SmartConfigWifiPresenterForFullSdk()); intent.putExtra("support_Wifi", true); } if (mEZProbeDeviceInfo.getEZProbeDeviceInfo().getSupportSoundWave() == 1) { ConfigWifiExecutingActivityPresenter.addPresenter(new SoundWaveConfigWifiPresenterForFullSdk()); intent.putExtra("support_sound_wave", true); } } else { intent.putExtra("support_unknow_mode", true); } intent.putExtra("device_type", mDeviceType); intent.putExtra(IntentConstants.USING_FULL_EZVIZ_SDK, true); startActivity(intent); } else if (view.getId() == R.id.myRetry) { searchCameraBySN(); } else if (view.getId() == R.id.activateHint) { if (ConnectionDetector.getConnectionType(this) != ConnectionDetector.WIFI) { // 配置wifi showWifiRequiredDialog(); } else { // ActivateActivity.launch(this, mSerialNoStr, mVerifyCode, mType, mDeviceType); // finish(); } } else { } } private void showWifiRequiredDialog() { new AlertDialog.Builder(this).setTitle(R.string.auto_wifi_dialog_title_wifi_required) .setMessage(R.string.please_open_wifi_network_sadp) .setNegativeButton(R.string.connect_wlan, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int arg1) { dialog.dismiss(); // Jump the wifi settings interface if (android.os.Build.VERSION.SDK_INT > 10) { startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); } else { startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS)); } } }).setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).setCancelable(false).create().show(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); mBundle = intent.getExtras(); if (mBundle != null) { if (mBundle.containsKey(IntentConsts.EXTRA_DEVICE_INFO)) { // mTriggerHelper.onNewIntent(intent); return; } mType = mBundle.getInt(BUNDLE_TYPE); if (mType == 0) { mSerialNoStr = ""; } else if (mType == 1) { mSerialNoStr = mBundle.getString(BUNDE_SERIANO); mVerifyCode = mBundle.getString(BUNDE_VERYCODE); } isActivated = mBundle.getBoolean(BUNDLE_ISACTIVATED, false); mDeviceType = mBundle.getString(AutoWifiNetConfigActivity.DEVICE_TYPE); mDeviceModel = DeviceModel.getDeviceModel(mDeviceType); //isFromRouterIntroduce = mBundle.getBoolean(RouterIntroduceActivity.IS_FROM_ROUTER_INTRODUCE); } getData(); } @Override protected void onDestroy() { super.onDestroy(); LogUtil.d(TAG, "onDestroy"); } public void searchCameraBySN() { hideKeyBoard(); final String serialNo = mSeriesNumberEt.getText().toString().trim(); final String verifyCode =mVerifyCodeEt.getText().toString().trim(); mSerialNoStr = serialNo; // wwc add mLocalValidate = new LocalValidate(); try { mLocalValidate.localValidatSerialNo(serialNo); } catch (BaseException e) { sendMessage(MSG_LOCAL_VALIDATE_SERIALNO_FAIL, e.getErrorCode()); LogUtil.e(TAG, "searchCameraBySN-> local validate serial no fail, errCode:" + e.getErrorCode()); return; } // Local network detection if (!ConnectionDetector.isNetworkAvailable(SeriesNumSearchActivity.this)) { showErrorPage(R.string.query_camera_fail_network_exception, 0); return; } showQueryingCamera(); new Thread() { public void run() { // if(true){ // HashMap hashMap= new HashMap(); // hashMap.put("deviceSerial",serialNo); // hashMap.put("validateCode",verifyCode); // // new com.ezviz.demo.common.HdlHttp().RequestResponseFromZigbeeHttps("home-wisdom/platform/childAddDevice",hashMap); // }else { mEZProbeDeviceInfo = getOpenSDK().probeDeviceInfo(serialNo, mDeviceType); if (mEZProbeDeviceInfo != null) { if (mEZProbeDeviceInfo.getBaseException() == null) { // TODO: 2018/6/25 添加设备 sendMessage(MSG_QUERY_CAMERA_SUCCESS); } else { if (mEZProbeDeviceInfo.getBaseException().getErrorCode() == 120023) { // TODO: 2018/6/25 设备不在线,未被用户添加 (这里需要网络配置) } else if (mEZProbeDeviceInfo.getBaseException().getErrorCode() == 120002) { // TODO: 2018/6/25 设备不存在,未被用户添加 (这里需要网络配置) } else if (mEZProbeDeviceInfo.getBaseException().getErrorCode() == 120029) { // TODO: 2018/6/25 设备不在线,已经被自己添加 (这里需要网络配置) runOnUiThread(new Runnable() { @Override public void run() { LogUtil.i(TAG, "probeDeviceInfo fail :" + mEZProbeDeviceInfo.getBaseException().getErrorCode()); sendMessage(MSG_QUERY_CAMERA_FAIL, mEZProbeDeviceInfo.getBaseException().getErrorCode()); } }); } else if (mEZProbeDeviceInfo.getBaseException().getErrorCode() == 120020) { // TODO: 2018/6/25 设备在线,已经被自己添加 (给出提示) sendMessage(MSG_QUERY_CAMERA_FAIL, mEZProbeDeviceInfo.getBaseException().getErrorCode()); } else if (mEZProbeDeviceInfo.getBaseException().getErrorCode() == 120022) { // TODO: 2018/6/25 设备在线,已经被别的用户添加 (给出提示) } else if (mEZProbeDeviceInfo.getBaseException().getErrorCode() == 120024) { // TODO: 2018/6/25 设备不在线,已经被别的用户添加 (给出提示) sendMessage(MSG_QUERY_CAMERA_FAIL, mEZProbeDeviceInfo.getBaseException().getErrorCode()); } else { // TODO: 2018/6/25 请求异常 showToast("Request failed = " + mEZProbeDeviceInfo.getBaseException().getErrorCode()); } } } else { sendMessage(MSG_QUERY_CAMERA_FAIL, ErrorCode.ERROR_WEB_NET_EXCEPTION); } // } runOnUiThread(new Runnable() { @Override public void run() { dismissWaitDialog(); } }); } }.start(); } private void sendMessage(int msgCode) { if (mMsgHandler != null) { Message msg = Message.obtain(); msg.what = msgCode; mMsgHandler.sendMessage(msg); } else { LogUtil.e(TAG, "sendMessage-> mMsgHandler object is null"); } } private void sendMessage(int msgCode, int errorCode) { if (mMsgHandler != null) { Message msg = Message.obtain(); msg.what = msgCode; msg.arg1 = errorCode; mMsgHandler.sendMessage(msg); } else { LogUtil.e(TAG, "sendMessage-> mMsgHandler object is null"); } }; class MessageHandler extends Handler { @Override public void handleMessage(Message msg) { if (msg.what==MSG_LOCAL_VALIDATE_SERIALNO_FAIL) { handleLocalValidateSerialNoFail(msg.arg1); }else if (msg.what==MSG_LOCAL_VALIDATE_CAMERA_PSW_FAIL) { handleLocalValidateCameraPswFail(msg.arg1); }else if (msg.what==MSG_QUERY_CAMERA_SUCCESS) { handleQueryCameraSuccess(); }else if (msg.what==MSG_QUERY_CAMERA_FAIL) { handleQueryCameraFail(msg.arg1); }else if (msg.what==MSG_ADD_CAMERA_SUCCESS) { handleAddCameraSuccess(); }else if (msg.what==MSG_ADD_CAMERA_FAIL) { handleAddCameraFail(msg.arg1); }else { LogUtil.e(TAG, "not solove the message" + msg.toString()); } } } private void handleAddCameraSuccess() { mWaitDlg.dismiss(); Intent intent = new Intent(SeriesNumSearchActivity.this, AutoWifiConnectingActivity.class); intent.putExtra(SeriesNumSearchActivity.BUNDE_SERIANO, mSerialNoStr); intent.putExtra(AutoWifiConnectingActivity.FROM_PAGE, AutoWifiConnectingActivity.FROM_PAGE_SERIES_NUM_SEARCH_ACTIVITY); startActivity(intent); mHasShowInputPswDialog = false; } private void handleAddCameraFail(int errCode) { mWaitDlg.dismiss(); mWaitDlg.hide(); if (errCode==ErrorCode.ERROR_WEB_NET_EXCEPTION) { showToast(R.string.add_camera_fail_network_exception); }else if (errCode==ErrorCode.ERROR_TRANSF_ACCESSTOKEN_ERROR) { ActivityUtils.handleSessionException(SeriesNumSearchActivity.this); }else if (errCode==ErrorCode.ERROR_WEB_HARDWARE_SIGNATURE_ERROR) { ActivityUtils.handleSessionException(SeriesNumSearchActivity.this); }else if (errCode==ErrorCode.ERROR_WEB_SERVER_EXCEPTION) { showToast(R.string.add_camera_fail_server_exception); }else if (errCode==ErrorCode.ERROR_WEB_DEVICE_VERIFY_CODE_ERROR) { mVerifyCode = null; { //The verification code is legal but wrong Bundle args = new Bundle(); args.putString(BUNDE_DIALOG_TIP, getString(R.string.added_camera_verycode_fail_title_txt)); // Pop-up prompts if (!isFinishing() && mHasShowInputPswDialog) { showDialog(MODIFYPSD_FAIL_DIALOG_ID, args); } else { showInputCameraVerifyCodeDlg(); } } }else if (errCode==ErrorCode.ERROR_WEB_DEVICE_SO_TIMEOUT) { showToast(R.string.device_so_timeout); }else if (errCode==ErrorCode.ERROR_WEB_DEVICE_NOT_EXIT) { showToast(R.string.query_camera_fail_not_exit); }else if (errCode==ErrorCode.ERROR_WEB_DEVICE_NOT_ONLINE) { showToast(R.string.camera_not_online); }else if (errCode==ErrorCode.ERROR_WEB_DEVICE_VALICATECODE_ERROR) { LogUtil.d(TAG, "Add camera failure verification code error = " + errCode); mVerifyCode = ""; }else{ showToast(R.string.add_camera_fail_server_exception, errCode); LogUtil.e(TAG, "handleAddCameraFail->unkown error, errCode:" + errCode); // // mVerifyCode = null; } } private void handleLocalValidateCameraPswFail(int errCode) { if (errCode == ExtraException.CAMERA_PASSWORD_IS_NULL) { showToast(R.string.camera_password_is_null); } else { showToast(R.string.camera_password_error, errCode); LogUtil.e(TAG, "handleLocalValidateCameraPswFail-> unkown error, errCode:" + errCode); } handleCmaeraPswError(); } private void handleAddCameraFailByVerCode() { // showToast(R.string.add_camera_verify_code_error); showInputCameraVerifyCodeDlg(); } private void handleAddCameraFailByPsw() { // showToast(R.string.camera_password_error); showInputCameraPswDlg(); } private void handleLocalValidateSerialNoFail(int errCode) { if (errCode == ExtraException.SERIALNO_IS_NULL) { showToast(R.string.serial_number_is_null); } else if (errCode == ExtraException.SERIALNO_IS_ILLEGAL) { showToast(R.string.serial_number_put_the_right_no); } else { showToast(R.string.serial_number_error, errCode); LogUtil.e(TAG, "handleLocalValidateSerialNoFail-> unkown error, errCode:" + errCode); } } private void handleQueryCameraSuccess() { if (mEZProbeDeviceInfo != null) { LogUtil.i(TAG, "handleQueryCameraSuccess, description:" ); showAddButton(); } // showCameraList(); // mDeviceName.setText(mEZProbeDeviceInfo.getSubSerial()); // mDeviceIcon.setImageResource(getDeviceIcon("")); } private int getDeviceIcon(String model) { DeviceModel deviceModel = DeviceModel.getDeviceModel(model); if (deviceModel == null) return DeviceModel.OTHER.getDrawable2ResId(); else return deviceModel.getDrawable2ResId(); } private void showAddButton() { LogUtil.i(TAG, "enter showAddButton"); showCameraList(); mBtnNext.setVisibility(View.GONE); mActivateHint.setVisibility(View.GONE); mAddButton.setVisibility(View.VISIBLE); mConnectTip.setVisibility(View.GONE); mTvStatus.setVisibility(View.GONE); } private void handleQueryCameraFail(final int errCode) { mWaitDlg.dismiss(); if (errCode==ErrorCode.ERROR_WEB_PASSWORD_ERROR) { handleCmaeraPswError(); }else if (errCode==ErrorCode.ERROR_WEB_DEVICE_VERSION_UNSUPPORT||errCode==ErrorCode.ERROR_WEB_DEVICE_UNSUPPORT) { showErrorPage(R.string.seek_camera_fail_device_not_support_shipin7, 0); }else if (errCode==ErrorCode.ERROR_WEB_NET_EXCEPTION) { showErrorPage(R.string.query_camera_fail_network_exception, 0); }else if (errCode==ErrorCode.ERROR_WEB_SERVER_EXCEPTION) { showErrorPage(R.string.query_camera_fail_server_exception, 0); }else if (errCode==ErrorCode.ERROR_TRANSF_ACCESSTOKEN_ERROR) { ActivityUtils.handleSessionException(SeriesNumSearchActivity.this); }else if (errCode==ErrorCode.ERROR_WEB_HARDWARE_SIGNATURE_ERROR) { showErrorPage(R.string.check_feature_code_fail, errCode); //ActivityUtils.handleHardwareError(SeriesNumSearchActivity.this, null); ActivityUtils.handleSessionException(SeriesNumSearchActivity.this); }else if (errCode==ErrorCode.ERROR_INNER_PARAM_ERROR) { showErrorPage(R.string.query_camera_fail_network_exception_or_server_exception, 0); } else if (errCode==ErrorCode.ERROR_WEB_DEVICE_ONLINE_ADDED||errCode==ErrorCode.ERROR_WEB_DEVICE_OFFLINE_ADDED) { showTipOfAddedByOther(); }else if (errCode==ErrorCode.ERROR_WEB_DEVICE_NOT_ADD) { showCameraList(); mTvStatus.setVisibility(View.VISIBLE); mTvStatus.setTextColor(getResources().getColor(R.color.common_text)); mTvStatus.setText(getString(R.string.tip_of_added_by_yourself_and_online)); mBtnNext.setVisibility(View.GONE); mAddButton.setVisibility(View.GONE); mConnectTip.setVisibility(View.GONE); }else if (errCode==ErrorCode.ERROR_WEB_DEVICE_ADD_OWN_AGAIN||errCode==ErrorCode.ERROR_WEB_DEVICE_NOT_ONLINE||errCode==ErrorCode.ERROR_WEB_DEVICE_NOT_EXIT||errCode==ErrorCode.ERROR_WEB_DEVICE_OFFLINE_NOT_ADD) { showWifiConfig(); }else{ showErrorPage(R.string.query_camera_fail, errCode); LogUtil.e(TAG, "handleQueryCameraFail-> unkown error, errCode:" + errCode); } } public void showTipOfAddedByOther() { showCameraList(); mTvStatus.setVisibility(View.VISIBLE); mTvStatus.setTextColor(getResources().getColor(R.color.common_text)); mTvStatus.setText(R.string.scan_device_add_by_others); mBtnNext.setVisibility(View.GONE); mAddButton.setVisibility(View.GONE); mConnectTip.setVisibility(View.GONE); // mTriggerHelper.onDeviceBoundByOthers(mSearchDevice); } private void handleCmaeraPswError() { // showInputCameraPswDlg(); } private void showInputCameraPswDlg() { mHasShowInputPswDialog = true; LayoutInflater factory = LayoutInflater.from(SeriesNumSearchActivity.this); final View passwordErrorLayout = factory.inflate(R.layout.password_error_layout, null); final EditText newPassword = (EditText) passwordErrorLayout.findViewById(R.id.new_password); newPassword.setFilters(new InputFilter[] {new InputFilter.LengthFilter(Constant.PSW_MAX_LENGTH)}); final TextView message1 = (TextView) passwordErrorLayout.findViewById(R.id.message1); message1.setText(getString(R.string.realplay_password_error_message1)); mVerifyCode = null; AlertDialog.Builder builder = new AlertDialog.Builder(SeriesNumSearchActivity.this); builder.setTitle(R.string.serial_add_password_error_title); builder.setView(passwordErrorLayout); builder.setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mHasShowInputPswDialog = false; } }); builder.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { mHasShowInputPswDialog = false; } }); builder.setNegativeButton(R.string.confirm, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // Make sure to modify the name String password = newPassword.getText().toString(); if (pswLegality(password)) { mVerifyCode = newPassword.getText().toString(); addQueryCameraAddVerifyCode(); } } }); if (!isFinishing()) { Dialog dialog = builder.create(); dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); dialog.show(); } } private boolean pswLegality(String pswString) { if (pswString.equalsIgnoreCase("")) { showInputCameraPswDlg(); return false; } return true; } private boolean verifyLegality(String verifyCodeString) { if (verifyCodeString.equalsIgnoreCase("")) { showInputCameraVerifyCodeDlg(); return false; } // if (verifyCodeString.length() != 6) { // showToast(R.string.applicati_not_support_illegal_verify); // return false; // } return true; } public void addQueryCamera() { if(!TextUtils.isEmpty(mVerifyCode)){ addQueryCameraAddVerifyCode(); } else { showInputCameraVerifyCodeDlg(); } } private void addQueryCameraAddVerifyCode() { // Local network detection if (!ConnectionDetector.isNetworkAvailable(SeriesNumSearchActivity.this)) { showToast(R.string.add_camera_fail_network_exception); return; } mWaitDlg.show(); new Thread() { public void run() { try { ///111 boolean result = getOpenSDK().addDevice(mSerialNoStr, mVerifyCode); HashMap hashMap= new HashMap(); hashMap.put("deviceSerial",mSerialNoStr); hashMap.put("validateCode",mVerifyCode); new com.ezviz.demo.common.HdlHttp().RequestResponseFromZigbeeHttps("home-wisdom/platform/childAddDevice",hashMap); /***********If necessary, the developer needs to save this code***********/ // 添加成功过后 sendMessage(MSG_ADD_CAMERA_SUCCESS); } catch (Exception e){ // catch (BaseException e) { // ErrorInfo errorInfo = (ErrorInfo) e.getObject(); // LogUtil.d(TAG, errorInfo.toString()); // sendMessage(MSG_ADD_CAMERA_FAIL, errorInfo.errorCode); LogUtil.e(TAG, "add camera fail"); } } }.start(); } private void showInputSerialNo() { showKeyBoard(); mTitle.setText(R.string.serial_input_text); errorPage.setVisibility(View.GONE); mCameraListLy.setVisibility(View.GONE); mQueryingCameraRyt.setVisibility(View.GONE); mInputLinearlayout.setVisibility(View.VISIBLE); } private void showKeyBoard() { mSeriesNumberEt.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mSeriesNumberEt, InputMethodManager.SHOW_FORCED); } private void hideKeyBoard() { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mSeriesNumberEt.getWindowToken(), 0); } private void showQueryingCamera() { mInputLinearlayout.setVisibility(View.GONE); errorPage.setVisibility(View.GONE); mCameraListLy.setVisibility(View.GONE); mTitle.setText(R.string.scan_device_search); mQueryingCameraRyt.setVisibility(View.VISIBLE); } private void showCameraList() { LogUtil.i(TAG, "enter showCameraList"); mTitle.setText(R.string.result_txt); mActivateHint.setVisibility(View.GONE); errorPage.setVisibility(View.GONE); mCameraListLy.setVisibility(View.VISIBLE); mQueryingCameraRyt.setVisibility(View.GONE); mInputLinearlayout.setVisibility(View.GONE); if (mDeviceModel != null) { // Update the image of the search camera mDeviceIcon.setImageResource(mDeviceModel.getDrawable2ResId()); } else { // Update the image of the search camera mDeviceIcon.setImageResource(DeviceModel.OTHER.getDrawable2ResId()); } // Device name processing mDeviceName.setText(mSeriesNumberEt.getText().toString().trim()); } private void showErrorPage(int errorMsgId, int errorCode) { mInputLinearlayout.setVisibility(View.GONE); errorPage.setVisibility(View.VISIBLE); if (errorMsgId > 0) { mFailedMsg.setText(errorMsgId); } if (errorCode > 0) { mFailedMsg.append("," + errorCode); } mCameraListLy.setVisibility(View.GONE); mQueryingCameraRyt.setVisibility(View.GONE); } private void showWifiConfig() { boolean bShowActivation = false; showCameraList(); mBtnNext.setVisibility(View.VISIBLE); if (!bShowActivation) { // If it is fluorite equipment or jump from the activation page, do not display the activation prompt, otherwise the activation prompt mActivateHint.setVisibility(View.GONE); } else { mActivateHint.setVisibility(View.VISIBLE); } mTvStatus.setVisibility(View.VISIBLE); mConnectTip.setVisibility(View.VISIBLE); mAddButton.setVisibility(View.GONE); mTvStatus.setTextColor(getResources().getColor(R.color.scan_yellow)); mTvStatus.setText(R.string.scan_network_unavailible); } @Override protected Dialog onCreateDialog(int id, Bundle args) { Dialog dialog = null; if (id==MODIFYPSD_FAIL_DIALOG_ID) { String tipTxt = ""; String type = ""; if (args != null) { tipTxt = args.getString(BUNDE_DIALOG_TIP); type = args.getString(BUNDLE_TYPE); } final String typeFinal = type; if (!SeriesNumSearchActivity.this.isFinishing()) { dialog = new AlertDialog.Builder(SeriesNumSearchActivity.this).setMessage(tipTxt) .setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mHasShowInputPswDialog = false; } }).setNegativeButton(R.string.retry, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (typeFinal == null || typeFinal.equals("")) { handleAddCameraFailByVerCode(); } else { handleAddCameraFailByPsw(); } } }).create(); } } else{} return dialog; } @Override protected void onPrepareDialog(int id, Dialog dialog) { if (id == MODIFYPSD_FAIL_DIALOG_ID) { // Modify the display layout if (dialog != null) { TextView tv = (TextView) dialog.findViewById(android.R.id.message); tv.setGravity(Gravity.CENTER); } } else if (id == SHOW_DIALOG_SET_WIFI) { // Modify the display layout if (dialog != null) { removeDialog(SHOW_DIALOG_SET_WIFI); TextView tv = (TextView) dialog.findViewById(android.R.id.message); tv.setGravity(Gravity.CENTER); } else { } } } private void showInputCameraVerifyCodeDlg() { mHasShowInputPswDialog = true; mVerifyCode = null; // 从布局中加载视图 LayoutInflater factory = LayoutInflater.from(SeriesNumSearchActivity.this); final View passwordErrorLayout = factory.inflate(R.layout.verifycode_layout, null); final EditText newPassword = (EditText) passwordErrorLayout.findViewById(R.id.new_password); newPassword.setTransformationMethod(PasswordTransformationMethod.getInstance()); newPassword.setFocusable(true); final TextView message1 = (TextView) passwordErrorLayout.findViewById(R.id.message1); // StringBuffer sb = new StringBuffer(); // sb.append("").append(getString(R.string.realplay_verifycode_error_message0)) // .append("").append("").append(mSearchDevice.getSubSerial()).append("") // .append("").append(getString(R.string.realplay_verifycode_error_message1)) // .append("").append("") // .append(getString(R.string.realplay_verifycode_error_message2)+getString(R.string.realplay_verifycode_error_message3)).append(""); message1.setText(R.string.realplay_verifycode_error_message0); AlertDialog.Builder builder = new AlertDialog.Builder(SeriesNumSearchActivity.this); builder.setTitle(R.string.camera_detail_verifycode_error_title); builder.setView(passwordErrorLayout); builder.setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mHasShowInputPswDialog = false; } }); builder.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { mHasShowInputPswDialog = false; } }); builder.setNegativeButton(R.string.confirm, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mVerifyCode = newPassword.getText().toString(); if (verifyLegality(mVerifyCode)) { addQueryCameraAddVerifyCode(); } else { mVerifyCode = null; } } }); if (!isFinishing()) { Dialog dialog = builder.create(); dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); dialog.show(); } } @Override public void onBackPressed() { // if (mType == 0 && mInputLinearlayout.getVisibility() != View.VISIBLE) { showInputSerialNo(); } else { hideKeyBoard(); finish(); } } }