package ezviz.ezopensdkcommon.configwifi; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.alibaba.android.arouter.facade.Postcard; import com.alibaba.android.arouter.facade.callback.NavCallback; import com.alibaba.android.arouter.launcher.ARouter; import com.ezviz.sdk.configwifi.EZConfigWifiErrorEnum; import ezviz.ezopensdkcommon.R; import ezviz.ezopensdkcommon.common.IntentConstants; import ezviz.ezopensdkcommon.common.LogUtil; import ezviz.ezopensdkcommon.common.RootActivity; import ezviz.ezopensdkcommon.common.RouteNavigator; public class ConfigWifiExecutingActivity extends RootActivity implements ConfigWifiExecutingActivityPresenter.Callback{ private final static String TAG = ConfigWifiExecutingActivity.class.getSimpleName(); private ConfigWifiExecutingActivityPresenter mPresenter; private View mConfigResultView; private View mConfigSuccessView; private View mConfigFailView; private TextView mConfigErrorInfoTv; private String mAllErrorInfo; public static void launch(Context context, Intent intent){ Intent newIntent = new Intent(context, ConfigWifiExecutingActivity.class); newIntent.putExtras(intent); newIntent.putExtra(IntentConstants.USE_MANUAL_AP_CONFIG, true); context.startActivity(newIntent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_config_wifi_executing); mPresenter = ConfigWifiExecutingActivityPresenter.getPresenter(getIntent() .getStringExtra(IntentConstants.SELECTED_PRESENTER_TYPE)); if (mPresenter == null){ LogUtil.e(TAG, "failed to init!"); return; } initUI(); getWindow().getDecorView().post(new Runnable() { @Override public void run() { showExecutingUi(); startConfig(); } }); } @Override protected void onStop() { super.onStop(); showToast(getString(R.string.app_common_stop_config_wifi_while_switched_to_background)); exitPage(); } /** * 重试 */ public void onClickRetryConfigWifi(View view) { showExecutingUi(); startConfig(); } /** * 配网成功,根据使用sdk不同,跳转到对应页面 */ public void onClickToConfigAnother(View view) { // 如果是在使用配网sdk,则跳转到配网开始页 if (getIntent().getBooleanExtra(IntentConstants.USING_CONFIG_WIFI_SDK, false)){ ARouter.getInstance().build(RouteNavigator.CONFIG_WIFI_MAIN_PAGE) .navigation(this, new NavCallback() { @Override public void onArrival(Postcard postcard) { exitPage(); } @Override public void onLost(Postcard postcard) { // do nothing } }); } } @Override public void onBackPressed() { exitPage(); } public void onClickExit(View view) { exitPage(); } private void exitPage(){ stopConfig(); finish(); } @Override public void onConnectedToWifi() { LogUtil.i(TAG, "onConnectedToWifi"); // 仅使用配网sdk时,才展示配网成功的ui if (getIntent().getBooleanExtra(IntentConstants.USING_CONFIG_WIFI_SDK, false)){ showConfigSuccessUi(); } } @Override public void onConnectedToPlatform() { LogUtil.i(TAG, "onConnectedToPlatform"); ARouter.getInstance().build(RouteNavigator.ADD_DEVICE_PAGE) .withString(IntentConstants.DEVICE_SERIAL, getIntent().getStringExtra(IntentConstants.DEVICE_SERIAL)) .withString(IntentConstants.DEVICE_VERIFY_CODE, getIntent().getStringExtra(IntentConstants.DEVICE_VERIFY_CODE)) .withFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK) .navigation(this, new NavCallback() { @Override public void onArrival(Postcard postcard) { exitPage(); } @Override public void onLost(Postcard postcard) { // do nothing } }); } @Override public void onConfigInfo(int info) { } @Override public void onConfigError(int code, String msg) { String errorInfo = "***" + "error code is: " + code + ", error msg is: " + msg + "\n"; LogUtil.e(TAG, errorInfo); // 仅展示新定义的错误码 for (EZConfigWifiErrorEnum error : EZConfigWifiErrorEnum.values()){ if (code == error.code){ if (mAllErrorInfo == null){ mAllErrorInfo = "" + errorInfo; }else{ mAllErrorInfo += errorInfo; } break; } } // 用户拒绝连接设备热点则认为配网失败 if (code == EZConfigWifiErrorEnum.USER_REFUSED_CONNECTION_REQUEST.code){ failedToConfig(); } } @Override public void onTimeout() { failedToConfig(); } private void failedToConfig(){ stopConfig(); switch (mPresenter.getType()){ case ConfigWifiTypeConstants.CONFIG_WIFI_SDK_AP: case ConfigWifiTypeConstants.FULL_SDK_AP: ManualConnectDeviceHotspotActivity.Companion.launch(this, getIntent()); break; default: showConfigFailUi(); break; } } private void startConfig(){ if (mPresenter != null){ mPresenter.setCallback(this); mPresenter.startConfigWifi(getApplication(), getIntent()); } } private void stopConfig(){ if (mPresenter != null){ mPresenter.setCallback(null); mPresenter.stopConfigWifi(); } } private void initUI() { mConfigResultView = findViewById(R.id.app_common_vg_config_result); mConfigSuccessView = findViewById(R.id.app_common_config_result_success); mConfigFailView = findViewById(R.id.app_common_config_result_fail); mConfigErrorInfoTv = findViewById(R.id.app_common_all_config_error_info); } private void showExecutingUi(){ runOnUiThread(new Runnable() { @Override public void run() { mConfigResultView.setVisibility(View.GONE); mConfigSuccessView.setVisibility(View.GONE); mConfigFailView.setVisibility(View.GONE); mAllErrorInfo = null; } }); } private void showConfigSuccessUi(){ runOnUiThread(new Runnable() { @Override public void run() { mConfigResultView.setVisibility(View.VISIBLE); mConfigSuccessView.setVisibility(View.VISIBLE); mConfigFailView.setVisibility(View.GONE); mAllErrorInfo = null; } }); } private void showConfigFailUi(){ runOnUiThread(new Runnable() { @Override public void run() { mConfigErrorInfoTv.setText(mAllErrorInfo); mConfigResultView.setVisibility(View.VISIBLE); mConfigSuccessView.setVisibility(View.GONE); mConfigFailView.setVisibility(View.VISIBLE); mAllErrorInfo = null; } }); } }