package com.weikou.beibeivideo.ui.login; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.lcjian.library.util.SingleToast; import com.lcjian.library.util.common.StringUtils; import com.weikou.beibeivideo.BasicTextHttpResponseHandler; import com.weikou.beibeivideo.BeibeiVideoAPI; import com.weikou.beibeivideo.ui.BaseActivity; import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.IsEmail; import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.util.ui.TopStatusSettings; import org.apache.http.Header; import org.json.JSONObject; import java.util.Timer; import java.util.TimerTask; import java.util.regex.Matcher; /** * 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; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); setContentView(R.layout.activity_register); TopStatusSettings.setStatusViewAndDeepColor(this); et_email = (EditText) findViewById(R.id.et_name); et_pwd = (EditText) findViewById(R.id.et_pwd); et_verfication_code = (EditText) findViewById(R.id.et_verfication_code); tv_obtain_verfication_code = (TextView) findViewById(R.id.tv_obtain_verfication_code); cb_user_agreement = (CheckBox) findViewById(R.id.cb_user_agreement); tv_confirm = (TextView) findViewById(R.id.tv_confirm); ll_login_content = (LinearLayout) 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); findViewById(R.id.tv_privacy_policy).setOnClickListener(this); findViewById(R.id.tv_user_agreement_click).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { cb_user_agreement.setChecked(!cb_user_agreement.isChecked()); } }); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv_back: finish(); break; case R.id.tv_user_agreement: Intent intent = new Intent(this, BrowserActivity.class); intent.putExtra("url", BeibeiConstant.USER_AGREEMENT); startActivity(intent); break; case R.id.tv_privacy_policy: Intent intent1 = new Intent(this, BrowserActivity.class); intent1.putExtra("url", BeibeiConstant.PRIVACY_POLICY); startActivity(intent1); break; case R.id.tv_obtain_verfication_code: String email = et_email.getText().toString(); if (StringUtils.isEmpty(email)) { SingleToast.showToast(RegisterActivity.this, "请先输入邮箱账号"); break; } if (!email.endsWith("@qq.com")) { SingleToast.showToast(RegisterActivity.this, "请使用QQ邮箱注册"); break; } if (!cb_user_agreement.isChecked()) { SingleToast.showToast(RegisterActivity.this, "请同意《用户使用协议》与《隐私政策》"); break; } Matcher m = IsEmail.isEmailAddress().matcher(email); if (m.matches()) { tv_obtain_verfication_code.setEnabled(false); getVerficationCode(email); } else { SingleToast.showToast(RegisterActivity.this, "输入的邮箱账号有误,请查证!"); return; } break; case R.id.tv_confirm: if (!cb_user_agreement.isChecked()) { SingleToast.showToast(RegisterActivity.this, "请同意《用户使用协议》与《隐私政策》"); break; } 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, "请先输入邮箱账号"); break; } else { if (!email1.endsWith("@qq.com")) { SingleToast.showToast(RegisterActivity.this, "请使用QQ邮箱注册"); break; } Matcher mc = IsEmail.isEmailAddress().matcher(email1); if (!mc.matches()) { SingleToast.showToast(RegisterActivity.this, "输入的邮箱账号有误,请查证!"); break; } } if (StringUtils.isEmpty(pwd)) { SingleToast.showToast(RegisterActivity.this, "密码不能为空"); break; } if (pwd.length() < 6) { SingleToast.showToast(RegisterActivity.this, "密码长度不能低于6位"); break; } if (StringUtils.isEmpty(verficationCode)) { SingleToast.showToast(RegisterActivity.this, "验证码不能为空"); break; } userRegister(); break; } } private void userRegister() { SharedPreferences sp = getSharedPreferences("user", Context.MODE_PRIVATE); final String uid = sp.getString("uid", ""); BeibeiVideoAPI.emailRegister(this, uid, et_email.getText().toString(), et_pwd.getText().toString(), et_verfication_code.getText().toString(), "无名氏", new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.optBoolean("IsPost")) { SingleToast.showToast(RegisterActivity.this, "注册成功!"); emailLogin(et_email.getText().toString(), et_pwd.getText().toString(), uid); } else { SingleToast.showToast(RegisterActivity.this, jsonObject.optString("Error") + ",注册失败!"); } } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { super.onFailure(statusCode, headers, responseString, throwable); SingleToast.showToast(RegisterActivity.this, "注册失败,请重新注册"); } }); } /** * 注册成功后登录,获取登录信息 */ /** * Email登录 */ private void emailLogin(String email, String pwd, String uid) { BeibeiVideoAPI.emailLogin(RegisterActivity.this, uid, email, pwd, new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.optBoolean("IsPost")) { SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE); SharedPreferences.Editor edit = sp.edit(); edit.putString("portrait", jsonObject.optJSONObject("Data").optString("Portrait")); edit.putString("LoginUid", jsonObject.getJSONObject("Data") .getString("Id")); edit.putString("name", jsonObject.optJSONObject("Data").optString("NickName")); edit.commit(); SingleToast.showToast(RegisterActivity.this, "登录成功"); Intent intent = new Intent(RegisterActivity.this, PersonInfoActivity.class); startActivity(intent); finish(); } else { SingleToast.showToast(RegisterActivity.this, "登录失败"); } } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { super.onFailure(statusCode, headers, responseString, throwable); SingleToast.showToast(RegisterActivity.this, "登录失败"); } }); } 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", ""); BeibeiVideoAPI.getVerficationCode(RegisterActivity.this, uid, email, new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.optBoolean("IsPost")) { 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; } } }; }