package com.mm.android.deviceaddmodule.p_wiredwireless; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.provider.Settings; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.ImageView; import android.widget.TextView; import com.mm.android.deviceaddmodule.R; import com.mm.android.deviceaddmodule.base.BaseDevAddFragment; import com.mm.android.deviceaddmodule.contract.WifiPwdConstract; import com.mm.android.deviceaddmodule.helper.DeviceAddHelper; import com.mm.android.deviceaddmodule.helper.PageNavigationHelper; import com.mm.android.deviceaddmodule.helper.Utils4AddDevice; import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.ProviderManager; import com.mm.android.deviceaddmodule.mobilecommon.base.DefaultPermissionListener; import com.mm.android.deviceaddmodule.mobilecommon.common.LCConfiguration; import com.mm.android.deviceaddmodule.mobilecommon.common.PermissionHelper; import com.mm.android.deviceaddmodule.mobilecommon.dialog.LCAlertDialog; import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceAddInfo; import com.mm.android.deviceaddmodule.mobilecommon.location.FuseLocationUtil; import com.mm.android.deviceaddmodule.mobilecommon.utils.CommonHelper; import com.mm.android.deviceaddmodule.mobilecommon.utils.UIHelper; import com.mm.android.deviceaddmodule.mobilecommon.widget.ClearPasswordEditText; import com.mm.android.deviceaddmodule.presenter.WifiPwdPresenter; /** * 输入wifi密码页 */ public class WifiPwdFragment extends BaseDevAddFragment implements WifiPwdConstract.View, View.OnClickListener { private ImageView mWifiIv; private TextView mNextTv; private TextView mWifiSsidTv; private ClearPasswordEditText mWifiPwdEt; private TextView m5GWifiTipTv; private TextView mSaveWifiPwdChebox; WifiPwdConstract.Presenter mPresenter; private ImageView mSwitchWifiIv; public static WifiPwdFragment newInstance() { WifiPwdFragment fragment = new WifiPwdFragment(); Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } private final TextWatcher mTextWatcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) { mWifiPwdEt.removeTextChangedListener(mTextWatcher); String str = Utils4AddDevice.wifiPwdFilter(s.toString()); if (!str.equals(s.toString())) { mWifiPwdEt.setText(str); mWifiPwdEt.setSelection(str.length()); } mWifiPwdEt.addTextChangedListener(mTextWatcher); setConnectButtonState(); } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void afterTextChanged(Editable arg0) { } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_wifi_pwd, container, false); } @Override public void onResume() { super.onResume(); mWifiSsidTv.setText(mPresenter.getCurWifiName()); setWifiPwd(); } @Override public void onPause() { super.onPause(); mPresenter.updateWifiCache();//更新wifi信息到缓存 } protected void initView(View view) { mWifiIv = view.findViewById(R.id.iv_wifi); mSwitchWifiIv = view.findViewById(R.id.switch_wifi); mNextTv = view.findViewById(R.id.next); m5GWifiTipTv = view.findViewById(R.id.tv_5g_tip); mWifiSsidTv = view.findViewById(R.id.ssid); mWifiPwdEt = view.findViewById(R.id.wifi_pwd); mWifiPwdEt.openEyeMode(ProviderManager.getAppProvider().getAppType() != LCConfiguration.APP_LECHANGE_OVERSEA); mWifiPwdEt.addTextChangedListener(mTextWatcher); mNextTv.setOnClickListener(this); mSaveWifiPwdChebox = view.findViewById(R.id.wifi_pwd_check); m5GWifiTipTv.setOnClickListener(this); mSaveWifiPwdChebox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { view.setSelected(!view.isSelected()); } }); mSwitchWifiIv.setOnClickListener(this); } protected void initData() { mPresenter = new WifiPwdPresenter(this); String configMode = mPresenter.getConfigMode(); if (DeviceAddInfo.ConfigMode.LAN.name().equalsIgnoreCase(configMode) || !configMode.contains(DeviceAddInfo.ConfigMode.LAN.name())) DeviceAddHelper.updateTile(DeviceAddHelper.TitleMode.MORE); else { DeviceAddHelper.updateTile(DeviceAddHelper.TitleMode.MORE2); } check5GWifiTip(); setConnectButtonState(); setSSIDTextView(true); } private void setSSIDTextView(boolean needCheckPermission) { if (null != getActivity() && !Utils4AddDevice.isWifi(getActivity())) { mWifiSsidTv.setText(""); mWifiPwdEt.setText(""); showToastInfo(R.string.add_device_con_wifi); return; } String curWifiName = mPresenter.getCurWifiName(); if (TextUtils.isEmpty(curWifiName) && needCheckPermission) { dealWithUnknownSsid(); return; } mWifiSsidTv.setText(curWifiName); setWifiPwd(); } private void dealWithUnknownSsid() { if (getActivity() == null) return; //1.判断是否该应用有地理位置权限 2.判断是否开启定位服务 PermissionHelper permissionHelper = new PermissionHelper(this); if (permissionHelper.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)) { verifyLocationService(); } else { permissionHelper.requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, new DefaultPermissionListener() { @Override public void onGranted() { verifyLocationService(); } @Override public boolean onDenied() { return true; } }); } } private void verifyLocationService() { if (FuseLocationUtil.isGpsEnabled(getActivity())) { mWifiSsidTv.setText(mPresenter.getCurWifiName()); setWifiPwd(); } else { showOpenLocationServiceDialog(); } } private void showOpenLocationServiceDialog() { LCAlertDialog dialog = new LCAlertDialog.Builder(getActivity()) .setTitle(R.string.add_device_goto_open_location_service) .setCancelButton(R.string.common_cancel, null) .setConfirmButton(R.string.common_confirm, new LCAlertDialog.OnClickListener() { @Override public void onClick(LCAlertDialog dialog, int which, boolean isChecked) { Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); dialog.dismiss(); } }).create(); dialog.show(getFragmentManager(), null); } private void setWifiPwd() { String wifiPwd = mPresenter.getSavedWifiPwd(); boolean wifiCheckBoxStatus = mPresenter.getSavedWifiCheckBoxStatus(); if (!TextUtils.isEmpty(wifiPwd)) { mWifiPwdEt.setText(wifiPwd); mSaveWifiPwdChebox.setSelected(wifiCheckBoxStatus); } else { mWifiPwdEt.setText(""); mSaveWifiPwdChebox.setSelected(wifiCheckBoxStatus); } } private void check5GWifiTip() { if (!mPresenter.isDevSupport5G()) { m5GWifiTipTv.setVisibility(View.VISIBLE); mWifiIv.setImageResource(R.drawable.adddevice_icon_wifipassword_nosupport5g_layer); } else { m5GWifiTipTv.setVisibility(View.GONE); mWifiIv.setImageResource(R.drawable.adddevice_icon_wifipassword); } } private void setConnectButtonState() { if (null != getActivity() && !Utils4AddDevice.isWifi(getActivity())) { UIHelper.setEnabledEX(false, mNextTv); } else { UIHelper.setEnabledEX(true, mNextTv); } } @Override protected IntentFilter createBroadCast() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(LCConfiguration.CONNECTIVITY_CHAGET_ACTION); return intentFilter; } @Override protected void onReceive(Context context, Intent intent) { super.onReceive(context, intent); if (LCConfiguration.CONNECTIVITY_CHAGET_ACTION.equals(intent.getAction())) { setConnectButtonState(); setSSIDTextView(false); } } @Override public void onDestroyView() { super.onDestroyView(); if (null != getActivity() && mWifiPwdEt != null) { InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService( Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(mWifiPwdEt.getWindowToken(), 0); } super.onDestroyView(); } @Override public void onClick(View v) { int id = v.getId(); if (getActivity() == null) return; if (R.id.next == id) { if (!Utils4AddDevice.isWifi(getActivity())) { toastInCenter(R.string.add_device_con_wifi); return; } if (TextUtils.isEmpty(mWifiSsidTv.getText().toString())) { toast(R.string.mobile_common_permission_explain_access_location_usage); return; } InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService( Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(mWifiPwdEt.getWindowToken(), 0); PageNavigationHelper.gotoLightTipPage(this); } else if (R.id.tv_5g_tip == id) { PageNavigationHelper.gotoErrorTipPage(this, DeviceAddHelper.ErrorCode.COMMON_ERROR_NOT_SUPPORT_5G); } else if (R.id.switch_wifi == id) { CommonHelper.gotoWifiSetting(getActivity()); } } @Override public String getWifiPwd() { return mWifiPwdEt.getText().toString(); } @Override public boolean isSavePwdChecked() { return mSaveWifiPwdChebox.isSelected(); } }