From b544a175d4df9c66739c65ec7e026bc5206335a4 Mon Sep 17 00:00:00 2001 From: BlancWu Date: Tue, 14 Sep 2021 21:30:37 +0800 Subject: [PATCH 1/3] Adapt new auth interface. Signed-off-by: BlancWu --- .../src/main/js/default/pages/index/index.js | 38 +++++++- .../src/main/js/model/RemoteDeviceModel.js | 93 +++++++++++++------ 2 files changed, 96 insertions(+), 35 deletions(-) diff --git a/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js b/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js index 088e8f587f..399ad5b4a4 100644 --- a/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js +++ b/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js @@ -215,7 +215,12 @@ export default { console.info('MusicPlayer[IndexPage] registerDeviceListCallback, callback entered'); var list = []; list[0] = DEVICE_LIST_LOCALHOST; - var deviceList = self.remoteDeviceModel.deviceList; + var deviceList; + if (self.remoteDeviceModel.discoverList != null) { + deviceList = self.remoteDeviceModel.discoverList; + } else { + deviceList = self.remoteDeviceModel.deviceList; + } console.info('MusicPlayer[IndexPage] on remote device updated, count=' + deviceList.length); for (var i = 0; i < deviceList.length; i++) { console.info('MusicPlayer[IndexPage] device ' + i + '/' + deviceList.length + ' deviceId=' @@ -279,12 +284,35 @@ export default { this.$element('continueAbilityDialog').close(); return; } - let self = this; - for (var i = 0; i < this.deviceList.length; i++) { - if (this.deviceList[i].id === e.value) { - this.startAbilityContinuation(this.deviceList[i].id, this.deviceList[i].name); + var name = null; + if (this.remoteDeviceModel.discoverList != null) { + for (var i = 0; i < this.remoteDeviceModel.discoverList.length; i++) { + if (this.remoteDeviceModel.discoverList[i].deviceId === e.value) { + name = this.remoteDeviceModel.discoverList[i].deviceName; + break; + } + } + } + if (name == null) { + console.error('MusicPlayer[IndexPage] onRadioChange failed, can not get name from discoverList'); + return; + } + console.info('MusicPlayer[IndexPage] onRadioChange name=' + name); + for (i = 0; i < this.remoteDeviceModel.deviceList.length; i++) { + if (this.remoteDeviceModel.deviceList[i].deviceName === name) { + this.startAbilityContinuation(this.remoteDeviceModel.deviceList[i].deviceId, this.remoteDeviceModel.deviceList[i].deviceName); + return; } } + let self = this; + this.remoteDeviceModel.authDevice(e.value, () => { + console.info('MusicPlayer[IndexPage] auth and online finished'); + for (i = 0; i < self.remoteDeviceModel.deviceList.length; i++) { + if (self.remoteDeviceModel.deviceList[i].deviceName === name) { + this.startAbilityContinuation(self.remoteDeviceModel.deviceList[i].deviceId, self.remoteDeviceModel.deviceList[i].deviceName); + } + } + }); } }, cancelDialog(e) { diff --git a/ability/JsDistributedMusicPlayer/entry/src/main/js/model/RemoteDeviceModel.js b/ability/JsDistributedMusicPlayer/entry/src/main/js/model/RemoteDeviceModel.js index 411266e003..ade02feabe 100644 --- a/ability/JsDistributedMusicPlayer/entry/src/main/js/model/RemoteDeviceModel.js +++ b/ability/JsDistributedMusicPlayer/entry/src/main/js/model/RemoteDeviceModel.js @@ -19,7 +19,9 @@ var SUBSCRIBE_ID = 100; export default class RemoteDeviceModel { deviceList = []; + discoverList = []; callback; + authCallback = null; #deviceManager; constructor() { @@ -67,35 +69,39 @@ export default class RemoteDeviceModel { console.info('MusicPlayer[RemoteDeviceModel] deviceStateChange data=' + JSON.stringify(data)); switch (data.action) { case 0: - self.deviceList[self.deviceList.length] = data.device; - console.info('MusicPlayer[RemoteDeviceModel] online, updated device list=' + JSON.stringify(self.deviceList)); - self.callback(); - break; + self.deviceList[self.deviceList.length] = data.device; + console.info('MusicPlayer[RemoteDeviceModel] online, updated device list=' + JSON.stringify(self.deviceList)); + self.callback(); + if (self.authCallback != null) { + self.authCallback(); + self.authCallback = null; + } + break; case 2: - if (self.deviceList.length > 0) { - for (var i = 0; i < self.deviceList.length; i++) { - if (self.deviceList[i].deviceId === data.device.deviceId) { - self.deviceList[i] = data.device; - break; - } + if (self.deviceList.length > 0) { + for (var i = 0; i < self.deviceList.length; i++) { + if (self.deviceList[i].deviceId === data.device.deviceId) { + self.deviceList[i] = data.device; + break; } } - console.info('MusicPlayer[RemoteDeviceModel] change, updated device list=' + JSON.stringify(self.deviceList)); - self.callback(); - break; + } + console.info('MusicPlayer[RemoteDeviceModel] change, updated device list=' + JSON.stringify(self.deviceList)); + self.callback(); + break; case 1: - if (self.deviceList.length > 0) { - var list = []; - for (var i = 0; i < self.deviceList.length; i++) { - if (self.deviceList[i].deviceId != data.device.deviceId) { - list[i] = data.device; - } + if (self.deviceList.length > 0) { + var list = []; + for (var i = 0; i < self.deviceList.length; i++) { + if (self.deviceList[i].deviceId != data.device.deviceId) { + list[i] = data.device; } - self.deviceList = list; } - console.info('MusicPlayer[RemoteDeviceModel] offline, updated device list=' + JSON.stringify(data.device)); - self.callback(); - break; + self.deviceList = list; + } + console.info('MusicPlayer[RemoteDeviceModel] offline, updated device list=' + JSON.stringify(data.device)); + self.callback(); + break; default: break; } @@ -110,16 +116,12 @@ export default class RemoteDeviceModel { return; } } - - console.info('MusicPlayer[RemoteDeviceModel] authenticateDevice ' + JSON.stringify(data.device)); - self.#deviceManager.authenticateDevice(data.device); + self.discoverList[self.discoverList.length] = data.device; + self.callback(); }); this.#deviceManager.on('discoverFail', (data) => { console.info('MusicPlayer[RemoteDeviceModel] discoverFail data=' + JSON.stringify(data)); }); - this.#deviceManager.on('authResult', (data) => { - console.info('MusicPlayer[RemoteDeviceModel] authResult data=' + JSON.stringify(data)); - }); this.#deviceManager.on('serviceDie', () => { console.error('MusicPlayer[RemoteDeviceModel] serviceDie'); }); @@ -138,13 +140,44 @@ export default class RemoteDeviceModel { this.#deviceManager.startDeviceDiscovery(info); } + authDevice(deviceId, callback) { + console.info('MusicPlayer[RemoteDeviceModel] authDevice ' + deviceId); + for (var i = 0; i < this.discoverList.length; i++) { + if (this.discoverList[i].deviceId === deviceId) { + console.info('MusicPlayer[RemoteDeviceModel] device founded, ignored'); + let extraInfo = { + "targetPkgName": 'com.ohos.distributedmusicplayer', + "appName": 'Music', + "appDescription": 'Music player application', + "business": '0' + }; + let authParam = { + "authType": 1, + "appIcon": '', + "appThumbnail": '', + "extraInfo": extraInfo + }; + console.info('MusicPlayer[RemoteDeviceModel] authenticateDevice ' + JSON.stringify(this.discoverList[i])); + let self = this; + this.#deviceManager.authenticateDevice(this.discoverList[i], authParam, (err, data) => { + if (err) { + console.info('MusicPlayer[RemoteDeviceModel] authenticateDevice failed, err=' + JSON.stringify(err)); + self.authCallback = null; + } else { + console.info('MusicPlayer[RemoteDeviceModel] authenticateDevice succeed, data=' + JSON.stringify(data)); + self.authCallback = callback; + } + }); + } + } + } + unregisterDeviceListCallback() { console.info('MusicPlayer[RemoteDeviceModel] stopDeviceDiscovery ' + SUBSCRIBE_ID); this.#deviceManager.stopDeviceDiscovery(SUBSCRIBE_ID); this.#deviceManager.off('deviceStateChange'); this.#deviceManager.off('deviceFound'); this.#deviceManager.off('discoverFail'); - this.#deviceManager.off('authResult'); this.#deviceManager.off('serviceDie'); this.deviceList = []; } -- Gitee From 5ff74aba465ef086031c436c4371ea6a5771c4a2 Mon Sep 17 00:00:00 2001 From: BlancWu Date: Fri, 17 Sep 2021 10:20:41 +0800 Subject: [PATCH 2/3] Fix layout width/height error. Signed-off-by: BlancWu --- .../entry/src/main/js/default/pages/index/index.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.css b/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.css index e613fd8832..e52d4fe108 100644 --- a/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.css +++ b/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.css @@ -14,6 +14,8 @@ */ .container { + width: 100%; + height: 100%; flex-direction: column; justify-content: space-between; align-items: center; @@ -59,6 +61,7 @@ } .timer { + width: 100%; flex-direction: row; justify-content: space-between; margin-bottom: 12px; -- Gitee From 12ce1ed9a627409d752d4bc129f58314336bc74d Mon Sep 17 00:00:00 2001 From: BlancWu Date: Fri, 17 Sep 2021 11:34:36 +0800 Subject: [PATCH 3/3] Adapt new featureAbility interface. Signed-off-by: BlancWu --- .../src/main/js/default/pages/index/index.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js b/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js index 399ad5b4a4..31fd2ffcfc 100644 --- a/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js +++ b/ability/JsDistributedMusicPlayer/entry/src/main/js/default/pages/index/index.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import featureAbility from '@ohos.ability.featureability'; +import featureAbility from '@ohos.ability.featureAbility'; import RemoteDeviceModel from '../../../model/RemoteDeviceModel.js'; import PlayerModel from '../../../model/PlayerModel.js'; import KvStoreModel from '../../../model/KvStoreModel.js'; @@ -209,7 +209,7 @@ export default { } }, onContinueAbilityClick() { - console.info('MusicPlayer[IndexPage] onContinueAbilityClick'); + console.info('MusicPlayer[IndexPage] onContinueAbilityClick begin'); let self = this; this.remoteDeviceModel.registerDeviceListCallback(() => { console.info('MusicPlayer[IndexPage] registerDeviceListCallback, callback entered'); @@ -235,6 +235,7 @@ export default { }); this.$element('continueAbilityDialog').show(); this.isDialogShowing = true; + console.info('MusicPlayer[IndexPage] onContinueAbilityClick end'); }, startAbilityContinuation(deviceId, deviceName) { this.$element('continueAbilityDialog').close(); @@ -261,13 +262,17 @@ export default { parameters: params }; var timerId = setTimeout(() => { - console.info('MusicPlayer[IndexPage] onMessageReceiveTimeout, terminateAbility'); - featureAbility.terminateAbility(); + console.info('MusicPlayer[IndexPage] onMessageReceiveTimeout, terminateSelf'); + featureAbility.terminateSelf((error) => { + console.info('MusicPlayer[IndexPage] terminateSelf finished, error=' + error); + }); }, 3000); this.kvStoreModel.setOnMessageReceivedListener(REMOTE_ABILITY_STARTED, () => { - console.info('MusicPlayer[IndexPage] OnMessageReceived, terminateAbility'); + console.info('MusicPlayer[IndexPage] OnMessageReceived, terminateSelf'); clearTimeout(timerId); - featureAbility.terminateAbility(); + featureAbility.terminateSelf((error) => { + console.info('MusicPlayer[IndexPage] terminateSelf finished, error=' + error); + }); }); featureAbility.startAbility({ want: wantValue -- Gitee