package com.demo.library_login.ui; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import com.demo.lib.common.activity.BaseActivity; import com.demo.lib.common.util.SingleToast; import com.demo.lib.common.util.common.StringUtils; import com.demo.library_login.R; import com.demo.library_login.entity.LoginApiResult; import com.demo.library_login.inter.ILoginListener; import com.demo.library_login.inter.LoginApiCallBack; import java.util.Timer; import java.util.TimerTask; /** * Created by weikou2015 on 2016/10/27. */ public class RegisterActivity extends BaseActivity implements View.OnClickListener { private LinearLayout ll_login_content; private EditText et_email; private EditText et_pwd; private EditText et_verfication_code; private TextView tv_obtain_verfication_code; private CheckBox cb_user_agreement; private TextView tv_confirm; private ILoginListener loginListener; public void setLoginListener(ILoginListener loginListener) { this.loginListener = loginListener; } @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.activity_register); loginListener = (ILoginListener) (getIntent().getSerializableExtra("listener")); et_email = findViewById(R.id.et_name); et_pwd = findViewById(R.id.et_pwd); et_verfication_code = findViewById(R.id.et_verfication_code); tv_obtain_verfication_code = findViewById(R.id.tv_obtain_verfication_code); cb_user_agreement = findViewById(R.id.cb_user_agreement); tv_confirm = findViewById(R.id.tv_confirm); ll_login_content = findViewById(R.id.ll_login_content); int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); ll_login_content.measure(w, h); tv_obtain_verfication_code.setOnClickListener(this); tv_confirm.setOnClickListener(this); findViewById(R.id.tv_back).setOnClickListener(this); findViewById(R.id.tv_user_agreement).setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.tv_back) { finish(); } else if (id == R.id.tv_user_agreement) { loginListener.onProtocol(RegisterActivity.this); } else if (id == R.id.tv_obtain_verfication_code) { String email = et_email.getText().toString(); if (StringUtils.isEmpty(email)) { SingleToast.showToast(RegisterActivity.this, "请先输入邮箱账号"); return; } if (!email.endsWith("@qq.com")) { SingleToast.showToast(RegisterActivity.this, "请使用QQ邮箱注册"); return; } if (StringUtils.isEmail(email)) { tv_obtain_verfication_code.setEnabled(false); getVerficationCode(email); } else { SingleToast.showToast(RegisterActivity.this, "输入的邮箱账号有误,请查证!"); return; } } else if (id == R.id.tv_confirm) { String email1 = et_email.getText().toString(); String pwd = et_pwd.getText().toString(); String verficationCode = et_verfication_code.getText().toString(); if (StringUtils.isEmpty(email1)) { SingleToast.showToast(RegisterActivity.this, "请先输入邮箱账号"); return; } else { if (!email1.endsWith("@qq.com")) { SingleToast.showToast(RegisterActivity.this, "请使用QQ邮箱注册"); return; } if (!StringUtils.isEmail(email1)) { SingleToast.showToast(RegisterActivity.this, "输入的邮箱账号有误,请查证!"); return; } } if (StringUtils.isEmpty(pwd)) { SingleToast.showToast(RegisterActivity.this, "密码不能为空"); return; } if (pwd.length() < 6) { SingleToast.showToast(RegisterActivity.this, "密码长度不能低于6位"); return; } if (StringUtils.isEmpty(verficationCode)) { SingleToast.showToast(RegisterActivity.this, "验证码不能为空"); return; } if (!cb_user_agreement.isChecked()) { SingleToast.showToast(RegisterActivity.this, "选择同意用户协议后方可登录"); return; } userRegister(); } } private void userRegister() { loginListener.emailRegister(RegisterActivity.this, et_email.getText().toString(), et_verfication_code.getText().toString(), et_pwd.getText().toString(), new LoginApiCallBack() { @Override public void onCallBack(LoginApiResult result) { if (result.getCode() == LoginApiResult.CODE_OK) { SingleToast.showToast(RegisterActivity.this, "注册成功!"); emailLogin(et_email.getText().toString(), et_pwd.getText().toString()); } else { SingleToast.showToast(RegisterActivity.this, result.getMsg()); } } @Override public void onStart() { super.onStart(); showLoading(); } @Override public void onFinish() { super.onFinish(); hideLoading(); } }); } /** * 注册成功后登录,获取登录信息 */ /** * Email登录 */ private void emailLogin(String email, String pwd) { loginListener.emailLogin(RegisterActivity.this, email, pwd, new LoginApiCallBack() { @Override public void onCallBack(LoginApiResult result) { if (result.getCode() == LoginApiResult.CODE_OK) { SingleToast.showToast(RegisterActivity.this, "登录成功"); } else { SingleToast.showToast(RegisterActivity.this, result.getMsg()); } } }); } Timer timer; int timecount = 59; private void getVerficationCode(String email) { timer = new Timer(); timer.schedule(new MyTask(), 1000, 1000); SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE); String uid = sp.getString("uid", ""); loginListener.sendEmailCode(RegisterActivity.this, email, new LoginApiCallBack() { @Override public void onCallBack(LoginApiResult result) { tv_obtain_verfication_code.setEnabled(true); if (result == null) return; if (result.getCode() == LoginApiResult.CODE_OK) { SingleToast.showToast(RegisterActivity.this, "获取验证码成功,请打开邮箱查看!"); } else { SingleToast.showToast(RegisterActivity.this, "获取验证码失败,请重新获取!"); handler.sendEmptyMessage(1); } } @Override public void onFinish() { super.onFinish(); tv_obtain_verfication_code.setEnabled(true); } }); } class MyTask extends TimerTask { @Override public void run() { if (timecount > 0) { handler.sendEmptyMessage(0); } else { handler.sendEmptyMessage(1); } } } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: tv_obtain_verfication_code.setClickable(false); tv_obtain_verfication_code.setText("重新发送(" + timecount + "s)"); timecount--; break; case 1: timer.cancel(); tv_obtain_verfication_code.setText("获取验证码"); tv_obtain_verfication_code.setClickable(true); timecount = 59; break; } } }; }