|
@@ -14,25 +14,24 @@ public class TuyaUtilsSo {
|
|
|
* 由于Gradle版本问题,建议jna版本用5.14.0
|
|
|
* */
|
|
|
|
|
|
- /**volatile防止指令重排*/
|
|
|
+ /**
|
|
|
+ * volatile防止指令重排
|
|
|
+ */
|
|
|
private static volatile TuyaUtilsSo singleton;
|
|
|
private TuyaApi tuyaApi;
|
|
|
- public boolean tuyaInitSuccess = false;
|
|
|
- public boolean tuyaNetwork = false;
|
|
|
- public String mPid = "dquk8axtyy72c1ap";
|
|
|
- public String mUid = "uuid50e9e0c707553116";
|
|
|
- public String mAk = "MJhcxmQ6LeZDj1tNu6F5kqK5aQJfpdOb";
|
|
|
- public String shorturl = "";
|
|
|
- public Context context;
|
|
|
- private TuyaUtilsSo() {
|
|
|
- tuyaApi = TuyaApi.INSTANCE;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public static TuyaUtilsSo getInstance(){
|
|
|
- if(singleton == null){
|
|
|
- synchronized (TuyaUtilsSo.class){
|
|
|
- if(singleton == null){
|
|
|
+ public boolean tuyaInitSuccess = false;
|
|
|
+ public boolean tuyaNetwork = false;
|
|
|
+ public String mPid = "dquk8axtyy72c1ap";
|
|
|
+ public String mUid = "uuid50e9e0c707553116";
|
|
|
+ public String mAk = "MJhcxmQ6LeZDj1tNu6F5kqK5aQJfpdOb";
|
|
|
+ public String shorturl = "";
|
|
|
+ public Context context;
|
|
|
+
|
|
|
+
|
|
|
+ public static TuyaUtilsSo getInstance() {
|
|
|
+ if (singleton == null) {
|
|
|
+ synchronized (TuyaUtilsSo.class) {
|
|
|
+ if (singleton == null) {
|
|
|
singleton = new TuyaUtilsSo();
|
|
|
}
|
|
|
}
|
|
@@ -40,11 +39,11 @@ public class TuyaUtilsSo {
|
|
|
return singleton;
|
|
|
}
|
|
|
|
|
|
- public TuyaApi getTuyaApi(){
|
|
|
- if (tuyaApi==null){
|
|
|
+ public TuyaApi getTuyaApi() {
|
|
|
+ if (tuyaApi == null) {
|
|
|
tuyaApi = TuyaApi.INSTANCE;
|
|
|
}
|
|
|
- return tuyaApi;
|
|
|
+ return tuyaApi;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -72,86 +71,126 @@ public class TuyaUtilsSo {
|
|
|
this.mAk = mAk;
|
|
|
}
|
|
|
|
|
|
- public void initSDK(Context ctx, String version) {
|
|
|
+ public void initSDK(Context ctx, String version) {
|
|
|
context = ctx;
|
|
|
version = version;
|
|
|
//Log.init(ctx, "/sdcard/tuya_log/iot_demo/", 3);
|
|
|
+ tuyaDp();
|
|
|
tuyaLog();
|
|
|
- tuyaInit(getmPid(),getmUid(),getmAk(),version);
|
|
|
+ tuyaInit(getmPid(), getmUid(), getmAk(), version);
|
|
|
}
|
|
|
|
|
|
- public void tuyaInit(String pid, String uuid, String authkey, String version){
|
|
|
- getTuyaApi().init(0,new String[]{},pid,uuid,authkey,version);
|
|
|
+ public void tuyaInit(String pid, String uuid, String authkey, String version) {
|
|
|
+ getTuyaApi().init(0, new String[]{}, pid, uuid, authkey, version);
|
|
|
}
|
|
|
|
|
|
- public void tuyaLog(){
|
|
|
- getTuyaApi().register_log_callback(new TuyaApi.LogCallback() {
|
|
|
- @Override
|
|
|
- public void invoke(String tag, String message) {
|
|
|
- Log.i(tag, message);
|
|
|
- //涂鸦初始化成功
|
|
|
- if (message.equals("tuya_init success...")){
|
|
|
- tuyaInitSuccess = true;
|
|
|
- }
|
|
|
- //配网成功,可以访问涂鸦
|
|
|
- if (message.equals("SOC TUYA-Cloud Status:3")){
|
|
|
- tuyaNetwork = true;
|
|
|
- }
|
|
|
- if (message.contains("qrCodeUrl")){
|
|
|
- String msg = message;
|
|
|
- // 查找 "qrCodeUrl:" 之后的部分
|
|
|
- int startIndex = msg.indexOf("qrCodeUrl:") + "qrCodeUrl:".length();
|
|
|
- // 截取二维码 URL 部分
|
|
|
- String result = msg.substring(startIndex).trim();
|
|
|
- TuyaQRUrlBean bean = GsonUtils.GsonToBean(result,TuyaQRUrlBean.class);
|
|
|
- shorturl = bean.getShortUrl();
|
|
|
- //根据 uuid 存储 url
|
|
|
- MMkvUtils.INSTANCE.save(mUid,shorturl);
|
|
|
+ public int sendDp(){
|
|
|
+ return getTuyaApi().send_dp();
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ public void tuyaRemove() {
|
|
|
+ getTuyaApi().example_soc_device_remove(0, new String[]{});
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ TuyaApi.DpCallback dpCallback = new TuyaApi.DpCallback() {
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
+ public void invoke(byte dpid, byte type, int intValue, int enumValue, String strValue, int boolValue, int bitmapValue) {
|
|
|
+// Log.i("tuya_iot", "dpCallback dpid:"+dpid
|
|
|
+// + " type:"+type+" time_stamp:"+time_stamp + " dp_value:"+dp_value
|
|
|
+// + " dp_enum: "+dp_enum+" dp_str:"+dp_str + " dp_bool:"+dp_bool +" dp_bitmap:"+dp_bitmap );
|
|
|
+ Log.v("tuya_iot","dpCallback");
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ TuyaApi.LogCallback logCallback = new TuyaApi.LogCallback() {
|
|
|
+ @Override
|
|
|
+ public void invoke(String tag, String message) {
|
|
|
+
|
|
|
+ Log.v(tag, message);
|
|
|
+ //涂鸦初始化成功
|
|
|
+ if (message.equals("tuya_init success...")) {
|
|
|
+ tuyaInitSuccess = true;
|
|
|
+ }
|
|
|
+ //配网成功,可以访问涂鸦
|
|
|
+ if (message.equals("SOC TUYA-Cloud Status:3")) {
|
|
|
+ tuyaNetwork = true;
|
|
|
}
|
|
|
- });
|
|
|
+ if (message.contains("qrCodeUrl")) {
|
|
|
+ String msg = message;
|
|
|
+ // 查找 "qrCodeUrl:" 之后的部分
|
|
|
+ int startIndex = msg.indexOf("qrCodeUrl:") + "qrCodeUrl:".length();
|
|
|
+ // 截取二维码 URL 部分
|
|
|
+ String result = msg.substring(startIndex).trim();
|
|
|
+ TuyaQRUrlBean bean = GsonUtils.GsonToBean(result, TuyaQRUrlBean.class);
|
|
|
+ shorturl = bean.getShortUrl();
|
|
|
+ //根据 uuid 存储 url
|
|
|
+ MMkvUtils.INSTANCE.save(mUid, shorturl);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ public void tuyaDp() {
|
|
|
+ getTuyaApi().register_dp_callback(dpCallback);
|
|
|
}
|
|
|
|
|
|
- public String getPointer (String apiName,String apiVersion,String postDate){
|
|
|
- Pointer pointer = TuyaApi.INSTANCE.http_common_post_simple(
|
|
|
+ public void tuyaLog() {
|
|
|
+ getTuyaApi().register_log_callback(logCallback);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPointer(String apiName, String apiVersion, String postDate) {
|
|
|
+ Pointer pointer = getTuyaApi().http_common_post_simple(
|
|
|
apiName, apiVersion, postDate, ""
|
|
|
);
|
|
|
String json = "";
|
|
|
- if (pointer ==null){
|
|
|
+ if (pointer == null) {
|
|
|
json = "";
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
json = pointer.getString(0);
|
|
|
}
|
|
|
|
|
|
//释放资源
|
|
|
getTuyaApi().free_memory(pointer);
|
|
|
|
|
|
- return json;
|
|
|
+ return json;
|
|
|
}
|
|
|
|
|
|
- public String getPointerLike (String apiName,String apiVersion,String postDate){
|
|
|
- Pointer pointer = TuyaApi.INSTANCE.http_common_post_simple(
|
|
|
- apiName, apiVersion, postDate, ""
|
|
|
- );
|
|
|
+ public String getPointerLike(String apiName, String apiVersion, String postDate) {
|
|
|
+ Pointer pointer = getTuyaApi().http_common_post_simple(
|
|
|
+ apiName, apiVersion, postDate, "");
|
|
|
String json = "";
|
|
|
- if (pointer ==null){
|
|
|
- json = null;
|
|
|
- }else {
|
|
|
+ if (pointer == null) {
|
|
|
+ json = "true";
|
|
|
+ } else {
|
|
|
json = pointer.getString(0);
|
|
|
}
|
|
|
|
|
|
//释放资源
|
|
|
getTuyaApi().free_memory(pointer);
|
|
|
|
|
|
- return json;
|
|
|
+ return json;
|
|
|
}
|
|
|
|
|
|
- interface httpCommonPostCallBack{
|
|
|
- void httpCommon(String json);
|
|
|
|
|
|
+ public void appendFile(String filename, String string) {
|
|
|
+ getTuyaApi().append_log_to_file(filename, string);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ interface httpCommonPostCallBack {
|
|
|
+ void httpCommon(String json);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //调试 c 方法的回调 能不能正常回调
|
|
|
+ public void logMessage(String tag, String msg) {
|
|
|
+ getTuyaApi().log_message(tag, msg);
|
|
|
}
|
|
|
|
|
|
}
|