网站建设纯免费官网太原seo推广优化
web/
2025/10/4 12:00:46/
文章来源:
网站建设纯免费官网,太原seo推广优化,百姓网租房,赣州微信公众号制作在手机侧与穿戴设备侧构建应用到应用的通信隧道#xff0c;用于收发应用自定义的报文消息以及文件。实现手机应用和穿戴设备应用间的交互#xff0c;为用户提供分布式场景和体验。比如手机应用发送音频文件到穿戴设备侧应用#xff0c;实现在穿戴设备侧应用上播放音乐#…在手机侧与穿戴设备侧构建应用到应用的通信隧道用于收发应用自定义的报文消息以及文件。实现手机应用和穿戴设备应用间的交互为用户提供分布式场景和体验。比如手机应用发送音频文件到穿戴设备侧应用实现在穿戴设备侧应用上播放音乐手机应用发送暂停指令实现穿戴设备音乐播放暂停等。
收发点对点消息前需要确保应用已在开发者联盟申请获取设备基础信息权限权限否则接口将调用失败。
说明
使用该功能前请确保穿戴设备支持应用安装能力同时穿戴设备侧已有对应的应用。
手机App和穿戴设备App必须同时处于启动状态。当手机App启动且穿戴设备App没有启动时手机App可以通过[startRemoteApp]方法拉起穿戴设备App。
手机侧应用检测穿戴设备侧应用是否安装
注意
该接口的调用需要在开发者联盟申请设备基础信息权限。
参见[查询可用穿戴设备]章节获取已连接设备列表。参见[目标设备选择]章节从已连接设备列表中选定需要通信的设备。 调用[wearEngine]中的[getP2pClient]方法获取[P2pClient]对象。 调用[isRemoteAppInstalled]方法查看是否安装指定的设备应用。
// 将设备侧应用包名定义为remoteBundleName
let remoteBundleName: string ;// 步骤3 获取P2pClient对象
let p2pClient: wearEngine.P2pClient wearEngine.getP2pClient(getContext(this));// 步骤4 查看是否安装指定的设备侧应用
p2pClient.isRemoteAppInstalled(targetDevice.randomId, remoteBundleName).then((isInstall) {console.info(Succeeded in checking remote app install, result is ${isInstall}.);
}).catch((error: BusinessError) {console.error(Failed to check remote app install. Code is ${error.code}, message is ${error.message}.);
})手机侧应用获取穿戴设备侧应用的版本号
注意
该接口的调用需要在开发者联盟申请设备基础信息权限。
参见[查询可用穿戴设备]章节获取已连接设备列表。参见[目标设备选择]章节从已连接设备列表中选定需要通信的设备。 调用[wearEngine]中的[getP2pClient]方法获取[P2pClient]对象。 调用[getRemoteAppVersion]方法获取指定设备对应的应用版本号。
// 将设备侧应用包名定义为remoteBundleName
let remoteBundleName: string ;// 步骤3 获取P2pClient对象
let p2pClient: wearEngine.P2pClient wearEngine.getP2pClient(getContext(this));// 步骤4 获取指定设备对应的应用版本号
p2pClient.getRemoteAppVersion(targetDevice.randomId, remoteBundleName).then((version) {console.info(Succeeded in getting remote app version, version is ${version}.);
}).catch((error: BusinessError) {console.error(Failed to check get remote app version. Code is ${error.code}, message is ${error.message}.);
})手机侧应用拉起设备侧应用
注意
该接口的调用需要在开发者联盟申请设备基础信息权限。
在发送点对点消息前可以用[startRemoteApp]方法拉起设备侧应用。 参见[查询可用穿戴设备]章节获取已连接设备列表。 参见[目标设备选择]章节从已连接设备列表中选定需要通信的设备。 调用[wearEngine]中的[getP2pClient]方法获取[P2pClient]对象。 调用[startRemoteApp]方法指定需要拉起设备侧应用包名。[transformLocalBundleName]默认值为false传入为true时wearEnigne会将本地的应用包名和指纹转换为兼容应用在云侧存储的包名和指纹。
// 将设备侧应用包名定义为remoteBundleName
let remoteBundleName: string ;// 步骤3 获取P2pClient对象
let p2pClient: wearEngine.P2pClient wearEngine.getP2pClient(getContext(this));// 步骤4 拉起设备侧指定应用(transformLocalBundleName不传入参数默认为false)
p2pClient.startRemoteApp(targetDevice.randomId, remoteBundleName).then((p2pResult) {console.info(Succeeded in starting remote app, result is ${p2pResult.code}.);
}).catch((error: BusinessError) {console.error(Failed to start remote app. Code is ${error.code}, message is ${error.message}.);
})手机侧应用发送点对点消息或文件到穿戴设备侧应用
注意
该接口的调用需要在开发者联盟申请设备基础信息权限。
消息长度大小的限制为4096字节。针对消息长度超过限制的情况可以采用发送文件文件大小不超过100MB的方式或进行消息分包控制。
手机侧实现发送消息和文件功能后穿戴设备侧应用需要对应实现接收消息和文件的功能。
发送点对点消息
为了使用工具类构造消息体请先导入所需模块。
import { util } from kit.ArkTS;参见[查询可用穿戴设备]章节获取已连接设备列表。参见[目标设备选择]章节从已连接设备列表中选定需要通信的设备。构造设备侧应用参数[P2pAppParam]。构造需要发送的消息[P2pMessage]。 调用[wearEngine]中的[getP2pClient]方法获取[P2pClient]对象。 调用[sendMessage]方法从手机上的应用发送简短消息到穿戴设备侧对应的应用。设备侧已注册监听消息接收后即可收到手机发送的消息。
// 步骤3 构造设备侧应用参数
let appInfo: wearEngine.AppInfo {// 设置设备侧应用的应用信息包名与指纹bundleName: ,fingerprint:
}
let appParam: wearEngine.P2pAppParam {remoteApp: appInfo// transformLocalAppInfo默认为false不转换包名指纹
}// 设置需要发送的消息内容长度限制为4096字节
let messageContent: string this is message;// 步骤4 构造消息结构体
let textEncoder: util.TextEncoder new util.TextEncoder;
let message: wearEngine.P2pMessage {content: textEncoder.encodeInto(messageContent)
}// 步骤5 获取P2pClient对象
let p2pClient: wearEngine.P2pClient wearEngine.getP2pClient(getContext(this));// 步骤6 发送消息
p2pClient.sendMessage(targetDevice.randomId, appParam, message).then((p2pResult) {console.info(Succeeded in sending message, result is ${p2pResult.code}.);
}).catch((error: BusinessError) {console.error(Failed to send message. Code is ${error.code}, message is ${error.message}.);
})发送文件
为能正确打开文件描述符请先导入模块。
import { fileIo } from kit.CoreFileKit;参见[查询可用穿戴设备]章节获取已连接设备列表。参见[目标设备选择]章节从已连接设备列表中选定需要通信的设备。构造设备侧应用参数[P2pAppParam]。 根据文件路径filePath构造需要发送的文件[P2pFile]。 调用[wearEngine]中的[getP2pClient]方法获取[P2pClient]对象。 调用[transferFile]方法从手机上的应用发送文件到穿戴设备侧对应的应用。
// 步骤3 构造设备侧应用参数
let appInfo: wearEngine.AppInfo {// 设置设备侧应用的应用信息包名与指纹bundleName: ,fingerprint:
}
let appParam: wearEngine.P2pAppParam {remoteApp: appInfo// transformLocalAppInfo默认为false不转换包名指纹
}// 步骤4 构造需要发送的文件
let p2pfile: wearEngine.P2pFile {// 设置需要发送的文件路径其中不能包含..file: fileIo.openSync()
}// 步骤5 获取P2pClient对象
let p2pClient: wearEngine.P2pClient wearEngine.getP2pClient(getContext(this));// 步骤6 发送指定文件至设备
p2pClient.transferFile(targetDevice.randomId, appParam, p2pfile, (error: BusinessError, p2pResult: wearEngine.P2pResult) {// callback处理逻辑if (error) {console.error(Failed to transfer file. Code is ${error.code}, message is ${error.message}.);return;}if (p2pResult.code) {if (p2pResult.code wearEngine.P2pResultCode.COMMUNICATION_SUCCESS) {console.info(Succeeded in transfering file, the result is ${p2pResult.code}.);}console.info(Failed to transfer file, the error code is ${p2pResult.code}.);}if (p2pResult.progress) {console.info(Succeeded in transfering file, the progress is ${p2pResult.progress}.);}
});fileIo.close(p2pfile.file);取消发送文件
参见[查询可用穿戴设备]章节获取已连接设备列表。参见[目标设备选择]章节从已连接设备列表中选定需要通信的设备。构造设备侧应用参数[P2pAppParam]。 根据文件路径filePath构造需要取消发送的文件[P2pFile])。 调用[wearEngine]中的[getP2pClient]方法获取[P2pClient]对象。 调用[cancelFileTransfer]方法取消从手机上的应用到穿戴设备侧对应的应用的文件发送。
// 步骤3 构造设备侧应用参数
let appInfo: wearEngine.AppInfo {// 设置设备侧应用的应用信息包名与指纹bundleName: ,fingerprint:
}
let appParam: wearEngine.P2pAppParam {remoteApp: appInfo// transformLocalAppInfo默认为false不转换包名指纹
}// 步骤4 构造需要发送的文件
let p2pfile: wearEngine.P2pFile {// 设置需要发送的文件路径其中不能包含..file: fileIo.openSync()
}// 步骤5 获取P2pClient对象
let p2pClient: wearEngine.P2pClient wearEngine.getP2pClient(getContext(this));// 发送指定文件至设备
p2pClient.transferFile(targetDevice.randomId, appParam, p2pfile, () {// 回调函数执行逻辑
})// 步骤6 取消发送文件
p2pClient.cancelFileTransfer(targetDevice.randomId, appParam, p2pfile).then((p2pResult) {if (p2pResult.code wearEngine.P2pResultCode.COMMUNICATION_SUCCESS) {console.info(Succeeded in cancelling transfer file, the result is ${p2pResult.code}.);}
}).catch((error: BusinessError) {console.error(Failed to cancel transfer file. Code is ${error.code}, message is ${error.message}.);
})fileIo.close(p2pfile.file);订阅接收穿戴设备侧应用发过来的消息
注意
该接口的调用需要在开发者联盟申请设备基础信息权限。 参见[查询可用穿戴设备]章节获取已连接设备列表。 参见[目标设备选择]章节从已连接设备列表中选定需要通信的设备。 调用[wearEngine]中的[getP2pClient]方法获取[P2pClient]对象。 构造设备侧应用参数[P2pAppParam]。 构造接收到设备侧传来消息后的回调函数[callback]。 调用[registerMessageReceiver]方法订阅监听消息接收事件。
// 步骤3 获取P2pClient对象
let p2pClient: wearEngine.P2pClient wearEngine.getP2pClient(getContext(this));// 步骤4 构造设备侧应用参数
let appInfo: wearEngine.AppInfo {bundleName: ,fingerprint:
}
// 将设备侧应用参数类定义为appParam
let appParam: wearEngine.P2pAppParam {remoteApp: appInfo// transformLocalAppInfo默认为false不转换包名指纹
}// 步骤5 构造回调函数
let callback (p2pMessage: wearEngine.P2pMessage) {console.info(Succeeded in receiving message, the message is ${p2pMessage.content}.);
}// 步骤6 订阅监听消息接收事件
p2pClient.registerMessageReceiver(targetDevice.randomId, appParam, callback).then(() {console.info(Succeeded in registering message receiver.);
}).catch((error: BusinessError) {console.error(Failed to register message receiver. Code is ${error.code}, message is ${error.message}.);
})调用[unregisterMessageReceiver]方法手机应用取消接收穿戴设备侧应用发过来的消息需要传入订阅监听时的同一个回调函数对象。
p2pClient.unregisterMessageReceiver(targetDevice.randomId, appParam, callback).then(() {console.info(Succeeded in unregistering message receiver.);
}).catch((error: BusinessError) {console.error(Failed to unregister message receiver. Code is ${error.code}, message is ${error.message}.);
})订阅接收穿戴设备侧发送过来的文件 参见[查询可用穿戴设备]章节获取已连接设备列表。 参见[目标设备选择]章节从已连接设备列表中选定需要通信的设备。 调用[wearEngine]中的[getP2pClient]方法获取[P2pClient]对象。 构造设备侧应用参数[P2pAppParam]。 构造接收到设备侧传来文件后的回调函数[callback] 调用[registerFileReceiver] 方法订阅监听文件接收事件。
// 步骤3 获取P2pClient对象
let p2pClient: wearEngine.P2pClient wearEngine.getP2pClient(getContext(this));// 步骤4 构造设备侧应用参数
let appInfo: wearEngine.AppInfo {bundleName: ,fingerprint:
}
// 将设备侧应用参数类定义为appParam
let appParam: wearEngine.P2pAppParam {remoteApp: appInfo// transformLocalAppInfo默认为false不转换包名指纹
}// 步骤5 构造回调函数
let callback (p2pMessage: wearEngine.P2pFile) {console.info(Succeeded in receiving file.);
}// 步骤6 订阅监听文件接收事件
p2pClient.registerFileReceiver(targetDevice.randomId, appParam, callback).then(() {console.info(Succeeded in registering file receiver.);
}).catch((error: BusinessError) {console.error(Failed to register file receiver. Code is ${error.code}, message is ${error.message}.);
})调用[unregisterFileReceiver] 方法手机应用取消接收穿戴设备侧应用发过来的文件需要传入订阅监听时的同一个回调函数对象。
p2pClient.unregisterFileReceiver(targetDevice.randomId, appParam, callback).then(() {console.info(Succeeded in unregistering file receiver.);
}).catch((error: BusinessError) {console.error(Failed to unregister file receiver. Code is ${error.code}, message is ${error.message}.);
})最后呢
很多开发朋友不知道需要学习那些鸿蒙技术鸿蒙开发岗位需要掌握那些核心技术点为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料少走很多弯路节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等鸿蒙Harmony NEXT技术知识点
如果你是一名Android、Java、前端等等开发人员想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。 针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说我们直接看详细鸿蒙OpenHarmony 手册共计1236页与鸿蒙OpenHarmony 开发入门视频帮助大家在技术的道路上更进一步。
《鸿蒙 (OpenHarmony)开发学习视频》《鸿蒙生态应用开发V2.0白皮书》《鸿蒙 (OpenHarmony)开发基础到实战手册》OpenHarmony北向、南向开发环境搭建《鸿蒙开发基础》《鸿蒙开发进阶》《鸿蒙开发实战》 总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程从而开设鸿蒙课程企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的预计到年底将有 5,000 款的应用完成原生鸿蒙开发未来将会支持 50 万款的应用。那么这么多的应用需要开发也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长学习鸿蒙势在必行 自↓↓↓拿
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86764.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!