android10调用tuya接口完成二维码登录

/**
 * 2021.5.20    Thursday
 * 调用tuya接口完成二维码登录,登录成功进入contrl界面
 * 参考:https://tuyainc.github.io/tuyasmart_home_android_sdk_doc/zh-hans/resource/User_qrlogin.html
 * 最新版本3.25.1
 */

public class MainActivity extends AppCompatActivity {
    TuyaHomeSdk sdk=new TuyaHomeSdk();
    private boolean loginTag=false;
    private String TAG="MainActivity";
    private ImageView ivToken;
    private String prefixToken ="tuyaSmart--qrLogin?token=";   //token前缀
    private String msgToken="";  //获取的token
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ivToken=(ImageView)findViewById(R.id.ivQR);
        new RunnableGetToken().run();   //新开线程生成二维码

    }//end onCreate

    class RunnableGetToken implements Runnable {    //生成二维码
        @Override
        public void run() {
            try {
                sdk.getUserInstance().getQRCodeToken("86", new IGetQRCodeTokenCallback() {  //获取token
                    @Override
                    public void onSuccess(String token) {
                        msgToken=token;
                        Log.i(TAG,"get token succuss,111111111111111111111"+msgToken);
                        Log.i(TAG,"QR url :"+prefixToken+msgToken);
//                            使用token生成二维码
                        try {
                            ivToken.setImageBitmap(QRCodeUtils.createQRCode(prefixToken + msgToken, 500));    //根據token數據生成二維碼
                            /******************开启线程轮询检测登录情况****************/
                          new Thread(new RunnableGetLoginState()).start();
                            /****************************************************/
                        } catch (WriterException e) {
                            e.printStackTrace();
                            Log.i(TAG,"set QR error:"+e.toString());
                        }
                    }
                    @Override
                    public void onError(String code, String error) {
                        Log.i(TAG,"get token fail:code:"+code+",error:"+error);
                    }
                }); //getQRCodeToken end
            }catch (Exception e){
                e.printStackTrace();
                Log.i(TAG,"get token Exception:"+e.toString());
            }   //end try
        }
    }//end RunnableGetToken

    class RunnableGetLoginState implements Runnable{
        @Override
        public void run() {
           while (!loginTag){
                 sdk.getUserInstance().QRCodeLogin("86", msgToken, new ILoginCallback(){
                   @Override
                   public void onSuccess(User user) {
                       Log.i(TAG,"login success,enter homepage");
                       loginTag=true;
                       startActivity(new Intent(MainActivity.this,ActivityHomeControl.class));
                   }

                   @Override
                   public void onError(String code, String error) {
                       Log.i(TAG,"login errocode:"+code+",error msg:"+error);
                   }
               });
               try {
                   Log.i(TAG,"time:"+ DateFormat.format("hh:mm:ss",System.currentTimeMillis()));//当前时间
                   Thread.sleep(1*1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
                   Log.i(TAG,"sleep error:"+e.toString());
               }
           }
        }
    }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值