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'
harmonyos {
signingConfigs {
debug {
certpath file('C:/Users/Administrator/Desktop/huawei_watch/com.company.fit.cer')
profile file('C:/Users/Administrator/Desktop/huawei_watch/com.company.fit_HarmonyAppProvision_debug.p7b')
certpath file('D:/HuaweiWatchClient/fitjs_certificate.cer')
profile file('D:/HuaweiWatchClient/fitjs_provisionDebug.p7b')
signAlg 'SHA256withECDSA'
keyPassword '0000001BA5B4F455E634DAD3600D1EAA4433CA0169925774EC115323BD0EA2CE289094694DF8C9DA73F9C2'
keyPassword '0000001BC4E4A99A1313A6D5ACBC0859CA370605139A0EEB174EB20A948AAB1365AE5A87A93F916BD52C16'
keyAlias 'huawei_watch Release'
storePassword '0000001BEC1AEE04E0D331CC47AC56B11FFCF80694C5C7E5AC3CDB84EB3548B95BD2E8DD7DF65945E733ED'
storeFile file('C:/Users/Administrator/Desktop/huawei_watch/huawei_watch.jks')
storePassword '0000001B6FBBA74F0356FAFA4A45C1573FF4F04809DED359D259DBDF563E31A75F2F8D4F5ABB2EDC2AC672'
storeFile file('D:/HuaweiWatchClient/huawei_watch.jks')
}
}
compileSdkVersion 1
......
......@@ -22,7 +22,7 @@
{
"name": "default",
"icon": "$media:icon",
"label": "Fit",
"label": "Fit健身",
"type": "page"
}
],
......@@ -31,6 +31,15 @@
"deliveryWithInstall": true,
"moduleName": "entry"
},
"metaData": {
"customizeData": [
{
"extra": "",
"name": "supportLists",
"value": "com.sportq.fit:B1B788A1BBD5F459BC641DA8CE690EA065C96957F58E883764982B5C46E53E06"
}
]
},
"description": "",
"js": [
{
......
......@@ -2,36 +2,10 @@ import app from "@system.app";
export default {
onCreate() {
console.log(JSON.stringify(app.getInfo(),321));
console.info("Application onCreate");
//发送一个手表应用已启动的事件给手机
this.sendMsg({
"eventFlg": "6",
});
},
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 @@
.todo-item {
width: 454px;
height: 418px;
}
}
/*完成训练*/
.train-end{
......
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 {
data: {
page : "", //显示页面
title: "训练准备", //页面标题
acName: " ",//动作名称
progress: "",//进度条
acType: "",//次/秒 (0:次,1:秒)
acCnt: "00",//动作次数
acTotalCnt: "00",// 动作总次数
acCalorie: "",//卡路里
countdownT: "",// 倒计时
restHint: "",//休息文案
isLast: "",//是否第一个动作 "0":真 "1":假
isFirst: "",// 是否最后一个动作 "0":真 "1":假
fitDuration: "",//训练持续时长
fitTotalDuration: "",//训练时长-用于训练完成界面
heartRateList : [], //心率数组
averHeartRate: "",//平均心率
maxHeartRate: "",//最高心率
rollbackStop: "",//切出回来时候,是否需要暂停 "0":暂停 "0以外":切出训练
newHeartRate:"--", //当前心率
isStop : false, //是否暂停
sendFlg : false, // 是否在发送消息
stopFlg : false, //是否暂停
tabIndex : 0, //滑动index
isPhoneLeave : false, //手机端离开状态
isEnd : false, //是否完成
lastPage:"",//上个页面标识
isReceiveStartMessage: false,//启动时收到手机端给的回复消息
},
onReady(){
let _this = this;
/**
*获取客户端信息
*/
_this.getMsg();
/**
* 关闭启动页
*/
setTimeout(function(){
if(!_this.isReceiveStartMessage){
_this.page = "12";
}
},1500)
},
data: {
page: "", //显示页面
title: "训练准备", //页面标题
acName: " ", //动作名称
progress: "", //进度条
acType: "", //次/秒 (0:次,1:秒)
acCnt: "00", //动作次数
acTotalCnt: "00", // 动作总次数
acCalorie: "", //卡路里
countdownT: "", // 倒计时
restHint: "", //休息文案
isLast: "", //是否第一个动作 "0":真 "1":假
isFirst: "", // 是否最后一个动作 "0":真 "1":假
fitDuration: "", //训练持续时长
fitTotalDuration: "", //训练时长-用于训练完成界面
heartRateList: [], //心率数组
averHeartRate: "", //平均心率
maxHeartRate: "", //最高心率
rollbackStop: "", //切出回来时候,是否需要暂停 "0":暂停 "0以外":切出训练
newHeartRate: "--", //当前心率
isStop: false, //是否暂停
sendFlg: false, // 是否在发送消息
stopFlg: false, //是否暂停
tabIndex: 0, //滑动index
isPhoneLeave: false, //手机端离开状态
isEnd: false, //是否完成
lastPage: "", //上个页面标识
isReceiveStartMessage: false, //启动时收到手机端给的回复消息
},
onReady() {
let _this = this;
//数据重置
_this.restore();
//ping手机端状态
_this.ping();
//获取客户端信息
_this.getMsg();
//关闭启动页
setTimeout(function () {
if (!_this.isReceiveStartMessage) {
_this.page = "12";
}
},1500);
},
onShow() {
//保持屏幕常亮
this.keepScreenOn();
},
onDestroy() {
//发送页面销毁时间
this.sendMsg({
"eventFlg": "7",
});
this.quit();
//取消接收手机侧第三方应用发过来的消息
FeatureAbility.unsubscribeMsg();
},
start(msg) {
let _this = this;
let model = msg.acModel;
start(msg){
let _this = this;
let model = msg.acModel;
//接到手机端消息时(去掉17初始化的事件),启动页显示完后,不显示提示登录页面page 12
if (msg.eventFlg != "") {
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
if(msg.eventFlg != ""){
_this.isReceiveStartMessage=true;
}
if(_this.sendFlg){
return false;
}
//手机端主动离开时间,等待0.5秒后再处理其他时间
if (_this.isPhoneLeave) {
return
}
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;
}
}
_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){
return
}
/**
*手表端ping手机端
*/
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": //训练准备后的倒计时
_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'){
_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;
,
/**
*保持屏幕常亮
*/
keepScreenOn() {
brightness.setKeepScreenOn({
keepScreenOn: true,
success: function () {
console.log("handling set keep screen on success")
},
fail: function (data, code) {
console.log("handling set keep screen on fail, code:" + code);
}
})
}
},
/**
发送短消息给客户端
*/
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(){
let _this = this;
FeatureAbility.subscribeMsg({
success: function(data) {
_this.start(JSON.parse(data.message));
},
fail: function(data, code) {
_this.sendErrMsg(data,code)
}
});
},
/**
把错误信息发送至客户端
getMsg() {
let _this = this;
FeatureAbility.subscribeMsg({
success: function (data) {
_this.sendErrMsg(data.message,"手表端接收到消息数据:");
_this.start(JSON.parse(data.message));
},
fail: function (data, code) {
console.log('handing fail, message: ' + data + ', code: ' + code);
}
});
}
,
/**
* 把错误信息发送至客户端
*/
sendErrMsg(data,code) {
let _this = this;
_this.sendMsg({
"errData" : data,
"errCode" : code,
"text" : "手表错误信息"
})
},
/**
sendErrMsg(data, code) {
FeatureAbility.sendMsg({
deviceId: 'remote',
bundleName: 'com.sportq.fit',
message: JSON.stringify({
"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() {
let _this = this;
sensor.subscribeHeartRate({
success :function(data){
_this.newHeartRate = data.heartRate;
_this.heartRateList.push(data.heartRate);
_this.sendMsg({
"eventFlg" : "0",
"reatCnt" : data.heartRate
getHeartRate() {
let _this = this;
sensor.subscribeHeartRate({
success: function (data) {
_this.newHeartRate = data.heartRate;
_this.heartRateList.push(data.heartRate);
console.log('获取心率成功: ' + data.heartRate);
_this.sendMsg({
"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) {
//将array的长度赋给len
let len = arr.length;
let sum = 0;
//利用for循环遍历数组的内容,利用sum累加求和
for(let i = 0; i < len ; i++){
sum += arr[i];
}
//返回数组的和与长度求平均值
return parseInt(sum/len);
},
/**
getAverHeartRate(arr) {
//将array的长度赋给len
let len = arr.length;
let sum = 0;
//利用for循环遍历数组的内容,利用sum累加求和
for (let i = 0; i < len; i++) {
sum += arr[i];
}
//返回数组的和与长度求平均值
return parseInt(sum / len);
}
,
/**
*获取最大心率
*/
getMaxHeartRatet(arr){
let max = arr[0];
for (let i = 0; i < arr.length - 1; i++) {
max = max < arr[i+1] ? arr[i+1] : arr
getMaxHeartRatet(arr) {
let max = arr[0];
for (let i = 0; i < arr.length - 1; i++) {
max = max < arr[i + 1] ? arr[i + 1] : arr
}
return parseInt(max)
}
return parseInt(max)
},
/**
,
/**
*暂停
*/
stop(){
this.isStop = true;
this.stopFlg = true;
this.$refs.listDom.scrollTo({index:1});
this.tabIndex = 1;
this.sendMsg({
"eventFlg" : "3",
})
},
/**
stop() {
this.isStop = true;
this.stopFlg = true;
this.$refs.listDom.scrollTo({
index: 1
});
this.tabIndex = 1;
this.sendMsg({
"eventFlg": "3",
})
}
,
/**
*播放
*/
play(){
this.isStop = false;
this.stopFlg = false;
this.sendMsg({
"eventFlg" : "4",
})
},
/**
play() {
this.isStop = false;
this.stopFlg = false;
this.sendMsg({
"eventFlg": "4",
})
}
,
/**
*关闭
*/
close(){
this.sendMsg({
"eventFlg" : "5",
});
this.quit();
},
/**
close() {
this.sendMsg({
"eventFlg": "5",
});
this.quit();
}
,
/**
*上一个动作
*/
previous(){
this.sendMsg({
"eventFlg" : "1",
})
},
/**
previous() {
this.sendMsg({
"eventFlg": "1",
})
}
,
/**
*下一个动作
*/
next(){
this.sendMsg({
"eventFlg" : "2",
})
},
next() {
this.sendMsg({
"eventFlg": "2",
})
}
/**
,
/**
*震动
*/
vibrate(){
vibrator.vibrate({
mode: "short",
})
},
/**
vibrate() {
vibrator.vibrate({
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(){
this.isStop = false;
this.sendFlg = false;
this.stopFlg = false;
this.heartRateList = [];
sensor.unsubscribeHeartRate() //取消监听心率
},
/**
quit() {
this.isStop = false;
this.sendFlg = false;
this.stopFlg = false;
this.heartRateList = [];
sensor.unsubscribeHeartRate() //取消监听心率
}
,
/**
*完成
*/
end(){
this.page = '10';
}
end() {
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