短信验证码、语音验证
- 这里给大家分享一下短信验证码与语音验证
- 我用“云之讯”来介绍:
- 注册账号之后需要先申请短信模板,注意申请的模板格式,“几个参数的”
- 然后我们下载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" />