/**
* 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());
}
}
}
}
}