miecosystem / mijiasdk Goto Github PK
View Code? Open in Web Editor NEWmijiaSDK新地址:https://github.com/MiEcosystem/MiJiaConnectDemo
mijiaSDK新地址:https://github.com/MiEcosystem/MiJiaConnectDemo
java.lang.NumberFormatException: For input string: ""
at java.lang.Long.parseLong(Long.java:455)
at java.lang.Long.valueOf(Long.java:542)
at com.miot.service.connection.wifi.b.c.a(BleComboStep.java:686)
at com.miot.service.connection.wifi.b.c.j(BleComboStep.java:645)
at com.miot.service.connection.wifi.b.c.a(BleComboStep.java:129)
at com.miot.service.connection.wifi.SmartConfigMainActivity$1.handleMessage(SmartConfigMainActivity.java:48)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6359)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
/**
* ApiLevel:58 调用智能家居后台http服务
*
* @param model 插件model
* @param hostPrefix HOST前缀
* @param relativeUrl 服务接口url
* @param method 请求方法
* @param params
* @param callback
* @param parser
*/
public abstract void callSmartHomeApi(String model, String hostPrefix, String relativeUrl, String method, JSONObject params,
final Callback callback, final Parser parser);
android智能设备接入了米家sdk,然后米家APP上新建了一个智能项(当android智能设备离开某个范围后关闭家里的台灯),android智能设备上通过那个接口获取这种情况下台灯关闭的消息?
2018-10-15 11:14:04.271 6683-6704/com.mijiasdk.demo E/DeviceManager: getRemoteDeviceList onFailed: 1011 org.json.JSONException: Value EjY8xK+G of type java.lang.String cannot be converted to JSONObject
2018-10-15 11:14:04.272 6683-6704/com.mijiasdk.demo E/MiDeviceManager: getRemoteDeviceList onFailed: 1011org.json.JSONException: Value EjY8xK+G of type java.lang.String cannot be converted to JSONObject
2018-10-15 11:14:04.277 6683-6683/com.mijiasdk.demo D/DeviceListActivity: action: con.mi.test.action.DISCOVERY_DEVICE_FAILED
2018-10-15 11:14:04.325 6683-6683/com.mijiasdk.demo I/Toast: Show toast from OpPackageName:com.mijiasdk.demo, PackageName:com.mijiasdk.demo
日志getRemoteDeviceList onFailed: -1 bad request
请问原因是什么
系统:Android 9 MIUI10.3.2
SDK版本:
compile 'com.miot.bluetooth:mijia:3.3.14@aar'
compile 'com.miot.api:mijia:3.3.14@aar'
compile 'com.miot.service:mijia:3.3.14@aar'
compile 'com.xiaomi.account:oauth-android:2.0.9'
之前所有操作正常(
MiotManager.getInstance().initialize(getApplicationContext());
MiotManager.getInstance().setAppConfig(appConfig);
MiotManager.getPeopleManager().savePeople(people);)
当调用MiotManager.getDeviceManager().getRemoteDeviceList(mDeviceHandler);时报错:
日志文件:
log.txt
步骤都是跟着文档走了,甚至代码都是直接copy了,AppConfig中替换了自己key,id。
然后MiotManager.getInstance().open() 就是绑定不成功,然后我把自己写的application替换了testapplication,demo是正常的。请问是不是漏了什么
环境:
Android9.0
mijiaClient-3-3-14
日志
D/MiotManager: open
D/MiotManager: start wait service connect
E/MiotManager: bind service failed
从Iot平台获取属性参数是可以正常获取到的,但是从SDK中获取属性信息报如下错误:
09-05 14:47:29.825 26073-26132/com..app:miot D/DeviceManipulatorImpl: readProperty: [77516639].[urn:schemas-mi-com:service:xxxx:BaseService:1]
09-05 14:47:29.836 26073-26130/com..app:miot D/miio-JNI: hencrypt begin
hencrypt begin, did 18446744073709551615 stamp 4294967295
09-05 14:47:31.840 26073-26130/com..app:miot E/miio-localapi: rpc timestamp time out, retry 1
09-05 14:47:33.844 26073-26130/com..app:miot E/miio-localapi: rpc timestamp time out, retry 2
09-05 14:47:35.849 26073-26130/com..app:miot E/miio-localapi: rpc timestamp time out, retry 3
09-05 14:47:35.850 26073-26130/com..app:miot E/miio-localapi: java.net.SocketTimeoutException: Receive timed outjava.net.SocketTimeoutException: Receive timed out
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:147)
at java.net.DatagramSocket.receive(DatagramSocket.java:813)
at com.xiaomi.miio.MiioLocalAPI.udp_receive(MiioLocalAPI.java:91)
at com.xiaomi.miio.MiioLocalAPI.rpc(MiioLocalAPI.java:684)
at com.miot.service.b.a.c.a(LanChannel.java:33)
at com.miot.service.b.b.executeRequest(GetPropertyTask.java:45)
at com.miot.service.common.d.e.run(MiotTask.java:39)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)
09-05 14:47:35.851 26073-26130/com.***.app:miot D/LanChannel: onResponse: {"code":-3,"message":"request time out"}
你好,我在使用mHostActivity.showUserLicenseHtmlDialog方法时候,报错。是哪里问题呢?
java.lang.NoSuchMethodError: No interface method showUserLicenseHtmlDialog(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/view/View$OnClickListener;)V in class Lcom/xiaomi/smarthome/device/api/IXmPluginHostActivity; or its super classes (declaration of 'com.xiaomi.smarthome.device.api.IXmPluginHostActivity' appears in base.apk) at com.miaomiaoce.sensor_ht.module.home.MainActivity$20.onSuccess(Unknown Source:136) at com.miaomiaoce.sensor_ht.mo
Device getIsSetPinCode 值即便是有了密码依然是false
有些设备在进行蓝牙连接时候回调中会报-7?如何避免这种超时状态呢?
有时候会sdk内部会偶发com.miot.common.people.People.getUserId的空指针异常
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.miot.common.people.Account.getUserId()' on a null object reference
at com.miot.common.people.People.getUserId(SourceFile)
at com.miot.service.manager.discovery.impl.DeviceFactory.createFrom(SourceFile)
at com.miot.service.common.manager.ServiceManager$AccountManager$1.run(SourceFile)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
目前我用这个sdk带的demo后发现不了设备,(我找了一个空气净化器V2,米家app可以发现的)这个需要怎么搞?
[MJFAppConfigOperation shared] getAppconfigWithConfigName 是在IOS SDK中提供的接口,请问在andorid SDK中哪一个接口与之对应,有同样的功能?
你好,
在做固件更新中,我用此方法往设备写入数据。
XmBluetoothManager.getInstance().writeNoRsp(mDeviceMac, UUID.fromString(MMCGattAttributes.SENSOR_SERVICE_UUID_OAD),
UUID.fromString(MMCGattAttributes.SENSOR_SPOTA_SERV_PATCH_DATA),
chunk, new Response.BleWriteResponse() {
@OverRide
public void onResponse(int code, Void data) {
}
});
但是在广播包它public static final String ACTION_CHARACTER_CHANGED = "com.xiaomi.smarthome.bluetooth.character_changed";接收数据返回的状态中。时间需要100ms左右,我该如何提升更新的速度呢?
你好,security_setting_enable属性设置为true时。设置完密码后。再次进入插件时,并没有生效。
按照demo 方式进行处理
<uses-permission
android:name="com.xiaomi.permission.AUTH_SERVICE" />
public static final String PUSH_MESSAGE = "com.xiaomi.push.message";
public static final String PUSH_COMMAND = "com.xiaomi.push.command";
public void registerPush() {
IntentFilter filter = new IntentFilter();
filter.addAction(PUSH_COMMAND);
filter.addAction(PUSH_MESSAGE);
registerReceiver(mReceiver, filter);
}
MJPushBroadcastReceiver mReceiver = new MJPushBroadcastReceiver() ;
mijiaClient-3-3-3.arr
PeopleFactory.createOauthPeople(accessToken, "小米UserId", expiresIn, macKey, macAlgorithm);
显示快联成功页面,设备列表有该设备。
OpenMiotCloudImpl: post url: /device/bind onSucceed: {"code":0,"message":"ok","result":"ok"}
PeopleFactory.createOauthPeople(accessToken, "空字符串", expiresIn, macKey, macAlgorithm);
显示快联成功页面,设备列表无该设备。
https://openapp.io.mi.com/openapp/device/bind
D/OkHttpManager: parseResponse body: {"code":-6,"message":"-1:not permit,bind failed","result":{"ret":-1}}
D/OpenMiotCloudImpl: post url: /device/bind onSucceed: {"code":-6,"message":"-1:not permit,bind failed","result":{"ret":-1}}
版本:mijiaClient-3-3-2.aar,mijiaService-3-3-2.aar,mijiaBluetooth-3-3-2.aar,codegenerator-3-3-0.jar
错误日志:
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Float
at com.miot.common.property.AllowedValueRange.isValueValid(AllowedValueRange.java:80)
at com.miot.common.property.AllowedValue.isValid(AllowedValue.java:14)
at com.miot.common.property.PropertyDefinition.validate(PropertyDefinition.java:134)
at com.miot.common.property.Property.setValue(Property.java:66)
at com.miot.service.b.b.b.a(DecodeHelper.java:46)
at com.miot.service.b.b.a.c.a(GetCodec.java:33)
at com.miot.service.b.b.a(GetPropertyTask.java:50)
at com.miot.service.b.b.parseResult(GetPropertyTask.java:23)
at com.miot.service.common.d.e.run(MiotTask.java:70)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)
定位到com.miot.common.device.parser.json.JsonDeviceParser中parseProperty(),在DataType.toObjectValue(String value)方法中是使用Double类型解析的,但是在AllowedValueRange中isValueValid中直接将Double强转成Float。所以出错了。
Hi TianHang,
我们想在车机娱乐系统上和米家的设备互动互通,想获取到米家设备的状态以发送命令给设备,据了解应该是通过这个mijiaSDK接入,测试阶段没有服务器,已申请企业组,在小米开放平台创建了应用(智能家庭服务权限申请被拒了,原因是该能力仅面向智能硬件已接入小米IOT平台的企业开放重新申请审核中),把demo的包名改成了创建应用的包名,同时替换了APPID和APPKEY,这样的话点击demo中的MIACCOUNTLOGIN button会遇到NumberFormatException的问题,应该是格式转换中传递参数的问题,异常log如下:
05-16 14:36:23.246 14116 14116 E AndroidRuntime: FATAL EXCEPTION: main
05-16 14:36:23.246 14116 14116 E AndroidRuntime: Process: com.aptiv.aptivdemo, PID: 14116
05-16 14:36:23.246 14116 14116 E AndroidRuntime: java.lang.NumberFormatException: null
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at java.lang.Long.parseLong(Long.java:557)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at java.lang.Long.valueOf(Long.java:808)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at com.mi.account.XiaomiAccountGetPeopleInfoTask.(XiaomiAccountGetPeopleInfoTask.java:38)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at com.mi.activity.main.AccountActivity.processAuthResult(AccountActivity.java:183)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at com.mi.activity.main.AccountActivity.access$200(AccountActivity.java:32)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at com.mi.activity.main.AccountActivity$3.onPostExecute(AccountActivity.java:155)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at android.os.AsyncTask.finish(AsyncTask.java:755)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at android.os.AsyncTask.access$900(AsyncTask.java:192)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7116)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
05-16 14:36:23.246 14116 14116 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:925)
我账号下家里有一台 米家智能摄像机云台版,其实目的就是想和米家的设备互通,获取设备状态以及发送命令给设备,因为没有服务器,所以通过授权码授权模式是不是不可用?那账号接入中的回调地址也没发修改填写了。
1.这种情况只能用隐式授权模式吗?
2.获取设备列表是否和申请应用的家庭服务权限有关,还是只和登陆的账户有关?
3.能否获取米家官方的设备(电视,门锁,空调,扫地机器人等),还是只能控制企业自己的硬件?
呈请解惑,多谢!
你好,
用XmbluetoothManager.getInstance().secureConnect(mDeviceMac,connectResp);进行安全的蓝牙连接时候,回调中,连接不成功用时需要61s。如何才能提高连接不成功时候的回调速度呢?
两个9.0手机登陆都出了问题。小米9和荣耀8x
XmPluginHostApi.instance().getFilterBluetoothDeviceList(requestMode);,此接口如何获取到具体信息?
你好,我在通过此方法,获取红点的状态。当固件是最新的版本时候,updateInfo.mHasNewFirmware值也是true。红点有显示?(或者说我该如何控制红点的显示状态,有更新时候显示,无更新时候不显示)
mDevice.checkDeviceUpdateInfo(new Callback() {
@Override
public void onSuccess(DeviceUpdateInfo updateInfo) {
Log.e("tywei", updateInfo.mHasNewFirmware + "社么值");
Message.obtain(mHandler, MSG_UPDATE_FIRM, updateInfo).sendToTarget();
}
@Override
public void onFailure(int arg0, String arg1) {
}
});
/**
用以上接口获取硬件版本号,获取不正确???
请问 如果 更新了deviceinfo 信息 比如设置了pincode 怎么才能获得到最新的属性状态 ,只能通过再一次拉去设备列表吗
你好,我在菜单栏中打开了如下图撤销条款界面,点击撤销条款时候。如何把我的插件退出,并且回到米家设备页面。目前是回到了我插件的主页面。并没有把我主界面销毁。
MiotManager.getDeviceManager().getRemoteDeviceList
这个接口查出来的设备列表是有序的吗?
logcat :
pkg:miot D/OpenMiotCloudImpl: post url: /openapp/user/device_list onSucceed: {"code":-8,"message":"app_id is null","result":""}
小米账号的 "使用您的智能家庭服务"权限已经通过。
Process: com.chuangmi.imihome:miot, PID: 18750
java.lang.RuntimeException: Unable to destroy activity {com.chuangmi.imihome/com.miot.service.connection.wifi.SmartConfigMainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] java.lang.String.getBytes(java.lang.String)' on a null object reference
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4505)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4523)
at android.app.ActivityThread.-wrap5(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1683)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6701)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] java.lang.String.getBytes(java.lang.String)' on a null object reference
at com.miot.service.connection.DeviceConnectionImpl.getBase64(DeviceConnectionImpl.java:152)
at com.miot.service.connection.DeviceConnectionImpl.access$000(DeviceConnectionImpl.java:29)
at com.miot.service.connection.DeviceConnectionImpl$1.onSucceed(DeviceConnectionImpl.java:92)
at com.miot.service.connection.wifi.SmartConfigMainActivity.onDestroy(SmartConfigMainActivity.java:190)
at android.app.Activity.performDestroy(Activity.java:7252)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1249)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4492)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4523)
at android.app.ActivityThread.-wrap5(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1683)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6701)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.