您的位置:首页 > 移动开发 > Android开发

Android Studio使用Mob来获取手机验证码加上倒计时

2018-01-24 20:21 477 查看
原创作品,允许转载,转载时请务必声明作者信息和本声明。 http://mp.blog.csdn.net/postedit/79153212

本人小白,那个大神看到有问题可指出,谢谢。。。 

再根据上编的基础上再添加倒计时即可

添加一个类TimeCountUtil

package zhu.com.yzm4;

import android.os.CountDownTimer;
import android.widget.Button;

/**
* Created by kqw on 2018/1/24
* TimeCountUtil
*/
public class TimeCountUtil extends CountDownTimer {
private Button mButton;

public TimeCountUtil(Button button, long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
this.mButton = button;
}

@Override
public void onTick(long millisUntilFinished) {
// 按钮不可用
mButton.setEnabled(false);
String showText = millisUntilFinished / 1000 + "秒后可重新发送";
mButton.setText(showText);
}

@Override
public void onFinish() {
// 按钮设置可用
mButton.setEnabled(true);
mButton.setText("重新获取验证码");
}
}


 

  在主方法里面MainActivity类中 定义 TimeCountUtil  的变量 

 


 

private TimeCountUtil mTimeCountUtil;


在onCreate方法里面创建 mTimeCountUtil 的实例,设置倒计时的时间



 

//btn_getCord这个是点击获取验证码的按钮哦
mTimeCountUtil = new TimeCountUtil(btn_getCord, 10000, 1000);//这里的倒计时的时间 是 :用第二参数 / 第三个三参数 = 倒计时为10秒


在点击触发的 case R.id.btn_getcord://Button的点击获取事件中 触发倒计时时间的事件



mTimeCountUtil.start();


完整的MainActivity

package zhu.com.yzm4;

import android.app.Activity;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

public class MainActivity extends Activity implements View.OnClickListener {

private EditText edit_phone;
private EditText edit_cord;
private TextView now;
private Button btn_getCord;
private Button btn_register;
private String phone_number;
private String cord_number;
EventHandler eventHandler;
private int time=60;
private boolean flag=true;

private TimeCountUtil mTimeCountUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getId();
//btn_getCord这个是点击获取验证码的按钮哦
mTimeCountUtil = new TimeCountUtil(btn_getCord, 10000, 1000);//这里的倒计时的时间 是 :用第二参数 / 第三个三参数 = 倒计时为10秒
eventHandler = new EventHandler() {
public void afterEvent(int event, int result, Object data) {
Message msg=new Message();
msg.arg1=event;
msg.arg2=result;
msg.obj=data;
handler.sendMessage(msg);
}
};

SMSSDK.registerEventHandler(eventHandler);
}

@Override
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterEventHandler(eventHandler);
}

/**
* 使用Handler来分发Message对象到主线程中,处理事件
*/
Handler handler=new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int event=msg.arg1;
int result=msg.arg2;
Object data=msg.obj;
if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
if(result == SMSSDK.RESULT_COMPLETE) {
boolean smart = (Boolean)data;
if(smart) {
Toast.makeText(getApplicationContext(),"该手机号已经注册过,请重新输入",
Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return;
}
}
}
if(result==SMSSDK.RESULT_COMPLETE)
{

if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
Toast.makeText(getApplicationContext(), "验证码输入正确",
Toast.LENGTH_LONG).show();
}
}
else
{
if(flag)
{
btn_getCord.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(),"验证码获取失败请重新获取", Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
}
else
{
Toast.makeText(getApplicationContext(),"验证码输入错误", Toast.LENGTH_LONG).show();
}
}

}

};

/**
* 获取id
*/
private void getId()
{
edit_phone=findViewById(R.id.edit_phone);
edit_cord=findViewById(R.id.edit_code);
btn_getCord=findViewById(R.id.btn_getcord);
btn_register=findViewById(R.id.btn_register);
btn_getCord.setOnClickListener(this);
btn_register.setOnClickListener(this);
}

/**
* 按钮点击事件
*/
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btn_getcord:
if(judPhone())//去掉左右空格获取字符串
{  //触发倒计时时间的事件
mTimeCountUtil.start();
SMSSDK.getVerificationCode("86",phone_number);
edit_cord.requestFocus();
}
break;
case R.id.btn_register:
if(judCord())
SMSSDK.submitVerificationCode("86",phone_number,cord_number);
flag=false;
break;
default:
break;
}
}

private boolean judPhone()
{
if(TextUtils.isEmpty(edit_phone.getText().toString().trim()))
{
Toast.makeText(MainActivity.this,"请输入您的电话号码",Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return false;
}
else if(edit_phone.getText().toString().trim().length()!=11)
{
Toast.makeText(MainActivity.this,"您的电话号码位数不正确",Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return false;
}
else
{
phone_number=edit_phone.getText().toString().trim();
String num="[1][358]\\d{9}";
if(phone_number.matches(num))
return true;
else
{
Toast.makeText(MainActivity.this,"请输入正确的手机号码",Toast.LENGTH_LONG).show();
return false;
}
}
}

private boolean judCord()
{
judPhone();
if(TextUtils.isEmpty(edit_cord.getText().toString().trim()))
{
Toast.makeText(MainActivity.this,"请输入您的验证码",Toast.LENGTH_LONG).show();
edit_cord.requestFocus();
return false;
}
else if(edit_cord.getText().toString().trim().length()!=4)
{
Toast.makeText(MainActivity.this,"您的验证码位数不正确",Toast.LENGTH_LONG).show();
edit_cord.requestFocus();

return false;
}
else
{
cord_number=edit_cord.getText().toString().trim();
return true;
}

}

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android