更多内容请访问:与华为官方共建鸿蒙科技社区https://harmonyos.51cto.com未来越来越美好,万物互联时代来临.接下来说说我接触鸿蒙FA开发的经历。鸿蒙FA“NFCtouch”主要是通过NFC“touch”唤起鸿蒙FA应用,根据NFC通讯获取的设备信息,然后登录关联的华为账号进行网络配置。网络配置成功后,即可实现远程控制。1、首先我们创建一个jsAbility,如图。2、入口的main->java包中MainAbility的onStart和onNewIntent获取触摸设备信息。代码如下:@OverridepublicvoidonStart(Intentintent){intent.setParam("window_modal",3);HmsBridge.getInstance().initBridge(this);//获取sn和sessionIdStringnanSessionId=intent.getStringParam("nanSessionId");//注册分发网络har包NetConfigAbility.register(this,nanSessionId);ObjectbusinessInfo=intent.getParams().getParam("businessInfo");Stringsn="";if(businessInfo!=null){ZSONObjectbusinessInfoZson=ZSONObject.classToZSON(商业信息);sn=businessInfoZson.getZSONObject("params").getString("");}super.onStart(intent);}@Override//fa正在运行,再次扫描publicvoidonNewIntent(Intentintent){//获取sn和sessionIdStringnanSessionId=intent.getStringParam("nanSessionId");ObjectbusinessInfo=intent.getParams().getParam("businessInfo");Stringsn="";if(businessInfo!=null){ZSONObjectbusinessInfoZson=ZSONObject.classToZSON(businessInfo);sn=businessInfoZson。getZSONObject("params").getString("");}}3、关联华为账号,华为授权登录流程图如下。下面是华为登录授权界面和注销界面。//--------------------华为授权登录---------------------导入鸿蒙sdkimport{HuaweiIdAuthParamsHelper,HuaweiIdAuthManager,OPENID,PROFILE,GAMES,Scope}from'@hmscore/hms-js-account'signIn:function(){varthat=this//新增scopeListvarscopeList=newArray();scopeList.push(OPENID);scopeList.push(简介);varhealthbehavior=newScope("https://www.huawei.com/healthkit/extend/healthbehavior.read");varhearthealthsleep=newScope("https://www.huawei.com/healthkit/extend/hearthealthsleep.read");varfatreduction=newScope("https://www.huawei.com/healthkit/extend/fatreduction.read");varsport=newScope("https://www.huawei.com/healthkit/extend/sport.read");scopeList.push(healthbehavior);scopeList.push(hearthealthsleep);scopeList.push(fatreduction);scopeList.push(sport);varopencloud=newScope("https://www.huawei.com/auth/smarthome/opencloud");scopeList.push(opencloud);varsignInOption=newHuaweiIdAuthParamsHelper().setId().setProfile().setMobileNumber().setAuthorizationCode().setScopeList(scopeList).build();console.error(JSON.stringify(signInOption));HuaweiIdAuthManager.getAuthApi().getSignInIntent(signInOption).then((result)=>{varauthCode=result.serverAuthCode;varaccessToken=result.accessToken;varunionId=result.unionId;}).catch((error)=>{});},signOut:function(){HuaweiIdAuthManager.getAuthApi().signOut().then((result)=>{}).catch((error)=>{console.error("signoutfail");});},4.关联华为账号后,开始网络配置,主要是NAN和AP网络配置:如果第二步得到的nanSessionId不是NAN_DEVICE_NOT_FOUND,那么可以走NAN配网流程,否则走Ap配网流程。具体配网步骤如下:引入华为配网模块。NAN配网操作设备上配网键让设备进入配网模式触碰设备上的NFC标签,拉起轻应用选择配网wifi调用discoveryByNAN接口代码为0调用connectDevice接口来连接设备调用configDeviceNet接口开始配网调用disconnectDevice接口断开网络调用检测设备在线接口检测设备是否在线调用绑定设备接口AP配网运营设备输入配网密钥让设备进入配网模式手机触碰设备上的NFC标签,拉起灯应用选择配网wifi调用discoveryByNAN接口代码不为0调用discoveryBySoftAp接口搜索对应的ap当前设备,如果找不到,请尝试连接直接到ap调用connectDevice接口连接设备调用configDeviceNet接口开始配网调用disconnectDevice接口断网调用检测设备online接口检测到设备在线则调用绑定设备接口5、配置完成后,可以跳转到设备控制页面,进行一系列的设备操作。6、过程中遇到的一些问题及解决方法:EMUI版本下,如果多个弹窗操作或其他效果图串联显示,会出现黑屏吗?解决方法是延迟某个视图的渲染。EMUI版本下,有时界面渲染复杂,会出现某个div显示或不显示的情况。使用if控制显示时,可能会出现白屏。这种情况下,使用div的属性show就可以解决这个问题。使用if时会改变渲染树的结构,使用show会避免这个问题。在使用canvas的时候,如果数据发生变化重绘,数据重绘就会乱七八糟。需要先清图,然后升级到BuildVersion:2.1.0.501或以上版本再画。适配compileSdkVersion和compatibleSdkVersion时,不需要在config.js中设置。config.js设置无效,必须在构建中设置。改编版本设置在年级。以上主要是我们团队在开发鸿蒙FA智能家居NFC触控应用时的一些问题和看法。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区
