//new倒計時對象,總共的時間,每隔多少秒更新一次時間 myCountDownTimer= new MyCountDownTimer(60000, 1000); send.setOnClickListener(new View.OnClickListener() { @SuppressLint("WrongConstant") @Override public void onClick(View arg0) { System.out.println("點擊發送驗證碼"); number1= number.getText().toString().trim(); if(isPhoneNumber(number1)){ reqVerificationEntityRegister(number1); myCountDownTimer.start(); }else{ Toast.makeText(RegisterFirstActivity.this, "請輸入正確的手機號!", Toast.LENGTH_SHORT).show(); } } });
class MyCountDownTimer extends CountDownTimer { public MyCountDownTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } //計時過程 @Override public void onTick(long l) { //防止計時過程中重複點擊 send.setClickable(false); send.setText(l / 1000 + "秒重發"); } //計時完畢的方法 @Override public void onFinish() { //重新給Button設置文字 send.setText("重新獲取"); //設置可點擊 send.setClickable(true); } } int codeFromSrever=2; private class VerificationEntity { int code; String msg; @Override public String toString() { return "VerificationEntity{" + "code=" + code + ", msg='" + msg + '\'' + '}'; } } private VerificationEntity onRepVerificationEntity(JSONObject json) throws JSONException { logger.d("registerFirst#onRepVerificationEntity"); if (json == null) { logger.e("registerFirst#json is null"); return null; } logger.d("registerFirst#onRepVerificationEntity json:%s", json); int code = json.getInt("code"); if (code != 0) { logger.e("registerFirst#code is not right:%d, json:%s", code, json); // return null; } VerificationEntity addrsEntity = new VerificationEntity(); addrsEntity.code = code; logger.d("registerFirst#got VerificationEntity:%s", addrsEntity); return addrsEntity; } public void getCodeFromServer(VerificationEntity verificationEntity){ codeFromSrever= verificationEntity.code; }
/** * 發送驗證碼 */ public void reqVerificationEntityRegister(String number) { logger.d("socket#VerificationEntity."); getVerificationClient.setUserAgent("Android-TT"); String url=SystemConfigSp.instance().getStrConfig(SystemConfigSp.SysCfgDimension.LOGINSERVER).substring(0,SystemConfigSp.instance().getStrConfig(SystemConfigSp.SysCfgDimension.LOGINSERVER).length()-11); System.out.println(url); getVerificationClient.get(url+"/sendsms/"+number+"", new BaseJsonHttpResponseHandler(){ @Override public void onSuccess(int i, Header[] headers, String s, Object o) { logger.d("socket#req VerificationEntity onSuccess, response:%s", s); VerificationEntity msgServer = (VerificationEntity) o; System.out.println(msgServer); if(msgServer == null){ return ; } getCodeFromServer(msgServer); } @Override public void onFailure(int i, Header[] headers, Throwable throwable, String responseString, Object o) { logger.d("socket#req VerificationEntity Failure, errorResponse:%s", responseString); } @Override protected Object parseResponse(String s, boolean b) throws Throwable { /*子類需要提供實現,將請求結果解析成需要的類型 異常怎麼處理*/ JSONObject jsonObject = new JSONObject(s); VerificationEntity msgVerificationEntity = onRepVerificationEntity(jsonObject); return msgVerificationEntity; } }); }