Commit f619149f authored by Sky's avatar Sky

update

parent 81ba1c67
subject=C = CN, O = Huawei, OU = Huawei CBG, CN = Huawei CBG Root CA G2 Test
issuer=C = CN, O = Huawei, OU = Huawei CBG, CN = Huawei CBG Root CA G2 Test
-----BEGIN CERTIFICATE-----
MIICJTCCAaugAwIBAgIIb/9KnVieVTgwCgYIKoZIzj0EAwMwWDELMAkGA1UEBhMC
Q04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UECwwKSHVhd2VpIENCRzEjMCEGA1UE
AwwaSHVhd2VpIENCRyBSb290IENBIEcyIFRlc3QwHhcNMjAwMzEyMTI0NDAwWhcN
NDkwMzEyMTI0NDAwWjBYMQswCQYDVQQGEwJDTjEPMA0GA1UECgwGSHVhd2VpMRMw
EQYDVQQLDApIdWF3ZWkgQ0JHMSMwIQYDVQQDDBpIdWF3ZWkgQ0JHIFJvb3QgQ0Eg
RzIgVGVzdDB2MBAGByqGSM49AgEGBSuBBAAiA2IABLS4fgvaYKKfyMZW/4nNTsSv
xqVxqOEDfLySZK/fSEN0IDQj0sK/qK5hvnf0OxWhwI49P3dKGmQ+cSujXvy0me2D
JTjY127XYZJrvJwwMkrT/vMrZC5kSOEJbt1qAgSmiaNCMEAwDgYDVR0PAQH/BAQD
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFGldwFjx9Tzm/QpA8R1gc9wc
eMbFMAoGCCqGSM49BAMDA2gAMGUCMQCCUDRaglmycUGrHmF+L8owKJhbqOUqbwuX
7XL/vJcp3HeHjiXu7XZmYQ+QAvHPhU0CMCiwWFbDl8ETw4VK25QbwhL/QiUfiRfC
J6LzteOvjLTEV5iebQMz/nS1j7/oj3Rsqg==
-----END CERTIFICATE-----
subject=C = CN, O = Huawei, OU = Huawei CBG, CN = Huawei CBG Software Signing Service CA Test2
issuer=C = CN, O = Huawei, OU = Huawei CBG, CN = Huawei CBG Root CA G2 Test
-----BEGIN CERTIFICATE-----
MIIDDTCCApKgAwIBAgIIbhP8wu4o9CwwCgYIKoZIzj0EAwMwWDELMAkGA1UEBhMC
Q04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UECwwKSHVhd2VpIENCRzEjMCEGA1UE
AwwaSHVhd2VpIENCRyBSb290IENBIEcyIFRlc3QwHhcNMjAwNjA4MDgwOTE4WhcN
NDAwNjA4MDgwOTE4WjBqMQswCQYDVQQGEwJDTjEPMA0GA1UEChMGSHVhd2VpMRMw
EQYDVQQLEwpIdWF3ZWkgQ0JHMTUwMwYDVQQDEyxIdWF3ZWkgQ0JHIFNvZnR3YXJl
IFNpZ25pbmcgU2VydmljZSBDQSBUZXN0MjB2MBAGByqGSM49AgEGBSuBBAAiA2IA
BE59pHjXm8TYEbkyvUzgKY63aofLXZss8eH3lZvoRP5i+hQTTRrnZu78mP4WCRVg
oS/76I/tRLjeACR11Q0wLJBaFOiLMWvm2x4cnMAeHSdV5vkiT4lnRezpNNWPZb/a
GaOCARUwggERMB8GA1UdIwQYMBaAFGldwFjx9Tzm/QpA8R1gc9wceMbFMB0GA1Ud
DgQWBBRtNtFKxM9O8+NJebbMh+QHU7wHoTAPBgNVHRMBAf8EBTADAQH/MEYGA1Ud
IAQ/MD0wOwYEVR0gADAzMDEGCCsGAQUFBwIBFiVodHRwOi8vY3BraS1jYXdlYi5o
dWF3ZWkuY29tL2Nwa2kvY3BzMA4GA1UdDwEB/wQEAwIBBjBmBgNVHR8EXzBdMFug
WaBXhlVodHRwOi8vY3BraS1jYXdlYi5odWF3ZWkuY29tL2Nwa2kvc2VydmxldC9j
cmxGaWxlRG93bi5jcmw/Y2VydHlwZT0xMCYvcm9vdF9nMl9jcmwuY3JsMAoGCCqG
SM49BAMDA2kAMGYCMQDWOqsT6W9ZGQQ3SdltgKrwe9VroVS9WL29sboVamuGsBhk
DFQeC0bMO4SMHGyxfLECMQC7jepoHiPzwxet/IJTbDVx4fQjSm17WKXm/nJOqRkS
6eI6Y3FGAJ90yOTDzZ5U2oM=
-----END CERTIFICATE-----
subject=CN = huawei_watch Release, OU = HOS Development IDE Team, O = Huawei, C = CN
issuer=C = CN, O = Huawei, OU = Huawei CBG, CN = Huawei CBG Software Signing Service CA Test2
-----BEGIN CERTIFICATE-----
MIIC5TCCAmygAwIBAgIGAXQKreitMAoGCCqGSM49BAMDMGoxCzAJBgNVBAYTAkNO
MQ8wDQYDVQQKDAZIdWF3ZWkxEzARBgNVBAsMCkh1YXdlaSBDQkcxNTAzBgNVBAMM
LEh1YXdlaSBDQkcgU29mdHdhcmUgU2lnbmluZyBTZXJ2aWNlIENBIFRlc3QyMB4X
DTIwMDgyMDA3MDMyM1oXDTIxMDgyMDA3MDMyM1owYDEdMBsGA1UEAwwUaHVhd2Vp
X3dhdGNoIFJlbGVhc2UxITAfBgNVBAsMGEhPUyBEZXZlbG9wbWVudCBJREUgVGVh
bTEPMA0GA1UECgwGSHVhd2VpMQswCQYDVQQGEwJDTjBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABN5alrzfTQ+hIPKbgueAZ6EvO3WRzYLuLUxGCRpqHqdksACfvRIu
dXy9UFV0V7X9jNG3Zp0+95JD8C4/fUt0ZUWjggEGMIIBAjCBiAYDVR0jBIGAMH6A
FG020UrEz07z40l5tsyH5AdTvAehoVykWjBYMQswCQYDVQQGEwJDTjEPMA0GA1UE
CgwGSHVhd2VpMRMwEQYDVQQLDApIdWF3ZWkgQ0JHMSMwIQYDVQQDDBpIdWF3ZWkg
Q0JHIFJvb3QgQ0EgRzIgVGVzdIIIbhP8wu4o9CwwHQYDVR0OBBYEFCcWToDapEKN
AvuQF2JJFDl85x/bMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEGCCsGAQUFBwIBFiVo
dHRwOi8vY3BraS1jYXdlYi5odWF3ZWkuY29tL2Nwa2kvY3BzMA4GA1UdDwEB/wQE
AwIHgDAKBggqhkjOPQQDAwNnADBkAjAgckyEi+TmnSuzrJVjQtjAEX1J2/rEQj9v
EBDCU0lP1qlR2ornLLiQG7z9qgkzN0YCMBFvkY07QWJ/NJNr7lhRYNcBMAdcgXa3
bhs2rdXh+0F5lZsaY++zH5pHQ/5uODQ6Pg==
-----END CERTIFICATE-----
\ No newline at end of file
...@@ -3,13 +3,13 @@ apply plugin: 'com.huawei.harmony.hap' ...@@ -3,13 +3,13 @@ apply plugin: 'com.huawei.harmony.hap'
harmonyos { harmonyos {
signingConfigs { signingConfigs {
debug { debug {
certpath file('C:/Users/Administrator/Desktop/huawei_watch/com.company.fit.cer') certpath file('D:/HuaweiWatchClient/fitjs_certificate.cer')
profile file('C:/Users/Administrator/Desktop/huawei_watch/com.company.fit_HarmonyAppProvision_debug.p7b') profile file('D:/HuaweiWatchClient/fitjs_provisionDebug.p7b')
signAlg 'SHA256withECDSA' signAlg 'SHA256withECDSA'
keyPassword '0000001BA5B4F455E634DAD3600D1EAA4433CA0169925774EC115323BD0EA2CE289094694DF8C9DA73F9C2' keyPassword '0000001BC4E4A99A1313A6D5ACBC0859CA370605139A0EEB174EB20A948AAB1365AE5A87A93F916BD52C16'
keyAlias 'huawei_watch Release' keyAlias 'huawei_watch Release'
storePassword '0000001BEC1AEE04E0D331CC47AC56B11FFCF80694C5C7E5AC3CDB84EB3548B95BD2E8DD7DF65945E733ED' storePassword '0000001B6FBBA74F0356FAFA4A45C1573FF4F04809DED359D259DBDF563E31A75F2F8D4F5ABB2EDC2AC672'
storeFile file('C:/Users/Administrator/Desktop/huawei_watch/huawei_watch.jks') storeFile file('D:/HuaweiWatchClient/huawei_watch.jks')
} }
} }
compileSdkVersion 1 compileSdkVersion 1
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
{ {
"name": "default", "name": "default",
"icon": "$media:icon", "icon": "$media:icon",
"label": "Fit", "label": "Fit健身",
"type": "page" "type": "page"
} }
], ],
...@@ -31,6 +31,15 @@ ...@@ -31,6 +31,15 @@
"deliveryWithInstall": true, "deliveryWithInstall": true,
"moduleName": "entry" "moduleName": "entry"
}, },
"metaData": {
"customizeData": [
{
"extra": "",
"name": "supportLists",
"value": "com.sportq.fit:B1B788A1BBD5F459BC641DA8CE690EA065C96957F58E883764982B5C46E53E06"
}
]
},
"description": "", "description": "",
"js": [ "js": [
{ {
......
...@@ -2,36 +2,10 @@ import app from "@system.app"; ...@@ -2,36 +2,10 @@ import app from "@system.app";
export default { export default {
onCreate() { onCreate() {
console.log(JSON.stringify(app.getInfo(),321));
console.info("Application onCreate"); console.info("Application onCreate");
//发送一个手表应用已启动的事件给手机
this.sendMsg({
"eventFlg": "6",
});
}, },
onDestroy() { onDestroy() {
console.info("Application onDestroy"); console.info("Application onDestroy");
//页面销毁,发送时间到手机,用于弹出断开连接弹窗
this.sendMsg({
"eventFlg": "7",
});
FeatureAbility.unsubscribeMsg();
},
//发送短消息给客户端
sendMsg(obj) {
FeatureAbility.sendMsg({
deviceId: 'remote',
bundleName: 'com.sportq.fit',
abilityName: 'com.sportq.fit',
message: JSON.stringify(obj),
success: function () {
console.log("发送成功")
},
fail: function (data, code) {
console.log("发送失败")
}
});
}, },
} }
......
...@@ -228,7 +228,7 @@ ...@@ -228,7 +228,7 @@
.todo-item { .todo-item {
width: 454px; width: 454px;
height: 418px; height: 418px;
} }
/*完成训练*/ /*完成训练*/
.train-end{ .train-end{
......
import sensor from '@system.sensor'; //传感器 import sensor from '@system.sensor'; //传感器
import vibrator from '@system.vibrator';//震动 import vibrator from '@system.vibrator'; //震动
import brightness from '@system.brightness' //保持屏幕常亮
import {P2pClient, Message, Builder} from '../wearengine'
export default { export default {
data: { data: {
page : "", //显示页面 page: "", //显示页面
title: "训练准备", //页面标题 title: "训练准备", //页面标题
acName: " ",//动作名称 acName: " ", //动作名称
progress: "",//进度条 progress: "", //进度条
acType: "",//次/秒 (0:次,1:秒) acType: "", //次/秒 (0:次,1:秒)
acCnt: "00",//动作次数 acCnt: "00", //动作次数
acTotalCnt: "00",// 动作总次数 acTotalCnt: "00", // 动作总次数
acCalorie: "",//卡路里 acCalorie: "", //卡路里
countdownT: "",// 倒计时 countdownT: "", // 倒计时
restHint: "",//休息文案 restHint: "", //休息文案
isLast: "",//是否第一个动作 "0":真 "1":假 isLast: "", //是否第一个动作 "0":真 "1":假
isFirst: "",// 是否最后一个动作 "0":真 "1":假 isFirst: "", // 是否最后一个动作 "0":真 "1":假
fitDuration: "",//训练持续时长 fitDuration: "", //训练持续时长
fitTotalDuration: "",//训练时长-用于训练完成界面 fitTotalDuration: "", //训练时长-用于训练完成界面
heartRateList : [], //心率数组 heartRateList: [], //心率数组
averHeartRate: "",//平均心率 averHeartRate: "", //平均心率
maxHeartRate: "",//最高心率 maxHeartRate: "", //最高心率
rollbackStop: "",//切出回来时候,是否需要暂停 "0":暂停 "0以外":切出训练 rollbackStop: "", //切出回来时候,是否需要暂停 "0":暂停 "0以外":切出训练
newHeartRate:"--", //当前心率 newHeartRate: "--", //当前心率
isStop : false, //是否暂停 isStop: false, //是否暂停
sendFlg : false, // 是否在发送消息 sendFlg: false, // 是否在发送消息
stopFlg : false, //是否暂停 stopFlg: false, //是否暂停
tabIndex : 0, //滑动index tabIndex: 0, //滑动index
isPhoneLeave : false, //手机端离开状态 isPhoneLeave: false, //手机端离开状态
isEnd : false, //是否完成 isEnd: false, //是否完成
lastPage:"",//上个页面标识 lastPage: "", //上个页面标识
isReceiveStartMessage: false,//启动时收到手机端给的回复消息 isReceiveStartMessage: false, //启动时收到手机端给的回复消息
}, },
onReady(){ onReady() {
let _this = this; let _this = this;
/** //数据重置
*获取客户端信息 _this.restore();
*/ //ping手机端状态
_this.getMsg(); _this.ping();
/** //获取客户端信息
* 关闭启动页 _this.getMsg();
*/ //关闭启动页
setTimeout(function(){ setTimeout(function () {
if(!_this.isReceiveStartMessage){ if (!_this.isReceiveStartMessage) {
_this.page = "12"; _this.page = "12";
} }
},1500) },1500);
}, },
onShow() {
//保持屏幕常亮
this.keepScreenOn();
},
onDestroy() {
//发送页面销毁时间
this.sendMsg({
"eventFlg": "7",
});
this.quit();
//取消接收手机侧第三方应用发过来的消息
FeatureAbility.unsubscribeMsg();
},
start(msg) {
let _this = this;
let model = msg.acModel;
start(msg){ //接到手机端消息时(去掉17初始化的事件),启动页显示完后,不显示提示登录页面page 12
let _this = this; if (msg.eventFlg != "") {
let model = msg.acModel; if (msg.eventFlg == "17") {
_this.page = "11";
}
_this.isReceiveStartMessage = true;
}
if (_this.sendFlg) {
return false;
}
if (_this.isStop && msg.eventFlg != "7") {
return false;
}
_this.isStop = false;
//接到手机端消息时,启动页显示完后,不显示提示登录页面page 12 //手机端主动离开时间,等待0.5秒后再处理其他时间
if(msg.eventFlg != ""){ if (_this.isPhoneLeave) {
_this.isReceiveStartMessage=true; return
} }
if(_this.sendFlg){ if (msg.eventFlg == "15" && model.rollbackStop != '0') {
return false; _this.isPhoneLeave = true;
} setTimeout(function () {
_this.isPhoneLeave = false;
},500)
}
//完成训练停止接受10、15事件
if (_this.isEnd) {
if (msg.eventFlg == "10" || msg.eventFlg == "15") {
return false;
}
}
_this.sendErrMsg(msg.eventFlg,"手表端处理接收到的消息类型:");
switch (msg.eventFlg) {
case "0": //训练准备
_this.page = "0";
_this.title = "训练准备";
break;
case "1": //训练准备后的倒计时
_this.page = "1";
_this.countdownT = model.countdownT;
_this.isEnd = false;
_this.stopFlg = false;
//获取心率
_this.getHeartRate();
break;
case "2": //动作名称
_this.vibrate();
_this.page = "2";
_this.acName = model.acName;
_this.isLast = model.isLast;
_this.isFirst = model.isFirst;
break;
case "3": //动作预览
_this.page = "3";
_this.acName = model.acName;
break;
case "4": //动作预览倒计时
_this.page = "4";
_this.acName = model.acName;
_this.countdownT = model.countdownT;
break;
case "5": //训练动作倒计时
_this.page = "5";
_this.acName = model.acName;
_this.countdownT = model.countdownT == "-1" ? "0" : model.countdownT;
_this.acType = model.acType;
_this.acCnt = model.acCnt;
_this.acTotalCnt = model.acTotalCnt;
break;
case "6": //休息中
_this.page = "6";
_this.acName = model.acName;
_this.countdownT = model.countdownT;
_this.acType = 1;
break;
case "7": //暂停
_this.$refs.listDom.scrollTo({
index: 1
});
_this.tabIndex = 1;
_this.stopFlg = true;
break;
case "8": //继续
_this.$refs.listDom.scrollTo({
index: 0
});
_this.tabIndex = 0;
_this.countdownT = model.countdownT;
_this.stopFlg = false;
break;
case "9": //完成训练
_this.vibrate();
_this.isEnd = true;
_this.page = "9";
_this.fitTotalDuration = model.fitTotalDuration;
_this.averHeartRate = _this.getAverHeartRate(_this.heartRateList); //平均心率
_this.maxHeartRate = _this.getMaxHeartRatet(_this.heartRateList); //最高心率
_this.acCalorie = model.acCalorie;
this.quit();
break;
case "10": //退出训练
_this.page = "10";
this.quit();
break;
case "11": //登录中
_this.page = "11"
break;
case "12": //退出登录
_this.page = "12";
this.quit();
break;
case "13": //进度条
_this.progress = ((model.acProgress / model.maxProgress) * 350);
break;
case "14": //训练总时长
_this.acCalorie = model.acCalorie ? model.acCalorie : '--';
_this.fitDuration = model.fitDuration;
break;
case "15": //离开或者返回训练
if (model.rollbackStop == '0') {
if (_this.lastPage != "") {
_this.page = _this.lastPage;
}
} else {
_this.lastPage = _this.page;
_this.page = "15"
}
this.quit();
break;
case "16": //杀掉进程
_this.page = "12";
this.quit();
break;
case "17": //播放初始化、注册心率
//获取心率
_this.getHeartRate();
break;
}
},
if(_this.isStop && msg.eventFlg != "7"){
return false;
}
_this.isStop = false;
//手机端主动离开时间,等待0.5秒后再处理其他时间 /**
if(_this.isPhoneLeave){ *手表端ping手机端
return */
} ping() {
let _this = this;
// 步骤1:创建点对点通信对象
var p2pClient = new P2pClient();
// 步骤2:设置需要通信的手机侧对应的三方应用包名
p2pClient.setPeerPkgName("com.sportq.fit");
// 步骤3:设置手机侧应用指纹信息(该接口暂时不可用,本版本需要使用步骤5中在config.json文件中设置指纹方式)
p2pClient.setPeerFingerPrint("B1B788A1BBD5F459BC641DA8CE690EA065C96957F58E883764982B5C46E53E06");
// 步骤3:检测手机侧对应的第三方应用是否在线
p2pClient.ping({
onSuccess: function () {
console.log('ping方法执行 success.');
},
onFailure: function () {
console.log('ping方法执行 failed');
},
onPingResult: function (resultCode) {
//205:手机端应用已安装 204:手机端应用未安装
if (resultCode.code == 205) {
_this.sendMsg({
"eventFlg": "6",
});
}
console.log('ping 结果:' + resultCode.data + resultCode.code);
},
})
if( msg.eventFlg == "15" && model.rollbackStop != '0'){ ;
_this.isPhoneLeave = true;
setTimeout(function(){
_this.isPhoneLeave = false;
},500)
} }
//完成训练停止接受10、15事件 ,
if(_this.isEnd){ /**
if(msg.eventFlg == "10" || msg.eventFlg == "15"){ 发送短消息给客户端
return false; */
} sendMsg(obj) {
let _this = this;
_this.sendFlg = true;
FeatureAbility.sendMsg({
deviceId: 'remote',
bundleName: 'com.sportq.fit',
message: JSON.stringify(obj),
success: function () {
_this.sendFlg = false;
console.log('FA has been installed.');
},
fail: function (data, code) {
_this.sendFlg = false;
console.log('handing fail, message: ' + data + ', code: ' + code);
}
});
} }
switch(msg.eventFlg){ ,
case "0": //训练准备
_this.page ="0"; /**
_this.title = "训练准备"; *保持屏幕常亮
break; */
case "1": //训练准备后的倒计时 keepScreenOn() {
_this.page = "1"; brightness.setKeepScreenOn({
_this.countdownT = model.countdownT; keepScreenOn: true,
_this.isEnd = false; success: function () {
_this.stopFlg = false; console.log("handling set keep screen on success")
/** },
*获取心率 fail: function (data, code) {
*/ console.log("handling set keep screen on fail, code:" + code);
_this.getHeartRate(); }
break; })
case "2": //动作名称
_this.vibrate();
_this.page ="2";
_this.acName = model.acName;
_this.isLast = model.isLast;
_this.isFirst = model.isFirst;
break;
case "3": //动作预览
_this.page ="3";
_this.acName = model.acName;
break;
case "4": //动作预览倒计时
_this.page ="4";
_this.acName = model.acName;
_this.countdownT = model.countdownT;
break;
case "5": //训练动作倒计时
_this.page ="5";
_this.acName = model.acName;
_this.countdownT = model.countdownT == "-1" ? "0" : model.countdownT;
_this.acType = model.acType;
_this.acCnt = model.acCnt;
_this.acTotalCnt = model.acTotalCnt;
break;
case "6": //休息中
_this.page ="6";
_this.acName = model.acName;
_this.countdownT =model.countdownT;
_this.acType = 1;
break;
case "7": //暂停
_this.$refs.listDom.scrollTo({index:1});
_this.tabIndex = 1;
_this.stopFlg = true;
break;
case "8": //继续
_this.$refs.listDom.scrollTo({index:0});
_this.tabIndex = 0;
_this.countdownT = model.countdownT;
_this.stopFlg = false;
break;
case "9": //完成训练
_this.vibrate();
_this.isEnd = true;
_this.page ="9";
_this.fitTotalDuration = model.fitTotalDuration;
_this.averHeartRate =_this.getAverHeartRate(_this.heartRateList);//平均心率
_this.maxHeartRate = _this.getMaxHeartRatet(_this.heartRateList); //最高心率
_this.acCalorie = model.acCalorie;
this.quit();
break;
case "10": //退出训练
_this.page ="10";
this.quit();
break;
case "11": //登录中
_this.page ="11"
break;
case "12": //退出登录
_this.page ="12";
this.quit();
break;
case "13": //进度条
_this.progress = ((model.acProgress / model.maxProgress) * 350);
break;
case "14": //训练总时长
_this.acCalorie = model.acCalorie ? model.acCalorie : '--';
_this.fitDuration = model.fitDuration;
break;
case "15": //离开或者返回训练
if(model.rollbackStop == '0'){
_this.page =_this.lastPage;
}else{
_this.lastPage=_this.page;
_this.page ="15"
}
this.quit();
break;
case "16": //杀掉进程
_this.page ="12";
this.quit();
break;
case "17": //播放初始化、注册心率
/**
*获取心率
*/
_this.getHeartRate();
break;
} }
},
/** ,
发送短消息给客户端 /**
*/
sendMsg(obj){
let _this = this;
_this.sendFlg = true;
FeatureAbility.sendMsg({
deviceId: 'remote',
bundleName: 'com.sportq.fit',
abilityName: 'com.sportq.fit',
message: JSON.stringify(obj),
success: function() {
_this.sendFlg = false;
console.log("发送成功")
},
fail: function(data, code) {
_this.sendFlg = false;
console.log("发送失败")
}
});
},
/**
*获取客户端短消息 *获取客户端短消息
*/ */
getMsg(){ getMsg() {
let _this = this; let _this = this;
FeatureAbility.subscribeMsg({ FeatureAbility.subscribeMsg({
success: function(data) { success: function (data) {
_this.start(JSON.parse(data.message)); _this.sendErrMsg(data.message,"手表端接收到消息数据:");
}, _this.start(JSON.parse(data.message));
fail: function(data, code) { },
_this.sendErrMsg(data,code) fail: function (data, code) {
} console.log('handing fail, message: ' + data + ', code: ' + code);
}); }
}, });
/** }
把错误信息发送至客户端
,
/**
* 把错误信息发送至客户端
*/ */
sendErrMsg(data,code) { sendErrMsg(data, code) {
let _this = this; FeatureAbility.sendMsg({
_this.sendMsg({ deviceId: 'remote',
"errData" : data, bundleName: 'com.sportq.fit',
"errCode" : code, message: JSON.stringify({
"text" : "手表错误信息" "errData": data,
}) "errCode": code,
}, }),
/** success: function () {
console.log('FA has been installed.');
},
fail: function (data, code) {
console.log('handing fail, message: ' + data + ', code: ' + code);
}
});
}
,
/**
*获取心率 *获取心率
*/ */
getHeartRate() { getHeartRate() {
let _this = this; let _this = this;
sensor.subscribeHeartRate({ sensor.subscribeHeartRate({
success :function(data){ success: function (data) {
_this.newHeartRate = data.heartRate; _this.newHeartRate = data.heartRate;
_this.heartRateList.push(data.heartRate); _this.heartRateList.push(data.heartRate);
_this.sendMsg({ console.log('获取心率成功: ' + data.heartRate);
"eventFlg" : "0", _this.sendMsg({
"reatCnt" : data.heartRate "eventFlg": "0",
"rateCnt": data.heartRate
})
},
fail: function (data, code) {
_this.newHeartRate = "--";
console.log('获取心率失败: ' + data);
_this.sendErrMsg(data,code)
}
}) })
}, }
fail : function(data, code){
_this.sendErrMsg(data,code) ,
} /**
})
},
/**
*计算平均心率 *计算平均心率
*/ */
getAverHeartRate(arr) { getAverHeartRate(arr) {
//将array的长度赋给len //将array的长度赋给len
let len = arr.length; let len = arr.length;
let sum = 0; let sum = 0;
//利用for循环遍历数组的内容,利用sum累加求和 //利用for循环遍历数组的内容,利用sum累加求和
for(let i = 0; i < len ; i++){ for (let i = 0; i < len; i++) {
sum += arr[i]; sum += arr[i];
} }
//返回数组的和与长度求平均值 //返回数组的和与长度求平均值
return parseInt(sum/len); return parseInt(sum / len);
}, }
/**
,
/**
*获取最大心率 *获取最大心率
*/ */
getMaxHeartRatet(arr){ getMaxHeartRatet(arr) {
let max = arr[0]; let max = arr[0];
for (let i = 0; i < arr.length - 1; i++) { for (let i = 0; i < arr.length - 1; i++) {
max = max < arr[i+1] ? arr[i+1] : arr max = max < arr[i + 1] ? arr[i + 1] : arr
}
return parseInt(max)
} }
return parseInt(max)
}, ,
/** /**
*暂停 *暂停
*/ */
stop(){ stop() {
this.isStop = true; this.isStop = true;
this.stopFlg = true; this.stopFlg = true;
this.$refs.listDom.scrollTo({index:1}); this.$refs.listDom.scrollTo({
this.tabIndex = 1; index: 1
this.sendMsg({ });
"eventFlg" : "3", this.tabIndex = 1;
}) this.sendMsg({
}, "eventFlg": "3",
/** })
}
,
/**
*播放 *播放
*/ */
play(){ play() {
this.isStop = false; this.isStop = false;
this.stopFlg = false; this.stopFlg = false;
this.sendMsg({ this.sendMsg({
"eventFlg" : "4", "eventFlg": "4",
}) })
}, }
/**
,
/**
*关闭 *关闭
*/ */
close(){ close() {
this.sendMsg({ this.sendMsg({
"eventFlg" : "5", "eventFlg": "5",
}); });
this.quit(); this.quit();
}, }
/**
,
/**
*上一个动作 *上一个动作
*/ */
previous(){ previous() {
this.sendMsg({ this.sendMsg({
"eventFlg" : "1", "eventFlg": "1",
}) })
}, }
/**
,
/**
*下一个动作 *下一个动作
*/ */
next(){ next() {
this.sendMsg({ this.sendMsg({
"eventFlg" : "2", "eventFlg": "2",
}) })
}, }
/** ,
/**
*震动 *震动
*/ */
vibrate(){ vibrate() {
vibrator.vibrate({ vibrator.vibrate({
mode: "short", mode: "short",
}) success() {
}, console.log("success to vibrate");
/** },
fail(data, code) {
console.log(`handle fail, data = ${data}, code = ${code}`);
}
});
}
,
/**
*数据重置
*/
restore() {
this.lastPage = "";
this.isStop = false;
this.sendFlg = false;
this.stopFlg = false;
this.heartRateList = [];
}
,
/**
*退出训练 *退出训练
*/ */
quit(){ quit() {
this.isStop = false; this.isStop = false;
this.sendFlg = false; this.sendFlg = false;
this.stopFlg = false; this.stopFlg = false;
this.heartRateList = []; this.heartRateList = [];
sensor.unsubscribeHeartRate() //取消监听心率 sensor.unsubscribeHeartRate() //取消监听心率
}, }
/**
,
/**
*完成 *完成
*/ */
end(){ end() {
this.page = '10'; this.page = '10';
} }
} }
/*
* Copyright (c) 2020 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* Version: 5.0.0.300
* Description: wearEngine SDK
*/
var P2pClient = (function () {
var peerPkgName;
var peerFingerPrint;
function P2pClient(context) {}
/**
* 设置手机应用的packageName
* peerPkgName: string
*/
P2pClient.prototype.setPeerPkgName = function (peerPkgName) {
if (!peerPkgName) {
return;
}
this.peerPkgName = peerPkgName;
};
/**
* 设置手机侧指纹信息
* fingerPrint: string
*/
P2pClient.prototype.setPeerFingerPrint = function (fingerPrint) {
if (!fingerPrint) {
return;
}
this.peerFingerPrint = fingerPrint;
};
/**
* 检测对端设备侧是否已经安装指定应用
* pingCallback: object:onSuccess(),onFailure(),onPingResult(resultCode)
*/
P2pClient.prototype.ping = function (pingCallback) {
var successCode = {
data: "ERROR_CODE_P2P_PHONE_APP_EXIT",
code: 205
}
var successCallBack = function () {
pingCallback.onSuccess();
pingCallback.onPingResult(successCode);
};
var notInstallCode = {
data: "ERROR_CODE_P2P_PHONE_APP_NOT_EXIT",
code: 204
}
var failCode = {
data: "ERROR_CODE_P2P_OTHER_ERROR",
code: 203
}
var failCallBack = function (data, code) {
if (!data && !code) {
pingCallback.onFailure();
pingCallback.onPingResult(notInstallCode);
} else {
pingCallback.onFailure();
pingCallback.onPingResult(failCode);
}
};
console.log(this.peerPkgName);
FeatureAbility.detect({
bundleName: this.peerPkgName,
success: successCallBack,
fail: failCallBack,
});
};
/**
* 注册消息监听接口
* receiver:object:onSuccess(),onFailure(),onReceiveMessage(message)
*/
P2pClient.prototype.registerReceiver = function (receiver) {
if (!receiver) {
return;
}
var successCallBack = function (data) {
receiver.onSuccess();
receiver.onReceiveMessage(data.message);
};
FeatureAbility.subscribeMsg({
success: successCallBack,
fail: receiver.onFailure
});
};
/**
* 发送消息接口
* message: Message
* sendCallback: object:onSuccess(),onFailure(),onSendResult(resultCode),onSendProgress(count)
* resultCode: SUCCESS 207, FAILURE 206
*/
P2pClient.prototype.send = function (message, sendCallback) {
if (!message || !sendCallback) {
return;
}
var successCallBack = function () {
var successCode = {
data: "ERROR_CODE_COMM_SUCCESS",
code: 207
}
sendCallback.onSuccess();
sendCallback.onSendResult(successCode);
sendCallback.onSendProgress(100)
};
var failCallBack = function (errorMessage, code) {
var failCode = {
data: errorMessage,
code: 206
}
sendCallback.onFailure();
sendCallback.onSendResult(failCode);
sendCallback.onSendProgress(0)
};
FeatureAbility.sendMsg({
deviceId: "remote",
bundleName: this.peerPkgName,
abilityName: "",
message: message.getData(),
success: successCallBack,
fail: failCallBack,
});
};
/**
* 注销监听接口
* receiver: onSuccess()
*/
P2pClient.prototype.unregisterReceiver = function (receiver) {
FeatureAbility.unsubscribeMsg();
receiver.onSuccess();
};
return P2pClient;
}());
/**
* 文件格式
* name: file name with path
* mode: 'text' or 'binary'
* mode2: 'R', 'W', 'RW'
*/
var File = (function () {
var name;
var mode;
var mode2;
function File() {}
}());
var Builder = (function () {
var messageInfo;
function Builder(context) {}
Builder.prototype.setDescription = function (description) {
this.messageInfo = description;
this.messageType = 0;
};
/**
* 设置messge信息(两种格式任选其一)
* data: ArrayBuffer
* data: File(暂时不支持)
*/
Builder.prototype.setPayload = function (data) {
if (!data) {
return;
}
if (data instanceof ArrayBuffer) {
this.messageType = 0;
return this.setBufferPlayload(data);
} else if (data instanceof File) {
this.messageType = 1;
return this.setFilePlayload(data);
}
};
Builder.prototype.setBufferPlayload = function (data) {
this.messageInfo = String.fromCharCode.apply(null, new Uint16Array(data));
};
Builder.prototype.setFilePlayload = function (data) {
this.messageInfo = JSON.stringify(data);
};
return Builder;
}());
var Message = (function () {
var builder = new Builder();
function Message(context) {}
Message.prototype.describeContents = function () {
return this.builder.messageInfo;
};
/**
* 获取传送时的信息
*/
Message.prototype.getData = function () {
return this.builder.messageInfo;
};
Message.prototype.getDescription = function () {
return this.builder.messageInfo;
};
/**
* 获取文件信息
*/
Message.prototype.getFile = function () {
if (this.builder.messageType == 1) {
return JSON.parse(this.builder.messageInfo);
}
return null;
};
/**
* 获取传输数据类型
* 0 string
* 1 File
*/
Message.prototype.getType = function () {
return this.builder.messageType;
};
return Message;
}());
export {
P2pClient,
Message,
Builder
};
\ No newline at end of file
{
"appID": "com.company.fit",
"appName": "Fit",
"versionName": "1.0.0",
"versionCode": 1,
"minPlatformVersion": "zsdk 1.0.0",
"pages": [
"pages/index/index"
]
}
-----BEGIN CERTIFICATE-----
MIICGjCCAaGgAwIBAgIIShhpn519jNAwCgYIKoZIzj0EAwMwUzELMAkGA1UEBhMC
Q04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UECwwKSHVhd2VpIENCRzEeMBwGA1UE
AwwVSHVhd2VpIENCRyBSb290IENBIEcyMB4XDTIwMDMxNjAzMDQzOVoXDTQ5MDMx
NjAzMDQzOVowUzELMAkGA1UEBhMCQ04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UE
CwwKSHVhd2VpIENCRzEeMBwGA1UEAwwVSHVhd2VpIENCRyBSb290IENBIEcyMHYw
EAYHKoZIzj0CAQYFK4EEACIDYgAEWidkGnDSOw3/HE2y2GHl+fpWBIa5S+IlnNrs
GUvwC1I2QWvtqCHWmwFlFK95zKXiM8s9yV3VVXh7ivN8ZJO3SC5N1TCrvB2lpHMB
wcz4DA0kgHCMm/wDec6kOHx1xvCRo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUo45a9Vq8cYwqaiVyfkiS4pLcIAAwCgYIKoZI
zj0EAwMDZwAwZAIwMypeB7P0IbY7c6gpWcClhRznOJFj8uavrNu2PIoz9KIqr3jn
BlBHJs0myI7ntYpEAjBbm8eDMZY5zq5iMZUC6H7UzYSix4Uy1YlsLVV738PtKP9h
FTjgDHctXJlC5L7+ZDY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDATCCAoigAwIBAgIIXmuDXbWpOB8wCgYIKoZIzj0EAwMwUzELMAkGA1UEBhMC
Q04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UECwwKSHVhd2VpIENCRzEeMBwGA1UE
AwwVSHVhd2VpIENCRyBSb290IENBIEcyMB4XDTIwMDcwOTAyMDQyNFoXDTMwMDcw
NzAyMDQyNFowYjELMAkGA1UEBgwCQ04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UE
CwwKSHVhd2VpIENCRzEtMCsGA1UEAwwkSHVhd2VpIENCRyBEZXZlbG9wZXIgUmVs
YXRpb25zIENBIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE65LdoIZh1hlpZ2gP
bJ6gPhHsvYSRe22KETgdqeVeYnrbRHI9wsPT6RGYS+pU4mPl6wxzgDMqN6SY/BoZ
luhkE1PzaHoPoNIWIq0O33hpyKyyYwAacIUEjYurkw1E9r9no4IBGDCCARQwHwYD
VR0jBBgwFoAUo45a9Vq8cYwqaiVyfkiS4pLcIAAwHQYDVR0OBBYEFNtek7Ij6NDk
/nF6Zumkc0dbf/NeMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEGCCsGAQUFBwIBFiVo
dHRwOi8vY3BraS1jYXdlYi5odWF3ZWkuY29tL2Nwa2kvY3BzMBIGA1UdEwEB/wQI
MAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMGYGA1UdHwRfMF0wW6BZoFeGVWh0dHA6
Ly9jcGtpLWNhd2ViLmh1YXdlaS5jb20vY3BraS9zZXJ2bGV0L2NybEZpbGVEb3du
LmNybD9jZXJ0eXBlPTEwJi9yb290X2cyX2NybC5jcmwwCgYIKoZIzj0EAwMDZwAw
ZAIwWO1X5q2MdfpR1Q237GpUHGbL1C13rGyFg2p3AYo44FpZ2/A9ss0wOHKM4KDl
ZPqdAjBLkf8NPZy7KVog98+iCTLq35DJ2ZVxkCxknA9YhiHVyXf4HPm4JlT7rW7o
Q+FzM3c=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC5jCCAmygAwIBAgIOCfW2YZ9oK72I9bBIhLgwCgYIKoZIzj0EAwMwYjELMAkG
A1UEBgwCQ04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UECwwKSHVhd2VpIENCRzEt
MCsGA1UEAwwkSHVhd2VpIENCRyBEZXZlbG9wZXIgUmVsYXRpb25zIENBIEcyMB4X
DTIwMDkwMzA1MzkyMloXDTIxMDkwMzA1MzkyMVowgawxCzAJBgNVBAYTAkNOMS0w
KwYDVQQKDCTkuIrmtbfljrvliqjnvZHnu5znp5HmioDmnInpmZDlhazlj7gxHTAb
BgNVBAsMFDE0MDA1Nzg3NzE0NTc4ODA5MzMyMU8wTQYDVQQDDEbkuIrmtbfljrvl
iqjnvZHnu5znp5HmioDmnInpmZDlhazlj7goMTQwMDU3ODc3MTQ1Nzg4MDkzMzIp
LERldmVsb3BtZW50MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3lqWvN9ND6Eg
8puC54BnoS87dZHNgu4tTEYJGmoep2SwAJ+9Ei51fL1QVXRXtf2M0bdmnT73kkPw
Lj99S3RlRaOBujCBtzAMBgNVHRMBAf8EAjAAMEIGA1UdHwQ7MDkwN6A1oDOGMWh0
dHA6Ly9jcmwuY2xvdWQuaHVhd2VpLmNvbS9IdWF3ZWlDQkdIRFJHMmNybC5jcmww
HwYDVR0jBBgwFoAU216TsiPo0OT+cXpm6aRzR1t/814wHQYDVR0OBBYEFCcWToDa
pEKNAvuQF2JJFDl85x/bMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEF
BQcDAzAKBggqhkjOPQQDAwNoADBlAjEAgLfjR3j8boPyJfKONwgp28ySgoqKgQ+g
RtFF56ObjcT8x2irNRCePD0laGeA28IXAjASZp+cqL4oMQluhns2td51jQQ71XBs
E0UGTDid1YgFsK5C/dluYCUJ40u5GoQY3bY=
-----END CERTIFICATE-----
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment