• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Class (AVCastPickerHelper)
2<!--Kit: AVSession Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @ccfriend; @liao_qian-->
5<!--Designer: @ccfriend-->
6<!--Tester: @chenmingxi1_huawei-->
7<!--Adviser: @zengyawen-->
8
9> **说明:**
10>
11> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12> - 本Class首批接口从API version 14开始支持。
13
14投播半模态对象,可拉起半模态窗口,选择投播设备。在使用前,需要创建AVCastPickerHelper实例。
15
16## 导入模块
17
18```ts
19import { avSession } from '@kit.AVSessionKit';
20```
21
22## constructor<sup>14+</sup>
23
24constructor(context: Context)
25
26创建AVCastPickerHelper对象,获取context参考[getHostContext](../apis-arkui/arkts-apis-uicontext-uicontext.md#gethostcontext12)。
27
28**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
29
30**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
31
32**参数:**
33
34| 参数名    | 类型                                                        | 必填 | 说明                                                         |
35| --------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ |
36| context  | Context | 是   | 应用上下文(仅支持[UIAbilityContext](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md))。 |
37
38**错误码:**
39
40以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
41
42| 错误码ID | 错误信息 |
43| -------- | ---------------------------------------- |
44| 401 |  parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
45| 6600101  | Session service exception. |
46
47**示例:**
48
49```ts
50import { common } from '@kit.AbilityKit';
51import { avSession } from '@kit.AVSessionKit';
52@Entry
53@Component
54struct Index {
55  @State message: string = 'hello world';
56
57  build() {
58    Row() {
59      Column() {
60        Text(this.message)
61          .fontSize(40)
62          .fontWeight(FontWeight.Bold)
63          .onClick(()=>{
64            let context = this.getUIContext().getHostContext() as Context;
65            let avCastPicker = new avSession.AVCastPickerHelper(context);
66          })
67      }
68      .width('100%')
69    }
70    .height('100%')
71  }
72}
73```
74
75## select<sup>14+</sup>
76
77select(options?: AVCastPickerOptions): Promise\<void>
78
79通过选择模式拉起AVCastPicker界面,用户可以选择投播设备。接口采用Promise异步返回形式,传入可选参数AVCastPickerOptions对象,无返回值。
80
81**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
82
83**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
84
85**参数:**
86
87| 参数名    | 类型                                                        | 必填 | 说明                                                         |
88| --------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ |
89| options  | [AVCastPickerOptions](arkts-apis-avsession-i.md#avcastpickeroptions14) | 否   | AVCastPicker选择选项。无此参数时,以AVCastPickerOptions默认值拉起。 |
90
91**返回值:**
92
93| 类型           | 说明                          |
94| -------------- | ----------------------------- |
95| Promise\<void> | Promise对象。当命令发送成功,无返回结果,否则返回错误对象。 |
96
97**错误码:**
98
99以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
100
101| 错误码ID | 错误信息 |
102| -------- | ---------------------------------------- |
103| 401 |  parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
104
105**示例:**
106
107```ts
108import { common } from '@kit.AbilityKit';
109import { BusinessError } from '@kit.BasicServicesKit';
110import { avSession } from '@kit.AVSessionKit';
111
112async function avCastPicker(context: common.Context) {
113  let avCastPickerOptions : avSession.AVCastPickerOptions = {
114    sessionType : 'video',
115  }
116  let avCastPicker = new avSession.AVCastPickerHelper(context);
117  avCastPicker.select(avCastPickerOptions).then(() => {
118    console.info('select successfully');
119  }).catch((err: BusinessError) => {
120    console.error(`AVCastPicker.select failed with err: ${err.code}, ${err.message}`);
121  });
122}
123```
124
125## on('pickerStateChange')<sup>14+</sup>
126
127on(type: 'pickerStateChange', callback: Callback<AVCastPickerState\>) : void
128
129设置半模态窗口变化的监听事件。
130
131每个指令支持注册多个回调,如果需要只执行最新监听,需要先注销旧的监听,否则新旧监听都会触发回调。
132
133**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
134
135**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
136
137**参数:**
138
139| 参数名   | 类型       | 必填 | 说明      |
140| --------| -----------|-----|------------|
141| type     | string    | 是   | 事件回调类型,支持事件`'pickerStateChange'`:当半模态窗口变化时,触发该事件。 |
142| callback | Callback\<[AVCastPickerState](js-apis-avCastPickerParam.md#avcastpickerstate11)>       | 是   | 回调函数,参数state是变化后的半模态窗口状态。|
143
144**错误码:**
145
146以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
147
148| 错误码ID | 错误信息 |
149| -------- | ---------------------------------------- |
150| 401 |  parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
151| 6600101  | Session service exception. |
152
153**示例:**
154
155```ts
156import { common } from '@kit.AbilityKit';
157import { AVCastPickerState } from '@kit.AVSessionKit';
158import { avSession } from '@kit.AVSessionKit';
159
160async function onPickerStateChange(context: common.Context) {
161  let avCastPicker = new avSession.AVCastPickerHelper(context);
162  avCastPicker.on('pickerStateChange', (state: AVCastPickerState) => {
163    console.info(`picker state change : ${state}`);
164  });
165}
166```
167
168## off('pickerStateChange')<sup>14+</sup>
169
170off(type: 'pickerStateChange', callback?: Callback<AVCastPickerState\>) : void
171
172取消半模态窗口变化事件监听。指定callback,可取消对应监听;未指定callback,取消所有事件监听。
173
174**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
175
176**系统能力:** SystemCapability.Multimedia.AVSession.AVCast
177
178**参数:**
179
180| 参数名   | 类型                                               | 必填 | 说明                                                    |
181| -------- | ------------------------------------------------ | ---- | ------------------------------------------------------ |
182| type     | string                                           | 是   | 取消对应的监听事件,支持事件`'pickerStateChange'`。         |
183| callback | Callback\<[AVCastPickerState](js-apis-avCastPickerParam.md#avcastpickerstate11)> | 否   | 回调函数,参数state是变化后的半模态窗口状态。<br>当监听事件取消成功,err为undefined,否则返回错误对象。<br>该参数为可选参数,若不填写该参数,则认为取消所有相关会话的事件监听。                           |
184
185**错误码:**
186
187以下错误码的详细介绍请参见[媒体会话管理错误码](errorcode-avsession.md)。
188
189| 错误码ID | 错误信息 |
190| -------- | ---------------------------------------- |
191| 401 |  parameter check failed. 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
192| 6600101  | Session service exception. |
193
194**示例:**
195
196```ts
197import { common } from '@kit.AbilityKit';
198import { avSession } from '@kit.AVSessionKit';
199
200async function onPickerStateChange(context: common.Context) {
201  let avCastPicker = new avSession.AVCastPickerHelper(context);
202  avCastPicker.off('pickerStateChange');
203}
204```
205