短信验证or语音验证

短信验证码、语音验证

  • 这里给大家分享一下短信验证码与语音验证
  • 我用“云之讯”来介绍:
  • 注册账号之后需要先申请短信模板,注意申请的模板格式,“几个参数的”
  • 然后我们下载SDK,
  • 这里写图片描述
  • 下载下来之后解压,把里面的一个Yzxdemo项目导入工作空间
    注意不要忘记导入jar,在云之讯的文档中有步骤我们可以看一下
    把libs下的全都复制过来
    这里写图片描述

  • 在里面找到在里面找到短信or语音验证的布局和VerificationActivity.java 我们要用这里面的JAVA代码,

  • 简单的写个布局
`<EditText
        android:id="@+id/et_code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="输入验证码" />

    <EditText
        android:id="@+id/et_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="输入手机号" />

    <Button
        android:id="@+id/bt_getcode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取短信验证码" />

    <Button
        android:id="@+id/bt_comfim"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交" />`
  • 我们要把tools包下的几个java类考进我们的项目
  • 这里写图片描述
  • service包下的 ConnectionService.java
  • restClient包下的
  • 这里写图片描述
  • action包下的,IDfineAction.java
  • 我们要写个类继承Application
import android.app.Application;
import android.content.Intent;

import com.yzx.tools.CustomLog;
import com.yzxdemo.service.ConnectionService;
import com.yzxdemo.tools.DfineAction;

public class MainApplication extends Application {

    private static boolean isActive = true; // 记录当前APP是否在后台还是在前台, true:在前台;
                                            // false:在后台

    public static boolean isActive() {
        return isActive;
    }

    public static void setActive(boolean isActive) {
        MainApplication.isActive = isActive;
    }

    @Override
    public void onCreate() {
        super.onCreate();
    CustomLog.v(DfineAction.TAG_TCP,          "MainApplication.onCreate()  ... ");
startService(new Intent(this, ConnectionService.class));
    }
}

下面是我在VerificationActivity.java中整理出的java代码,短信的验证

package com.example.duanxin;

import java.util.Timer;
import java.util.TimerTask;
import org.json.JSONException;
import org.json.JSONObject;


import com.yzx.tools.CustomLog;
import com.yzx.tools.PhoneNumberTools;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {



    private Button verification_getaudio;
    private Button verification_getsms;
    private EditText verification_phone;
    private EditText verification_num;
    private TextView verification_bt;
    private Timer timer = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initviews();
    }

    //初始化
    private void initviews() {
        verification_phone=(EditText) findViewById(R.id.phone_editText1);
        verification_num=(EditText) findViewById(R.id.yanzhneg_editText1);
        verification_getsms=(Button) findViewById(R.id.yan_button1);
        verification_bt=(Button) findViewById(R.id.tijiao_button1);



        //获取短信验证码
        verification_getsms.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String phone = verification_phone.getText().toString();
                final String code = Math.round(Math.random() * 10000) + "";
                verification_bt.setTag(code);
                if(phone != null && phone.length() > 0){
                    if(PhoneNumberTools.checkMobilePhoneNumber(phone)){


                        new Thread(new Runnable() {
                            public void run() {
                                JsonReqClient client = new JsonReqClient();
                                //应用ID
                                //Appid=e97b358e9cc048e09cbc2aaf5b5c4110
                                //账户id Main_account=  Account Sid:
                                //4e345db07c65fac6466f6679b69cf9e5
                                //Auth Token:
                                //getMain_token=f4e8f8acab359b372387fa181b51b1cd
                                String result = client.sendVerificationCode("e97b358e9cc048e09cbc2aaf5b5c4110","4e345db07c65fac6466f6679b69cf9e5","f4e8f8acab359b372387fa181b51b1cd", code, phone);
                                //{"resp":{"respCode":"000000","templateSMS":{"createDate":"20140820145658","smsId":"d2c49329f363b802fb3531d9c67b54f8"}}}
                                if(result != null && result.length() > 0){
                                    try {
                                        CustomLog.v(DfineAction.TAG_TCP, "RESULT:"+result);
                                        JSONObject object = new JSONObject(result);
                                        if(object.has("resp")){
                                            JSONObject item = (JSONObject)object.getJSONObject("resp");
                                            if(item.has("respCode") && item.getString("respCode").equals("000000")){
                                                mHandler.sendEmptyMessage(0);
                                            }else{
                                                mHandler.sendEmptyMessage(1);
                                            }
                                        }else{
                                            mHandler.sendEmptyMessage(1);
                                        }
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                        mHandler.sendEmptyMessage(1);
                                    }
                                }
                            }
                        }).start();
                    }else{
                        Toast.makeText(MainActivity.this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show();
                    }
                }else {
                    Toast.makeText(MainActivity.this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show();
                }
            }
        });



        //进行验证 下发的验证码和之前提交的随机数一致
        verification_bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(verification_bt.getTag()!= null && verification_bt.getTag().equals(verification_num.getText().toString())){
                    mHandler.sendEmptyMessage(4);
                }else{
                    mHandler.sendEmptyMessage(5);
                }
            }
        });
    }

    /**
     * 
     * 1.短信 验证倒计时
     * 2.语音验证倒计时
     * 
     */
    @SuppressLint("HandlerLeak") 
    private Handler mUiHandler = new Handler(){
        @Override
        public void dispatchMessage(Message msg) {
            switch(msg.what){
            case 1:
                int sencond1=180-(Integer) msg.obj;
                if(sencond1<1){

                }else {
                    verification_getsms.setText(sencond1+"秒");
                }
                break;
            case 2:
                int sencond2=180-(Integer) msg.obj;
                if(sencond2<1){

                }else {
                    verification_getaudio.setText(sencond2+"秒");
                }
                break;
            }
        }
    };



    private Handler mHandler = new Handler(){
        @Override
        public void dispatchMessage(Message msg) {
            switch(msg.what){
            case 0:
                Toast.makeText(MainActivity.this, "短信验证码发送成功", Toast.LENGTH_SHORT).show();
                break;
            case 1:
                Toast.makeText(MainActivity.this, "短信验证码发送失败", Toast.LENGTH_SHORT).show();
                break;
            case 2:
                Toast.makeText(MainActivity.this, "语音验证码发送成功", Toast.LENGTH_SHORT).show();
                break;
            case 3:
                Toast.makeText(MainActivity.this, "语音验证码发送失败", Toast.LENGTH_SHORT).show();
                break;
                case 4: 
                Toast.makeText(MainActivity.this, "验证成功", Toast.LENGTH_SHORT).show();

                break;
            case 5:
                Toast.makeText(MainActivity.this, "验证失败", Toast.LENGTH_SHORT).show();
                break;
            }
        }

    };

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

语音的代码和上面没什么差异可以自己复制操作,

  • 在清单文件中配置AndroidManifest.xml

  • 配置权限

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值