提交 328cc5a4 编写于 作者: C ccfriend 提交者: cheng

update docs

Signed-off-by: Ncheng <chengcheng14@huawei.com>
...@@ -48,9 +48,6 @@ ...@@ -48,9 +48,6 @@
- 分布式媒体会话 - 分布式媒体会话
- [分布式媒体会话概述](distributed-avsession-overview.md) - [分布式媒体会话概述](distributed-avsession-overview.md)
- [使用分布式媒体会话](using-distributed-avsession.md) - [使用分布式媒体会话](using-distributed-avsession.md)
- 音视频投播
- [音视频投播概述](avcastpicker-overview.md)
- [使用音视频投播](using-avcastpicker.md)
- 相机 - 相机
- [相机开发概述](camera-overview.md) - [相机开发概述](camera-overview.md)
- 相机开发指导 - 相机开发指导
......
# 音视频投播概述
OpenHarmony提供了统一的应用内音视频投播功能设计,通过提供投播组件和标准的接口,帮助开发者可以简单高效地实现将音视频资源投放到其他设备播放,即实现跨端投播。
同时,系统提供默认投播协议Cast+,可以有效提升投播体验。
使用系统提供的投播组件和接口,应用只需要设置对应的资源信息、监听投播中的相关状态,以及应用主动控制的行为(如:播放、暂停)。其他动作包括图标切换、设备的发现、连接、认证等,均由系统完成。
## 基本概述
- **媒体会话(AVSession)**
音视频管控服务,用于对系统中所有音视频行为进行统一的管理。
本地播放时,应用需要向媒体会话提供播放的媒体信息(如正在播放的歌曲、歌曲的播放状态等),并接收和响应播控中心发出的控制命令(如暂停、下一首等)。具体请参考[本地媒体会话](using-avsession-developer.md)
投播时,通过AVSession,应用可以投播能力的设置和查询,并创建投播控制器。
- **投播组件[AVCastPicker](../reference/arkui-ts/ohos-avcastpicker.md)**
系统级的投播组件,可嵌入应用界面的UI组件。当用户点击该组件后,系统将进行设备发现、连接、认证等流程,应用仅需要通过接口获取投播中相关的回调信息。
- **投播控制器[AVCastController](../reference/apis/js-apis-avsession.md#avcastcontroller10)**
在投播后,由应用发起的对远端播放控制的接口,包括播放、暂停、调节音量、设置播放模式、设置播放速度等能力。
- **后台长时任务**
应用实现后台播放,需申请后台长时任务,避免应用在投播后被系统后台清理或冻结。具体参考[长时任务开发指导](../task-management/continuous-task-dev-guide.md)
## 分布式投播交互过程
![](figures/cast-interaction-diagram.png)
1. 用户在应用界面上点击AVCastPicker组件,触发系统发现可用于投播的设备。用户在设备列表中选择对应设备后,系统连接对应设备。
2. 应用通过AVSession监听设备的连接情况,监听到设备已连接后,创建一个AVCastController用于发送控制命令(如播放、暂停、下一首等)。
3. 在本端(包括应用内和播控中心)控制播放时,控制命令将通过AVCastController发送,本端和远端基于Cast+的能力进行数据传输和信息同步,然后更新远端系统预置播放器的状态。
4. 用户同样可以在远端直接控制播放,会直接修改远端播放器的状态。
5. 当远端播放器状态变更后,会触发回调,将状态信息返回到本端。应用可以通过AVCastController监听到远端播放器的状态变化。
## 接入说明
### 基本原则
应用需要接入AVSession,才可以使用系统提供的统一投播能力,由系统进行设备发现和管理。系统不额外提供音视频设备发现的接口给应用进行选择和切换设备。
使用系统提供的统一投播组件,应用无需关注设备的发现连接过程,仅需关注设备在远端是否可用。当用户通过投播组件,选择了某个远端设备并连接成功,应用将通过回调获取到信息,然后可以创建一个AVCastController,用于控制远端设备的播放。
当进入到远端设备投播状态时,应用也可以对应用界面进行重新绘制,比如界面变更为一个遥控器,可控制远端播放。建议应用在进入远端投播时,停止本地的播放器,避免本端和远端设备同时播放的情况,提升用户体验。
### 音视频投播与分布式媒体会话的关联与差异
1. 分布式会话是基于分布式软总线的能力在双端设备之间进行会话信息的同步;投播能力基于Cast+的能力进行数据传输和信息同步,支持的设备类型更丰富。
2. 分布式会话投播音频,需要由用户先进行双端设备的连接,投播成功后,应用在本端设备的控制和本地播放类似;而投播能力支持在远端设备进行播放的展示,体验上会更有优势。
3. 分布式会话仅支持音频投播,不支持视频投播;投播能力后续会扩展,将支持视频投播。
\ No newline at end of file
# 使用音视频投播
通过本开发指导,完成一次音频跨设备投播。
## 接口说明
对于每个异步调用的API均提供了callback函数和Promise函数,以下示例均采用callback函数。详细的API接口说明,请参考[AVCastPicker组件参考](../reference/arkui-ts/ohos-avcastpicker.md)[AVCastController API参考文档](../reference/apis/js-apis-avsession.md#avcastcontroller10)
| 接口 | 说明 |
| -------- | -------- |
| getAVCastController(callback: AsyncCallback\<AVCastController\>): void | 获取远端投播时的控制接口。|
| on(type: 'outputDeviceChange', callback: (state: ConnectionState, device: OutputDeviceInfo) => void): void | 注册设备变化的回调,同时包含了设备的连接状态。|
| sendControlCommand(command: AVCastControlCommand, callback: AsyncCallback\<void\>): void | 投播会话的控制接口,用于进行投播中的各种播控指令 |
| prepare(item: AVQueueItem, callback: AsyncCallback\<void>): void | 准备播放,进行资源加载和缓冲,不会触发真正的播放 |
| start(item: AVQueueItem, callback: AsyncCallback\<void>): void | 开始播放媒体资源 |
| on(type: 'playbackStateChange', filter: Array\<keyof AVPlaybackState\> \| 'all', callback: (state: AVPlaybackState) => void) | 注册播放状态变化的回调 |
| on(type: 'mediaItemChange', callback: AsyncCallback\<AVQueueItem\>): void | 注册当前播放内容更新的回调,返回当前播放的内容的信息。|
>**说明:**
>
> AVCastController由系统获取并返回,在设备连接成功后获取,在设备断开后不能继续使用,否则会抛出异常。
## 开发步骤
1. 创建播放器,并创建AVSession。
通过AVSessionManager创建并激活媒体会话。
```ts
import AVSessionManager from '@ohos.multimedia.avsession'; //导入AVSession模块
// 创建session
async createSession() {
let session: AVSessionManager.AVSession = await AVSessionManager.createAVSession(this.context, 'SESSION_NAME', 'audio');
session.activate();
console.info(`session create done : sessionId : ${session.sessionId}`);
}
```
2. 在需要投播的播放界面创建投播组件AVCastPicker。
```ts
// 创建组件,并设置大小
build() {
Row() {
Column() {
AVCastPicker()
.width('40vp')
.height('40vp')
.border({ width: 1, color: Color.Red })
}
}
}
```
3. 设置AVSession的信息,注册AVSession的回调。用于感知投播连接。
```ts
async setListenerFromController() {
let session: AVSessionManager.AVSession = ALLREADY_CREATE_A_SESSION;
// 监听设备连接状态的变化
session.on("outputDeviceChange", (state, device) => {
if (state == AVCastState.STATE_CONNECTED) { // 设备连接成功
global.avcastcontroller = avsession.getAVCastController();
console.info('get a cast controller successfully');
console.info(`device connected ` + ${JSON.stringify(device)});
// 设置播放参数,开始播放
var playItem = {
itemId: 0,
description: {
mediaId: '12345',
mediaName: 'song1',
mediaType: 'AUDIO',
mediaUri: 'http://resource1_address',
mediaSize: 12345,
startPosition: 0,
duration: 1000,
artist: 'mysong',
albumTitle: 'song1_title',
albumCoverUri: "http://resource1_album_address",
lyricUri: "http://resource1_lyric_address",
iconUri: "http://resource1_icon_address",
appName: 'MyMusic'
}
};
// 准备播放,这个不会触发真正的播放,会进行加载和缓冲
global.avcastcontroller.prepare(playItem, () => {
console.info('prepare done');
});
// 启动播放
global.avcastcontroller.start(playItem, () => {
console.info('play done');
});
// 列表里的第一首歌曲投播的时候,本端的Player要停止
this.localplayer.stop();
// 本端投播后的应用界面由应用进行专辑图、歌手等信息的刷新
// 远端状态的回调,这个回调需要应用进行界面刷新,而不需要执行控制操作
// 回调包括播放状态,播放位置,播放速度,播放模式等
global.avcontroller.on('playbackStateChange', filter: 'all', (state) => {
console.info('playbackStateChange ' + state);
});
// 用于响应远端进行上一首、下一首
global.avcontroller.on('playNext', () => {
// 应用根据列表顺序,更新新的资源进行播放
var nextPlayItem = {
itemId: 2,
description: {
mediaId: '12345',
mediaName: 'song2',
mediaType: 'AUDIO',
mediaUri: 'http://resource2_address',
mediaSize: 12345,
startPosition: 0,
duration: 2000,
artist: 'mysong',
albumTitle: 'song2_title',
albumCoverUri: "http://resource2_album_address",
lyricUri: "http://resource2_lyric_address",
iconUri: "http://resource2_icon_address",
appName: 'MyMusic'
}
};
// 准备播放
global.avcastcontroller.prepare(nextPlayItem, () => {
console.info('prepare done');
});
// 启动播放
global.avcastcontroller.start(nextPlayItem, () => {
console.info('play done');
});
});
}
}
// 可以通过getOutputDevice接口主动查询连接的设备
session.getOutputDevice((device) => {
console.info(`current routing device` + ${JSON.stringify(device)});
});
}
```
4. 通过AVSession获取投播控制器AVCastController,用于控制应用内的播放。
```ts
async sendCommandToSessionByController() {
// 记录从avsession获取的远端控制器
// 下发播放命令
let avCommand: AVSessionManager.AVCastControlCommand = {command:'play'};
global.avcontroller.sendControlCommand(avCommand);
// 下发暂停命令
let avCommand: AVSessionManager.AVCastControlCommand = {command:'pause'};
global.avcontroller.sendControlCommand(avCommand);
// 播放、暂停等的操作,可以通过状态的回调接口获取到,然后进行本端界面的刷新
}
```
5. 申请投播长时任务,避免应用在投播进入后台时被系统冻结,导致无法持续投播。
```ts
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
import wantAgent from '@ohos.app.ability.wantAgent';
function startContinuousTask() {
let wantAgentInfo = {
// 点击通知后,将要执行的动作列表
wants: [
{
bundleName: "com.example.myapplication",
abilityName: "EntryAbility",
}
],
// 点击通知后,动作类型
operationType: wantAgent.OperationType.START_ABILITY,
// 使用者自定义的一个私有值
requestCode: 0,
// 点击通知后,动作执行属性
wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
};
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
try {
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
try {
backgroundTaskManager.startBackgroundRunning(mContext,
backgroundTaskManager.BackgroundMode.MULTI_DEVICE_CONNECTION, wantAgentObj).then(() => {
console.info("Operation succeeded");
}).catch((error) => {
console.error(`Operation failed. code is ${error.code} message is ${error.message}`);
});
} catch (error) {
console.error(`Operation failed. code is ${error.code} message is ${error.message}`);
}
});
} catch (error) {
console.error(`Operation getWantAgent failed. code is ${error.code} message is ${error.message}`);
}
}
```
6. 音频焦点的处理。请参考[多音频并发处理](audio-playback-concurrency.md)
在应用进入投播后,当前应用需要去注册焦点处理,以免被其他应用的焦点申请而影响。
**当前投播支持全局切换,后续如果规格变更,再同步调整方案说明。**
7. 结束投播。
当远端设备断开的时候,应用会收到事件,系统会自动断开连接。
应用也可以使用断开投播的接口,主动进行投播连接的断开。
```ts
async release() {
// 一般来说,应用退出时,而不希望继续投播,可以主动结束
await global.avsession.stopCasting();
}
```
...@@ -854,14 +854,12 @@ avSession.sendSystemControlCommand(avcommand, function (err) { ...@@ -854,14 +854,12 @@ avSession.sendSystemControlCommand(avcommand, function (err) {
}); });
``` ```
## avSession.startCastDeviceDiscovery ## avSession.startCastDeviceDiscovery<sup>10+</sup>
startCastDeviceDiscovery(callback: AsyncCallback<void>): void startCastDeviceDiscovery(callback: AsyncCallback\<void>): void
开始设备搜索发现。结果通过callback异步回调方式返回。 开始设备搜索发现。结果通过callback异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -872,12 +870,6 @@ startCastDeviceDiscovery(callback: AsyncCallback<void>): void ...@@ -872,12 +870,6 @@ startCastDeviceDiscovery(callback: AsyncCallback<void>): void
| -------- | ------------------------------------- | ---- | ------------------------------------- | | -------- | ------------------------------------- | ---- | ------------------------------------- |
| callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 | | callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:** **示例:**
...@@ -891,14 +883,12 @@ avSession.startCastDeviceDiscovery(function (err) { ...@@ -891,14 +883,12 @@ avSession.startCastDeviceDiscovery(function (err) {
}); });
``` ```
## avSession.startCastDeviceDiscovery ## avSession.startCastDeviceDiscovery<sup>10+</sup>
startCastDeviceDiscovery(filter: number, callback: AsyncCallback<void>): void startCastDeviceDiscovery(filter: number, callback: AsyncCallback\<void>): void
开始设备搜索发现。结果通过callback异步回调方式返回。 开始设备搜索发现。结果通过callback异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -910,12 +900,6 @@ startCastDeviceDiscovery(filter: number, callback: AsyncCallback<void>): void ...@@ -910,12 +900,6 @@ startCastDeviceDiscovery(filter: number, callback: AsyncCallback<void>): void
| filter | number | 是 | 进行设备发现的过滤条件,由ProtocolType的组合而成 | | filter | number | 是 | 进行设备发现的过滤条件,由ProtocolType的组合而成 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 | | callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:** **示例:**
...@@ -930,14 +914,12 @@ avSession.startCastDeviceDiscovery(filter, function (err) { ...@@ -930,14 +914,12 @@ avSession.startCastDeviceDiscovery(filter, function (err) {
}); });
``` ```
## avSession.startCastDeviceDiscovery ## avSession.startCastDeviceDiscovery<sup>10+</sup>
startCastDeviceDiscovery(filter?: number): Promise<void> startCastDeviceDiscovery(filter?: number): Promise\<void>
开始设备搜索发现。结果通过Promise异步回调方式返回。 开始设备搜索发现。结果通过Promise异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -953,13 +935,6 @@ startCastDeviceDiscovery(filter?: number): Promise<void> ...@@ -953,13 +935,6 @@ startCastDeviceDiscovery(filter?: number): Promise<void>
| -------------- | ----------------------------- | | -------------- | ----------------------------- |
| Promise\<void> | Promise对象。当开始设备搜索成功,无返回结果,否则返回错误对象。 | | Promise\<void> | Promise对象。当开始设备搜索成功,无返回结果,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:** **示例:**
```js ```js
...@@ -971,7 +946,7 @@ avSession.startCastDeviceDiscovery(filter).then(() => { ...@@ -971,7 +946,7 @@ avSession.startCastDeviceDiscovery(filter).then(() => {
}); });
``` ```
## avSession.on('deviceAvailable') ## avSession.on('deviceAvailable')<sup>10+</sup>
on(type: 'deviceAvailable', callback: (device: OutputDeviceInfo) => void): void on(type: 'deviceAvailable', callback: (device: OutputDeviceInfo) => void): void
...@@ -1003,7 +978,7 @@ avSession.on('deviceAvailable', (device) => { ...@@ -1003,7 +978,7 @@ avSession.on('deviceAvailable', (device) => {
}); });
``` ```
## avSession.off('deviceAvailable') ## avSession.off('deviceAvailable')<sup>10+</sup>
off(type: 'deviceAvailable', callback?: (device: OutputDeviceInfo) => void): void off(type: 'deviceAvailable', callback?: (device: OutputDeviceInfo) => void): void
...@@ -1032,14 +1007,12 @@ off(type: 'deviceAvailable', callback?: (device: OutputDeviceInfo) => void): voi ...@@ -1032,14 +1007,12 @@ off(type: 'deviceAvailable', callback?: (device: OutputDeviceInfo) => void): voi
avSession.off('deviceAvailable'); avSession.off('deviceAvailable');
``` ```
## avSession.stopCastDeviceDiscovery ## avSession.stopCastDeviceDiscovery<sup>10+</sup>
stopCastDeviceDiscovery(callback: AsyncCallback<void>): void stopCastDeviceDiscovery(callback: AsyncCallback\<void>): void
结束设备搜索发现。结果通过callback异步回调方式返回。 结束设备搜索发现。结果通过callback异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -1050,12 +1023,6 @@ stopCastDeviceDiscovery(callback: AsyncCallback<void>): void ...@@ -1050,12 +1023,6 @@ stopCastDeviceDiscovery(callback: AsyncCallback<void>): void
| -------- | ------------------------------------- | ---- | ------------------------------------- | | -------- | ------------------------------------- | ---- | ------------------------------------- |
| callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 | | callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:** **示例:**
...@@ -1069,14 +1036,12 @@ avSession.stopCastDeviceDiscovery(function (err) { ...@@ -1069,14 +1036,12 @@ avSession.stopCastDeviceDiscovery(function (err) {
}); });
``` ```
## avSession.stopCastDeviceDiscovery ## avSession.stopCastDeviceDiscovery<sup>10+</sup>
stopCastDeviceDiscovery(): Promise<void> stopCastDeviceDiscovery(): Promise\<void>
结束设备搜索发现。结果通过Promise异步回调方式返回。 结束设备搜索发现。结果通过Promise异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -1087,13 +1052,6 @@ stopCastDeviceDiscovery(): Promise<void> ...@@ -1087,13 +1052,6 @@ stopCastDeviceDiscovery(): Promise<void>
| -------------- | ----------------------------- | | -------------- | ----------------------------- |
| Promise\<void> | Promise对象。当停止搜索成功,无返回结果,否则返回错误对象。 | | Promise\<void> | Promise对象。当停止搜索成功,无返回结果,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:** **示例:**
```js ```js
...@@ -1104,9 +1062,9 @@ avSession.stopCastDeviceDiscovery().then(() => { ...@@ -1104,9 +1062,9 @@ avSession.stopCastDeviceDiscovery().then(() => {
}); });
``` ```
## avSession.startCasting ## avSession.startCasting<sup>10+</sup>
startCasting(session: SessionToken, device: OutputDeviceInfo, callback: AsyncCallback<void>): void startCasting(session: SessionToken, device: OutputDeviceInfo, callback: AsyncCallback\<void>): void
启动投播。结果通过callback异步回调方式返回。 启动投播。结果通过callback异步回调方式返回。
...@@ -1120,8 +1078,8 @@ startCasting(session: SessionToken, device: OutputDeviceInfo, callback: AsyncCal ...@@ -1120,8 +1078,8 @@ startCasting(session: SessionToken, device: OutputDeviceInfo, callback: AsyncCal
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------- | | -------- | ------------------------------------- | ---- | ------------------------------------- |
| session | [SessionToken](#sessiontoken) &#124; 'all' | 是 | 会话令牌。SessionToken表示单个token;字符串`'all'`指所有token。 | | session | [SessionToken](#sessiontoken) | 是 | 会话令牌。SessionToken表示单个token。 |
| outputDevice | [OutputDeviceInfo](#outputdeviceinfo10) | 是 | 设备相关信息 | | device | [OutputDeviceInfo](#outputdeviceinfo10) | 是 | 设备相关信息 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 | | callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:** **错误码:**
...@@ -1129,7 +1087,10 @@ startCasting(session: SessionToken, device: OutputDeviceInfo, callback: AsyncCal ...@@ -1129,7 +1087,10 @@ startCasting(session: SessionToken, device: OutputDeviceInfo, callback: AsyncCal
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 201 | No Permission: 无权限执行此操作 |
| 401 | Invalid Parameter: 入参错误,表示调用无效。 |
| 6600101 | Session service exception. | | 6600101 | Session service exception. |
| 6600108 | Device connecting failed. |
**示例:** **示例:**
...@@ -1151,9 +1112,9 @@ avSession.startCasting(myToken, castDevice, function (err) { ...@@ -1151,9 +1112,9 @@ avSession.startCasting(myToken, castDevice, function (err) {
}); });
``` ```
## avSession.startCasting ## avSession.startCasting<sup>10+</sup>
startCasting(session: SessionToken, device: OutputDeviceInfo): Promise<void> startCasting(session: SessionToken, device: OutputDeviceInfo): Promise\<void>
启动投播。结果通过Promise异步回调方式返回。 启动投播。结果通过Promise异步回调方式返回。
...@@ -1167,8 +1128,8 @@ startCasting(session: SessionToken, device: OutputDeviceInfo): Promise<void> ...@@ -1167,8 +1128,8 @@ startCasting(session: SessionToken, device: OutputDeviceInfo): Promise<void>
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------- | | -------- | ------------------------------------- | ---- | ------------------------------------- |
| session | [SessionToken](#sessiontoken) &#124; 'all' | 是 | 会话令牌。SessionToken表示单个token;字符串`'all'`指所有token。 | | session | [SessionToken](#sessiontoken) | 是 | 会话令牌。SessionToken表示单个token。 |
| outputDevice | [OutputDeviceInfo](#outputdeviceinfo10) | 是 | 设备相关信息 | | device | [OutputDeviceInfo](#outputdeviceinfo10) | 是 | 设备相关信息 |
**返回值:** **返回值:**
...@@ -1181,7 +1142,10 @@ startCasting(session: SessionToken, device: OutputDeviceInfo): Promise<void> ...@@ -1181,7 +1142,10 @@ startCasting(session: SessionToken, device: OutputDeviceInfo): Promise<void>
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 201 | No Permission: 无权限执行此操作 |
| 401 | Invalid Parameter: 入参错误,表示调用无效。 |
| 6600101 | Session service exception. | | 6600101 | Session service exception. |
| 6600108 | Device connecting failed. |
**示例:** **示例:**
...@@ -1201,14 +1165,12 @@ avSession.startCasting(myToken, castDevice).then(() => { ...@@ -1201,14 +1165,12 @@ avSession.startCasting(myToken, castDevice).then(() => {
}); });
``` ```
## avSession.stopCasting ## avSession.stopCasting<sup>10+</sup>
stopCasting(session: SessionToken, callback: AsyncCallback<void>): void stopCasting(session: SessionToken, callback: AsyncCallback\<void>): void
结束投播。结果通过callback异步回调方式返回。 结束投播。结果通过callback异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -1217,7 +1179,7 @@ stopCasting(session: SessionToken, callback: AsyncCallback<void>): void ...@@ -1217,7 +1179,7 @@ stopCasting(session: SessionToken, callback: AsyncCallback<void>): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------- | | -------- | ------------------------------------- | ---- | ------------------------------------- |
| session | [SessionToken](#sessiontoken) &#124; 'all' | 是 | 会话令牌。SessionToken表示单个token;字符串`'all'`指所有token。 | | session | [SessionToken](#sessiontoken) | 是 | 会话令牌。SessionToken表示单个token。 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 | | callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:** **错误码:**
...@@ -1225,7 +1187,7 @@ stopCasting(session: SessionToken, callback: AsyncCallback<void>): void ...@@ -1225,7 +1187,7 @@ stopCasting(session: SessionToken, callback: AsyncCallback<void>): void
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600101 | Session service exception. | | 6600109 | The remote connection is not established. |
**示例:** **示例:**
...@@ -1242,14 +1204,12 @@ avSession.stopCasting(myToken, castDevice, function (err) { ...@@ -1242,14 +1204,12 @@ avSession.stopCasting(myToken, castDevice, function (err) {
}); });
``` ```
## avSession.stopCasting ## avSession.stopCasting<sup>10+</sup>
stopCasting(session: SessionToken): Promise<void> stopCasting(session: SessionToken): Promise\<void>
结束投播。结果通过Promise异步回调方式返回。 结束投播。结果通过Promise异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -1258,7 +1218,7 @@ stopCasting(session: SessionToken): Promise<void> ...@@ -1258,7 +1218,7 @@ stopCasting(session: SessionToken): Promise<void>
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------- | | -------- | ------------------------------------- | ---- | ------------------------------------- |
| session | [SessionToken](#sessiontoken) &#124; 'all' | 是 | 会话令牌。SessionToken表示单个token;字符串`'all'`指所有token。 | | session | [SessionToken](#sessiontoken) | 是 | 会话令牌。SessionToken表示单个token。 |
**返回值:** **返回值:**
...@@ -1267,11 +1227,11 @@ stopCasting(session: SessionToken): Promise<void> ...@@ -1267,11 +1227,11 @@ stopCasting(session: SessionToken): Promise<void>
| Promise\<void> | Promise对象。当停止搜索成功,无返回结果,否则返回错误对象。 | | Promise\<void> | Promise对象。当停止搜索成功,无返回结果,否则返回错误对象。 |
**错误码:** **错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md) 错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600101 | Session service exception. | | 6600109 | The remote connection is not established. |
**示例:** **示例:**
...@@ -1287,14 +1247,12 @@ avSession.stopCasting(myToken).then(() => { ...@@ -1287,14 +1247,12 @@ avSession.stopCasting(myToken).then(() => {
``` ```
## avSession.setDiscoverable ## avSession.setDiscoverable<sup>10+</sup>
setDiscoverable(enable: boolean, callback: AsyncCallback<void>): void setDiscoverable(enable: boolean, callback: AsyncCallback\<void>): void
设置设备是否可被发现,用于投播接收端。结果通过callback异步回调方式返回。 设置设备是否可被发现,用于投播接收端。结果通过callback异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -1306,12 +1264,6 @@ setDiscoverable(enable: boolean, callback: AsyncCallback<void>): void ...@@ -1306,12 +1264,6 @@ setDiscoverable(enable: boolean, callback: AsyncCallback<void>): void
| enable | boolean | 是 | 是否允许本设备被发现. true: 允许被发现, false:不允许被发现 | | enable | boolean | 是 | 是否允许本设备被发现. true: 允许被发现, false:不允许被发现 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 | | callback | AsyncCallback\<void> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:** **示例:**
...@@ -1325,14 +1277,12 @@ avSession.setDiscoverable(true, function (err) { ...@@ -1325,14 +1277,12 @@ avSession.setDiscoverable(true, function (err) {
}); });
``` ```
## avSession.setDiscoverable ## avSession.setDiscoverable<sup>10+</sup>
setDiscoverable(enable: boolean): Promise<void> setDiscoverable(enable: boolean): Promise\<void>
设置设备是否可被发现,用于投播接收端。结果通过Promise异步回调方式返回。 设置设备是否可被发现,用于投播接收端。结果通过Promise异步回调方式返回。
**需要权限:** ohos.permission.MANAGE_MEDIA_RESOURCES,仅系统应用可用。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。 **系统接口:** 该接口为系统接口。
...@@ -1349,13 +1299,6 @@ setDiscoverable(enable: boolean): Promise<void> ...@@ -1349,13 +1299,6 @@ setDiscoverable(enable: boolean): Promise<void>
| -------------- | ----------------------------- | | -------------- | ----------------------------- |
| Promise\<void> | Promise对象。当停止搜索成功,无返回结果,否则返回错误对象。 | | Promise\<void> | Promise对象。当停止搜索成功,无返回结果,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
**示例:** **示例:**
```js ```js
...@@ -1377,6 +1320,7 @@ avSession.setDiscoverable(true).then(() => { ...@@ -1377,6 +1320,7 @@ avSession.setDiscoverable(true).then(() => {
| 名称 | 类型 | 可读 | 可写 | 说明 | | 名称 | 类型 | 可读 | 可写 | 说明 |
| :-------- | :----- | :--- | :--- | :---------------------------- | | :-------- | :----- | :--- | :--- | :---------------------------- |
| sessionId | string | 是 | 否 | AVSession对象唯一的会话标识。 | | sessionId | string | 是 | 否 | AVSession对象唯一的会话标识。 |
| sessionType<sup>10+</sup> | AVSessionType | 是 | 否 | AVSession会话类型。 |
**示例:** **示例:**
...@@ -2167,7 +2111,7 @@ session.getController(function (err, avcontroller) { ...@@ -2167,7 +2111,7 @@ session.getController(function (err, avcontroller) {
### getAVCastController<sup>10+</sup> ### getAVCastController<sup>10+</sup>
getAVCastController(callback: AsyncCallback<AVCastController>): void getAVCastController(callback: AsyncCallback\<AVCastController>): void
设备建立连接后,获取投播控制器。结果通过callback异步回调方式返回。 设备建立连接后,获取投播控制器。结果通过callback异步回调方式返回。
...@@ -2201,7 +2145,7 @@ session.getAVCastController().then((avcontroller) => { ...@@ -2201,7 +2145,7 @@ session.getAVCastController().then((avcontroller) => {
### getAVCastController<sup>10+</sup> ### getAVCastController<sup>10+</sup>
getAVCastController(): Promise<AVCastController>; getAVCastController(): Promise\<AVCastController>;
设备建立连接后,获取投播控制器。结果通过callback异步回调方式返回。 设备建立连接后,获取投播控制器。结果通过callback异步回调方式返回。
...@@ -2237,7 +2181,7 @@ session.getAVCastController(function (err, avcontroller) { ...@@ -2237,7 +2181,7 @@ session.getAVCastController(function (err, avcontroller) {
### stopCasting<sup>10+</sup> ### stopCasting<sup>10+</sup>
stopCasting(callback: AsyncCallback<void>): void stopCasting(callback: AsyncCallback\<void>): void
停止投播。 停止投播。
...@@ -2254,8 +2198,7 @@ stopCasting(callback: AsyncCallback<void>): void ...@@ -2254,8 +2198,7 @@ stopCasting(callback: AsyncCallback<void>): void
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600101 | Session service exception. | | 6600109 | The remote connection is not established. |
| 6600102 | The session does not exist. |
**示例:** **示例:**
...@@ -2272,7 +2215,7 @@ session.stopCasting(function (err) { ...@@ -2272,7 +2215,7 @@ session.stopCasting(function (err) {
### stopCasting<sup>10+</sup> ### stopCasting<sup>10+</sup>
stopCasting(): Promise<void>; stopCasting(): Promise\<void>;
停止投播。 停止投播。
...@@ -2289,8 +2232,7 @@ stopCasting(): Promise<void>; ...@@ -2289,8 +2232,7 @@ stopCasting(): Promise<void>;
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600101 | Session service exception. | | 6600109 | The remote connection is not established. |
| 6600102 | The session does not exist. |
**示例:** **示例:**
...@@ -2806,7 +2748,7 @@ session.on('handleKeyEvent', (event) => { ...@@ -2806,7 +2748,7 @@ session.on('handleKeyEvent', (event) => {
### on('outputDeviceChange')<sup>10+</sup> ### on('outputDeviceChange')<sup>10+</sup>
on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): void on(type: 'outputDeviceChange', callback: (state: ConnectionState, device: OutputDeviceInfo) => void): void
设置播放设备变化的监听事件。 设置播放设备变化的监听事件。
...@@ -2817,7 +2759,7 @@ on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): vo ...@@ -2817,7 +2759,7 @@ on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): vo
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | | -------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 事件回调类型,支持事件`'outputDeviceChange'`:当播放设备变化时,触发该事件。 | | type | string | 是 | 事件回调类型,支持事件`'outputDeviceChange'`:当播放设备变化时,触发该事件。 |
| callback | (device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | 是 | 回调函数。参数device是设备相关信息。 | | callback | (state: [ConnectionState](#connectionstate10), device: [OutputDeviceInfo](#outputdeviceinfo10)) => void | 是 | 回调函数,参数device是设备相关信息。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。 |
**错误码:** **错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md) 以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
...@@ -2830,8 +2772,8 @@ on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): vo ...@@ -2830,8 +2772,8 @@ on(type: 'outputDeviceChange', callback: (device: OutputDeviceInfo) => void): vo
**示例:** **示例:**
```js ```js
session.on('outputDeviceChange', (device) => { session.on('outputDeviceChange', (state, device) => {
console.info(`on outputDeviceChange device isRemote : ${device.isRemote}`); console.info(`on outputDeviceChange device : ${device}`);
}); });
``` ```
...@@ -3159,72 +3101,6 @@ await avSession.createController(session.sessionId).then((controller) => { ...@@ -3159,72 +3101,6 @@ await avSession.createController(session.sessionId).then((controller) => {
}); });
``` ```
### getAVPlaybackState<sup>10+</sup>
getAVPlaybackState(): Promise\<AVPlaybackState>
获取当前会话播放状态相关信息。结果通过Promise异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.Core
**返回值:**
| 类型 | 说明 |
| --------------------------------------------- | --------------------------- |
| Promise<[AVPlaybackState](#avplaybackstate10)\> | Promise对象。返回播放状态对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
| 6600102 | The session does not exist. |
| 6600103 | The session controller does not exist. |
**示例:**
```js
controller.getAVPlaybackState().then((playbackState) => {
console.info(`GetAVPlaybackState : SUCCESS : state : ${playbackState.state}`);
}).catch((err) => {
console.info(`GetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
### getAVPlaybackState<sup>10+</sup>
getAVPlaybackState(callback: AsyncCallback\<AVPlaybackState>): void
获取当前播放状态相关信息。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------------------------------- | ---- | ---------------------------- |
| callback | AsyncCallback<[AVPlaybackState](#avplaybackstate10)\> | 是 | 回调函数,返回当前播放状态对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
| 6600102 | The session does not exist. |
| 6600103 | The session controller does not exist. |
**示例:**
```js
controller.getAVPlaybackState(function (err, playbackState) {
if (err) {
console.info(`GetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`);
} else {
console.info(`GetAVPlaybackState : SUCCESS : state : ${playbackState.state}`);
}
});
```
### getAVQueueItems<sup>10+</sup> ### getAVQueueItems<sup>10+</sup>
getAVQueueItems(): Promise\<Array\<AVQueueItem>> getAVQueueItems(): Promise\<Array\<AVQueueItem>>
...@@ -4847,6 +4723,7 @@ off(type: 'outputDeviceChange', callback?: (state: ConnectionState, device: Outp ...@@ -4847,6 +4723,7 @@ off(type: 'outputDeviceChange', callback?: (state: ConnectionState, device: Outp
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------- | | -------- | ---------------- |
| 6600101 | Session service exception. | | 6600101 | Session service exception. |
| 6600103 | The session controller does not exist. |
**示例:** **示例:**
...@@ -4858,10 +4735,9 @@ controller.off('outputDeviceChange'); ...@@ -4858,10 +4735,9 @@ controller.off('outputDeviceChange');
在投播建立后,调用[avSession.getAVCastController](#getavcastcontroller10)后,返回会话控制器实例。控制器可查看会话ID,并可完成对会话发送命令及事件,获取会话元数据,播放状态信息等操作。 在投播建立后,调用[avSession.getAVCastController](#getavcastcontroller10)后,返回会话控制器实例。控制器可查看会话ID,并可完成对会话发送命令及事件,获取会话元数据,播放状态信息等操作。
### getAVPlaybackState<sup>10+</sup> ### getAVPlaybackState<sup>10+</sup>
getAVPlaybackState(callback: AsyncCallback<AVPlaybackState>): void getAVPlaybackState(callback: AsyncCallback\<AVPlaybackState>): void
设备建立连接后,获取投播控制器。结果通过callback异步回调方式返回。 设备建立连接后,获取投播控制器。结果通过callback异步回调方式返回。
...@@ -4878,24 +4754,23 @@ getAVPlaybackState(callback: AsyncCallback<AVPlaybackState>): void ...@@ -4878,24 +4754,23 @@ getAVPlaybackState(callback: AsyncCallback<AVPlaybackState>): void
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600102 | The session does not exist. | | 6600101 | Session service exception. |
| 6600110 | The remote connection is not established. |
**示例:** **示例:**
```js ```js
let controller; controller.getAVPlaybackState(function (err, state) {
session.getAVCastController().then((avcontroller) => { if (err) {
controller = avcontroller; console.info(`getAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`);
console.info(`getAVCastController : SUCCESS : sessionid : ${controller.sessionId}`); } else {
}).catch((err) => { console.info(`getAVPlaybackState : SUCCESS`);
console.info(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`); }
}); });
``` ```
### getAVPlaybackState<sup>10+</sup> ### getAVPlaybackState<sup>10+</sup>
getAVPlaybackState(): Promise<getAVPlaybackState>; getAVPlaybackState(): Promise\<AVPlaybackState>;
获取当前的远端播放状态。结果通过callback异步回调方式返回。 获取当前的远端播放状态。结果通过callback异步回调方式返回。
...@@ -4912,26 +4787,79 @@ getAVPlaybackState(): Promise<getAVPlaybackState>; ...@@ -4912,26 +4787,79 @@ getAVPlaybackState(): Promise<getAVPlaybackState>;
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600102 | The session does not exist. | | 6600101 | Session service exception. |
| 6600110 | The remote connection is not established. |
**示例:** **示例:**
```js ```js
let controller; controller.getAVPlaybackState().then((state) => {
session.getAVPlaybackState(function (err, avcontroller) { console.info(`getAVPlaybackState : SUCCESS :`);
}).catch((err) => {
console.info(`getAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`);
});
```
### setDisplaySurface<sup>10+</sup>
setDisplaySurface(surfaceId: string): Promise\<void>
设置播放的surfaceId,在投播sink端使用。结果通过Promise异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。
**返回值:**
| 类型 | 说明 |
| --------------------------------------------- | --------------------------- |
| Promise\<void> | Promise对象。返回设置结果。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600109 | The remote connection is not established. |
### setDisplaySurface<sup>10+</sup>
setDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void
设置播放的surfaceId,在投播sink端使用。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**系统接口:** 该接口为系统接口。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------------------------------- | ---- | ---------------------------- |
| callback | AsyncCallback\<void> | 是 | 回调函数,返回当前设置结果。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600109 | The remote connection is not established. |
**示例:**
```js
controller.getAVPlaybackState(function (err, playbackState) {
if (err) { if (err) {
console.info(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`); console.info(`GetAVPlaybackState BusinessError: code: ${err.code}, message: ${err.message}`);
} else { } else {
controller = avcontroller; console.info(`GetAVPlaybackState : SUCCESS : state : ${playbackState.state}`);
console.info(`getAVCastController : SUCCESS : sessionid : ${controller.sessionId}`);
} }
}); });
``` ```
### on('playbackStateChange')<sup>10+</sup> ### on('playbackStateChange')<sup>10+</sup>
on(type: 'playbackStateChange', filter: Array\<keyof AVPlaybackState> | 'all', callback: (state: AVPlaybackState) => void) on(type: 'playbackStateChange', filter: Array\<keyof AVPlaybackState> | 'all', callback: (state: AVPlaybackState) => void): void
设置播放状态变化的监听事件。 设置播放状态变化的监听事件。
...@@ -4951,7 +4879,6 @@ on(type: 'playbackStateChange', filter: Array\<keyof AVPlaybackState> | 'all', c ...@@ -4951,7 +4879,6 @@ on(type: 'playbackStateChange', filter: Array\<keyof AVPlaybackState> | 'all', c
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ------------------------------ | | -------- | ------------------------------ |
| 6600101 | Session service exception. | | 6600101 | Session service exception. |
| 6600103 | The session controller does not exist. |
**示例:** **示例:**
...@@ -4968,7 +4895,7 @@ controller.on('playbackStateChange', playbackFilter, (playbackState) => { ...@@ -4968,7 +4895,7 @@ controller.on('playbackStateChange', playbackFilter, (playbackState) => {
### off('playbackStateChange')<sup>10+</sup> ### off('playbackStateChange')<sup>10+</sup>
off(type: 'playbackStateChange', callback?: (state: AVPlaybackState) => void) off(type: 'playbackStateChange', callback?: (state: AVPlaybackState) => void): void
媒体控制器取消监听播放状态变化的事件。 媒体控制器取消监听播放状态变化的事件。
...@@ -4996,7 +4923,7 @@ controller.off('playbackStateChange'); ...@@ -4996,7 +4923,7 @@ controller.off('playbackStateChange');
### on('mediaItemChange')<sup>10+</sup> ### on('mediaItemChange')<sup>10+</sup>
on(type: 'mediaItemChange', callback: Callback<AVQueueItem>) on(type: 'mediaItemChange', callback: Callback\<AVQueueItem>): void
设置投播当前播放媒体内容的监听事件。 设置投播当前播放媒体内容的监听事件。
...@@ -5026,7 +4953,7 @@ controller.on('mediaItemChange', (item) => { ...@@ -5026,7 +4953,7 @@ controller.on('mediaItemChange', (item) => {
### off('mediaItemChange')<sup>10+</sup> ### off('mediaItemChange')<sup>10+</sup>
off(type: 'mediaItemChange') off(type: 'mediaItemChange'): void
取消设置投播当前播放媒体内容的监听事件。 取消设置投播当前播放媒体内容的监听事件。
...@@ -5053,7 +4980,7 @@ controller.off('mediaItemChange'); ...@@ -5053,7 +4980,7 @@ controller.off('mediaItemChange');
### on('playNext')<sup>10+</sup> ### on('playNext')<sup>10+</sup>
on(type: 'playNext', callback: Callback<void>) on(type: 'playNext', callback: Callback\<void>): void
设置播放下一首资源的监听事件。 设置播放下一首资源的监听事件。
...@@ -5083,7 +5010,7 @@ controller.on('playNext', () => { ...@@ -5083,7 +5010,7 @@ controller.on('playNext', () => {
### off('playNext')<sup>10+</sup> ### off('playNext')<sup>10+</sup>
off(type: 'playNext') off(type: 'playNext'): void
取消设置播放下一首资源的监听事件。 取消设置播放下一首资源的监听事件。
...@@ -5110,7 +5037,7 @@ controller.off('playNext'); ...@@ -5110,7 +5037,7 @@ controller.off('playNext');
### on('playPrevious')<sup>10+</sup> ### on('playPrevious')<sup>10+</sup>
on(type: 'playPrevious', callback: Callback<void>) on(type: 'playPrevious', callback: Callback\<void>): void
设置播放上一首资源的监听事件。 设置播放上一首资源的监听事件。
...@@ -5167,7 +5094,7 @@ controller.on('playPrevious', () => { ...@@ -5167,7 +5094,7 @@ controller.on('playPrevious', () => {
### off('playPrevious')<sup>10+</sup> ### off('playPrevious')<sup>10+</sup>
off(type: 'playPrevious') off(type: 'playPrevious'): void
取消设置播放下一首资源的监听事件。 取消设置播放下一首资源的监听事件。
...@@ -5194,7 +5121,7 @@ controller.off('playPrevious'); ...@@ -5194,7 +5121,7 @@ controller.off('playPrevious');
### on('seekDone')<sup>10+</sup> ### on('seekDone')<sup>10+</sup>
on(type: 'seekDone', callback: Callback<number>) on(type: 'seekDone', callback: Callback\<number>): void
设置seek结束的监听事件。 设置seek结束的监听事件。
...@@ -5224,7 +5151,7 @@ controller.on('seekDone', (pos) => { ...@@ -5224,7 +5151,7 @@ controller.on('seekDone', (pos) => {
### off('seekDone')<sup>10+</sup> ### off('seekDone')<sup>10+</sup>
off(type: 'seekDone') off(type: 'seekDone'): void
取消设置seek结束的监听事件。 取消设置seek结束的监听事件。
...@@ -5255,7 +5182,7 @@ on(type: 'error', callback: ErrorCallback): void ...@@ -5255,7 +5182,7 @@ on(type: 'error', callback: ErrorCallback): void
监听远端播放器的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。 监听远端播放器的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。
**系统能力:** SystemCapability.Multimedia.Media.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:** **参数:**
...@@ -5264,7 +5191,7 @@ on(type: 'error', callback: ErrorCallback): void ...@@ -5264,7 +5191,7 @@ on(type: 'error', callback: ErrorCallback): void
| type | string | 是 | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 | | type | string | 是 | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 |
| callback | function | 是 | 错误事件回调方法:远端播放过程中发生的错误,会提供错误码ID和错误信息。 | | callback | function | 是 | 错误事件回调方法:远端播放过程中发生的错误,会提供错误码ID和错误信息。 |
回调的**错误分类**<a name = error_info></a>可以分为以下几种: 以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-media.md)
| 错误码ID | 错误信息 | 说明 | | 错误码ID | 错误信息 | 说明 |
| -------- | --------------------- | ------------------------------------------------------------ | | -------- | --------------------- | ------------------------------------------------------------ |
...@@ -5292,7 +5219,7 @@ off(type: 'error'): void ...@@ -5292,7 +5219,7 @@ off(type: 'error'): void
取消监听播放的错误事件。 取消监听播放的错误事件。
**系统能力:** SystemCapability.Multimedia.Media.AVCast **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:** **参数:**
...@@ -5306,7 +5233,6 @@ off(type: 'error'): void ...@@ -5306,7 +5233,6 @@ off(type: 'error'): void
controller.off('error') controller.off('error')
``` ```
### sendControlCommand<sup>10+</sup> ### sendControlCommand<sup>10+</sup>
sendControlCommand(command: AVCastControlCommand): Promise\<void> sendControlCommand(command: AVCastControlCommand): Promise\<void>
...@@ -5334,11 +5260,8 @@ sendControlCommand(command: AVCastControlCommand): Promise\<void> ...@@ -5334,11 +5260,8 @@ sendControlCommand(command: AVCastControlCommand): Promise\<void>
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600101 | Session service exception. | | 6600101 | Session service exception. |
| 6600102 | The session does not exist. |
| 6600103 | The session controller does not exist. |
| 6600105 | Invalid session command. | | 6600105 | Invalid session command. |
| 6600106 | The session is not activated. | | 6600109 | The remote connection is not established. |
| 6600107 | Too many commands or events. |
**示例:** **示例:**
...@@ -5379,12 +5302,9 @@ sendControlCommand(command: AVCastControlCommand, callback: AsyncCallback\<void> ...@@ -5379,12 +5302,9 @@ sendControlCommand(command: AVCastControlCommand, callback: AsyncCallback\<void>
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ------------------------------- | | -------- | ------------------------------- |
| 6600101 | Session service exception. | | 6600101 | Session service exception. |
| 6600102 | The session does not exist. | | 6600105 | Invalid session command. |
| 6600103 | The session controller does not exist. | | 6600109 | The remote connection is not established. |
| 6600105 | Invalid session command. |
| 6600106 | The session is not activated. |
| 6600107 | Too many commands or events. |
**示例:** **示例:**
...@@ -5408,7 +5328,7 @@ controller.sendControlCommand(avCommand, function (err) { ...@@ -5408,7 +5328,7 @@ controller.sendControlCommand(avCommand, function (err) {
### prepare<sup>10+</sup> ### prepare<sup>10+</sup>
prepare(item: AVQueueItem, callback: AsyncCallback<void>): void prepare(item: AVQueueItem, callback: AsyncCallback\<void>): void
启动播放某个媒体资源。结果通过callback异步回调方式返回。 启动播放某个媒体资源。结果通过callback异步回调方式返回。
...@@ -5463,7 +5383,7 @@ controller.start(playItem, () => { ...@@ -5463,7 +5383,7 @@ controller.start(playItem, () => {
### prepare<sup>10+</sup> ### prepare<sup>10+</sup>
prepare(item: AVQueueItem): Promise<void> prepare(item: AVQueueItem): Promise\<void>
启动播放某个媒体资源。结果通过Promise异步回调方式返回。 启动播放某个媒体资源。结果通过Promise异步回调方式返回。
...@@ -5526,7 +5446,7 @@ controller.start(playItem).then(() => { ...@@ -5526,7 +5446,7 @@ controller.start(playItem).then(() => {
### start<sup>10+</sup> ### start<sup>10+</sup>
start(item: AVQueueItem, callback: AsyncCallback<void>): void start(item: AVQueueItem, callback: AsyncCallback\<void>): void
启动播放某个媒体资源。结果通过callback异步回调方式返回。 启动播放某个媒体资源。结果通过callback异步回调方式返回。
...@@ -5581,7 +5501,7 @@ controller.start(playItem, () => { ...@@ -5581,7 +5501,7 @@ controller.start(playItem, () => {
### start<sup>10+</sup> ### start<sup>10+</sup>
start(item: AVQueueItem): Promise<void> start(item: AVQueueItem): Promise\<void>
启动播放某个媒体资源。结果通过Promise异步回调方式返回。 启动播放某个媒体资源。结果通过Promise异步回调方式返回。
...@@ -5644,7 +5564,7 @@ controller.start(playItem).then(() => { ...@@ -5644,7 +5564,7 @@ controller.start(playItem).then(() => {
### stopCasting<sup>10+</sup> ### stopCasting<sup>10+</sup>
stopCasting(callback: AsyncCallback<void>): void stopCasting(callback: AsyncCallback\<void>): void
结束投播。结果通过callback异步回调方式返回。 结束投播。结果通过callback异步回调方式返回。
...@@ -5661,7 +5581,7 @@ stopCasting(callback: AsyncCallback<void>): void ...@@ -5661,7 +5581,7 @@ stopCasting(callback: AsyncCallback<void>): void
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600101 | Session service exception. | | 6600109 | The remote connection is not established. |
**示例:** **示例:**
...@@ -5677,7 +5597,7 @@ avSession.stopCasting(function (err) { ...@@ -5677,7 +5597,7 @@ avSession.stopCasting(function (err) {
### stopCasting<sup>10+</sup> ### stopCasting<sup>10+</sup>
stopCasting(): Promise<void> stopCasting(): Promise\<void>
结束投播。结果通过Promise异步回调方式返回。 结束投播。结果通过Promise异步回调方式返回。
...@@ -5694,7 +5614,7 @@ stopCasting(): Promise<void> ...@@ -5694,7 +5614,7 @@ stopCasting(): Promise<void>
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| -------- | ---------------------------------------- | | -------- | ---------------------------------------- |
| 6600101 | Session service exception. | | 6600109 | The remote connection is not established. |
**示例:** **示例:**
...@@ -5706,6 +5626,49 @@ avSession.stopCasting().then(() => { ...@@ -5706,6 +5626,49 @@ avSession.stopCasting().then(() => {
}); });
``` ```
### getCurrentItem<sup>10+</sup>
getCurrentItem(callback: AsyncCallback\<AVQueueItem>): void
获取当前投播的资源信息。结果通过callback异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------- |
| callback | AsyncCallback\<[AVQueueItem](#avqueueitem10)> | 是 | 回调函数。当命令发送成功,err为undefined,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
### getCurrentItem<sup>10+</sup>
getCurrentItem(): Promise\<AVQueueItem>
结束投播。结果通过Promise异步回调方式返回。
**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
**返回值:**
| 类型 | 说明 |
| -------------- | ----------------------------- |
| Promise\<[AVQueueItem](#avqueueitem10)> | Promise对象,返回当前的播放资源,否则返回错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[媒体会话管理错误码](../errorcodes/errorcode-avsession.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------------------- |
| 6600101 | Session service exception. |
## SessionToken ## SessionToken
...@@ -5893,6 +5856,7 @@ avSession.stopCasting().then(() => { ...@@ -5893,6 +5856,7 @@ avSession.stopCasting().then(() => {
| loopMode | [LoopMode](#loopmode10) | 否 | 循环模式 | | loopMode | [LoopMode](#loopmode10) | 否 | 循环模式 |
| isFavorite | boolean | 否 | 是否收藏 | | isFavorite | boolean | 否 | 是否收藏 |
| activeItemId<sup>10+</sup> | number | 否 | 正在播放的媒体Id | | activeItemId<sup>10+</sup> | number | 否 | 正在播放的媒体Id |
| volume<sup>10+</sup> | number | 否 | 正在播放的媒体音量 |
| extras<sup>10+</sup> | {[key: string]: Object} | 否 | 自定义媒体数据 | | extras<sup>10+</sup> | {[key: string]: Object} | 否 | 自定义媒体数据 |
## PlaybackPosition<sup>10+</sup> ## PlaybackPosition<sup>10+</sup>
...@@ -5910,7 +5874,7 @@ avSession.stopCasting().then(() => { ...@@ -5910,7 +5874,7 @@ avSession.stopCasting().then(() => {
播放设备的类别枚举。 播放设备的类别枚举。
**系统能力:** SystemCapability.Multimedia.AVSession.Core **系统能力:** SystemCapability.Multimedia.AVSession.AVCast
| 名称 | 值 | 说明 | | 名称 | 值 | 说明 |
| --------------------------- | ---- | ----------- | | --------------------------- | ---- | ----------- |
...@@ -5926,8 +5890,8 @@ avSession.stopCasting().then(() => { ...@@ -5926,8 +5890,8 @@ avSession.stopCasting().then(() => {
| 名称 | 值 | 说明 | | 名称 | 值 | 说明 |
| --------------------------- | ---- | ----------- | | --------------------------- | ---- | ----------- |
| STATE_CONNECTING | 0 | 设备连接中 | | STATE_CONNECTING | 0 | 设备连接中 |
| STATE_CONNECTED | 1 | 设备连接成功 | | STATE_CONNECTED | 6 | 设备连接成功 |
| STATE_DISCONNECTED | 6 | 设备断开连接 | | STATE_DISCONNECTED | 5 | 设备断开连接 |
## ProtocolType<sup>10+</sup> ## ProtocolType<sup>10+</sup>
...@@ -5952,10 +5916,9 @@ avSession.stopCasting().then(() => { ...@@ -5952,10 +5916,9 @@ avSession.stopCasting().then(() => {
| 名称 | 值 | 说明 | | 名称 | 值 | 说明 |
| --------------------------- | ---- | ----------- | | --------------------------- | ---- | ----------- |
| DEVICE_TYPE_LOCAL | 0 | 本地播放类型 | | DEVICE_TYPE_LOCAL | 0 | 本地播放类型 |
| DEVICE_TYPE_TV | 2 | 电视 |
| DEVICE_TYPE_SMART_SPEAKER | 3 | 音箱设备 |
| DEVICE_TYPE_BLUETOOTH | 10 | 蓝牙设备 | | DEVICE_TYPE_BLUETOOTH | 10 | 蓝牙设备 |
| DEVICE_TYPE_TV | 2 | 电视 <br> **系统能力:** SystemCapability.Multimedia.AVSession.AVCast |
| DEVICE_TYPE_SMART_SPEAKER | 3 | 音箱设备 <br> **系统能力:** SystemCapability.Multimedia.AVSession.AVCast |
## DeviceInfo<sup>10+</sup> ## DeviceInfo<sup>10+</sup>
...@@ -5969,8 +5932,8 @@ avSession.stopCasting().then(() => { ...@@ -5969,8 +5932,8 @@ avSession.stopCasting().then(() => {
| deviceId | string | 是 | 播放设备的ID。 | | deviceId | string | 是 | 播放设备的ID。 |
| deviceName | string | 是 | 播放设备的名称。 | | deviceName | string | 是 | 播放设备的名称。 |
| deviceType | DeviceType | 是 | 播放设备的类型。 | | deviceType | DeviceType | 是 | 播放设备的类型。 |
| ipAddress | string | 否 | 播放设备的ip地址。 | | ipAddress | string | 否 | 播放设备的ip地址。<br/>此接口为系统接口。<br> **系统能力:** SystemCapability.Multimedia.AVSession.AVCast |
| providerId | number | 否 | 播放设备提供商。 | | providerId | number | 否 | 播放设备提供商。<br/>此接口为系统接口。<br> **系统能力:** SystemCapability.Multimedia.AVSession.AVCast |
## OutputDeviceInfo<sup>10+</sup> ## OutputDeviceInfo<sup>10+</sup>
......
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
- [OffscreenCanvasRenderingContext2D对象](ts-offscreencanvasrenderingcontext2d.md) - [OffscreenCanvasRenderingContext2D对象](ts-offscreencanvasrenderingcontext2d.md)
- [Path2D对象](ts-components-canvas-path2d.md) - [Path2D对象](ts-components-canvas-path2d.md)
- 高级组件 - 高级组件
- [@ohos.avcastpicker (投播组件)](ohos-avcastpicker.md) - [@ohos.multimedia.avcastpicker (投播组件)](ohos-multimedia-avcastpicker.md)
- 动画 - 动画
- [属性动画](ts-animatorproperty.md) - [属性动画](ts-animatorproperty.md)
- [显式动画](ts-explicit-animation.md) - [显式动画](ts-explicit-animation.md)
......
...@@ -33,7 +33,7 @@ AVCastPicker() ...@@ -33,7 +33,7 @@ AVCastPicker()
## 示例 ## 示例
投播功能的示例说明请参考[音视频投播](../../media/avcastpicker-overview.md) 投播功能的示例说明参考如下
```ts ```ts
import AVCastPicker from '@ohos.multimedia.avCastPicker' import AVCastPicker from '@ohos.multimedia.avCastPicker'
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册