HUAWEI Wear Engine面向手机和手表的服务&应用开发者,提供华为穿戴设备开放能力。应用通过调用Wear Engine开放能力接口,实现手机和手表上三方应用之间的消息通信和数据传输。Wear Engine集成方式简单,不需要关注设备间交互,具体集成方式示意如下:
在这个Codelab中,提供了一个三方应用基础开发样例,您将使用Wear Engine实现一个手机端与手表端消息通信和数据传输的应用程序。
buildscript {
repositories {
maven { url 'http://developer.huawei.com/repo/' }
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
}
}
allprojects {
repositories {
maven { url 'http://developer.huawei.com/repo/' }
google()
jcenter()
}
}
implementation 'com.huawei.hms:wearengine:5.0.0.300'
添加代码,在工程WearEngineMainActivity类文件的initData(){} 方法中完成HiWear的授权
private void initData() {
HiWear.getAuthClient(this).requestPermission(new AuthCallback() {
@Override
public void onOk(Permission[] permissions) {
Log.d(TAG, "getAuthClient onOk");
}
@Override
public void onCancel() {
Log.e(TAG, "getAuthClient onCancel");
}
}, Permission.DEVICE_MANAGER);
}
添加代码,在工程WearEngineMainActivity类文件的initData(){} 方法中完成p2pClient的配置,需要通过设置手表应用包名和指纹连接手表应用
private void initData() {
HiWear.getAuthClient(this).requestPermission(new AuthCallback() {
@Override
public void onOk(Permission[] permissions) {
Log.d(TAG, "getAuthClient onOk");
}
@Override
public void onCancel() {
Log.e(TAG, "getAuthClient onCancel");
}
}, Permission.DEVICE_MANAGER);
p2pClient = HiWear.getP2pClient(this);
deviceClient = HiWear.getDeviceClient(this);
p2pClient.setPeerPkgName("com.watch.wearengine");
p2pClient.setPeerFingerPrint("*******");
}
手表侧指纹信息
com.watch.wearengine_BC1bSGDxiTcUEkNGNztsD6sLBFgFWQm9lPl05ktD1R8Bx8SvYQNhjlIMJJGRkf8yVYNxMnwNCbxToR5xerVCp+o=
添加代码,在工程WearEngineMainActivity类文件的sendFile中完成文件消息构建,并且调用send方法发送文件到手表端。
public void sendFile(String sendFilePath) {
File sendFile = new File(sendFilePath);
Message.Builder builder = new Message.Builder();
builder.setPayload(sendFile);
Message fileMessage = builder.build();
String[] fileInfo = sendFilePath.split("/");
final String filename = fileInfo[fileInfo.length - 1];
Log.e(TAG, "file name is " + filename);
p2pClient.send(selectedDevice, fileMessage, new SendCallback() {
@Override
public void onSendResult(int resultCode) {
printOperationResult(Calendar.getInstance().getTime() + SEND_MESSAGE_TO + selectedDevice.getName()
+ DEVICE_NAME_OF + PEER_PKG_NAME + STRING_RESULT + resultCode);
}
@Override
public void onSendProgress(long progress) {
printOperationResult(Calendar.getInstance().getTime() + SEND_MESSAGE_TO + selectedDevice.getName()
+ DEVICE_NAME_OF + PEER_PKG_NAME + " progress:" + progress);
if (progress == 100) {
sendMessageResult(filename);
}
}
}).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void success) {
printOperationResult(
SEND_MESSAGE_TO + selectedDevice.getName() + DEVICE_NAME_OF + PEER_PKG_NAME + SUCCESS);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception error) {
printOperationResult(
SEND_MESSAGE_TO + selectedDevice.getName() + DEVICE_NAME_OF + PEER_PKG_NAME + FAILURE);
}
});
}
在工程完成同步后,选择您的设备作为部署目标,单击"运行"图标,构建运行,在设备上安装并启动示例应用程序,开始进行体验测试。
运行效果:
恭喜您,您已经成功完成了此次Codelab任务和挑战,并学到了以下技能:
请访问我们的官方网站,以进一步了解HUAWEI Wear Engine:
本Codelab中所用Demo源码下载地址如下: