From c173fdb6f1d46a4ae4a2d84871442622ad903633 Mon Sep 17 00:00:00 2001 From: Gloria Date: Sat, 27 May 2023 14:07:24 +0800 Subject: [PATCH] Update docs against 17888+18042+18083+18426 Signed-off-by: wusongqing --- .../media/audio-playback-concurrency.md | 2 +- .../media/audio-playback-overview.md | 2 +- .../media/audio-recording-overview.md | 2 +- .../figures/audiocapturer-status-change.png | Bin 24135 -> 32488 bytes .../media/media-application-overview.md | 2 +- .../media/using-audiorenderer-for-playback.md | 3 - .../media/using-avsession-developer.md | 53 +++++++++--------- 7 files changed, 31 insertions(+), 33 deletions(-) diff --git a/en/application-dev/media/audio-playback-concurrency.md b/en/application-dev/media/audio-playback-concurrency.md index 0b36594f6b..fee7e776d6 100644 --- a/en/application-dev/media/audio-playback-concurrency.md +++ b/en/application-dev/media/audio-playback-concurrency.md @@ -14,7 +14,7 @@ The audio interruption policy determines the operations (for example, pause, res Two audio interruption modes, specified by [InterruptMode](../reference/apis/js-apis-audio.md#interruptmode9), are preset in the audio interruption policy: -- **SHARED_MODE**: Multiple audio streams created by an application share one audio focus. The concurrency rules between these audio streams are determined by the application, without the use of the audio interruption policy. However, if another application needs to play audio while one of these audio streams is being played, the audio interruption policy is triggered. +- **SHARE_MODE**: Multiple audio streams created by an application share one audio focus. The concurrency rules between these audio streams are determined by the application, without the use of the audio interruption policy. However, if another application needs to play audio while one of these audio streams is being played, the audio interruption policy is triggered. - **INDEPENDENT_MODE**: Each audio stream created by an application has an independent audio focus. When multiple audio streams are played concurrently, the audio interruption policy is triggered. diff --git a/en/application-dev/media/audio-playback-overview.md b/en/application-dev/media/audio-playback-overview.md index d17970d6de..5ef7a6f9c4 100644 --- a/en/application-dev/media/audio-playback-overview.md +++ b/en/application-dev/media/audio-playback-overview.md @@ -8,7 +8,7 @@ OpenHarmony provides multiple classes for you to develop audio playback applicat - [AudioRenderer](using-audiorenderer-for-playback.md): provides ArkTS and JS API to implement audio output. It supports only the PCM format and requires applications to continuously write audio data. The applications can perform data preprocessing, for example, setting the sampling rate and bit width of audio files, before audio input. This class can be used to develop more professional and diverse playback applications. To use this class, you must have basic audio processing knowledge. -- [OpenSLES](using-opensl-es-for-playback.md): provides a set of standard, cross-platform, yet unique native audio APIs. It supports audio output in PCM format and is applicable to playback applications that are ported from other embedded platforms or that implements audio output at the native layer. +- [OpenSL ES](using-opensl-es-for-playback.md): provides a set of standard, cross-platform, yet unique native audio APIs. It supports audio output in PCM format and is applicable to playback applications that are ported from other embedded platforms or that implements audio output at the native layer. - [TonePlayer](using-toneplayer-for-playback.md): provides ArkTS and JS API to implement the playback of dialing tones and ringback tones. It can be used to play the content selected from a fixed type range, without requiring the input of media assets or audio data. This class is application to specific scenarios where dialing tones and ringback tones are played. is available only to system applications. diff --git a/en/application-dev/media/audio-recording-overview.md b/en/application-dev/media/audio-recording-overview.md index 698255fddd..2c6fb6fe5b 100644 --- a/en/application-dev/media/audio-recording-overview.md +++ b/en/application-dev/media/audio-recording-overview.md @@ -8,7 +8,7 @@ OpenHarmony provides multiple classes for you to develop audio recording applica - [AudioCapturer](using-audiocapturer-for-recording.md): provides ArkTS and JS API to implement audio input. It supports only the PCM format and requires applications to continuously read audio data. The application can perform data processing after audio output. This class can be used to develop more professional and diverse recording applications. To use this class, you must have basic audio processing knowledge. -- [OpenSLES](using-opensl-es-for-recording.md): provides a set of standard, cross-platform, yet unique native audio APIs. It supports audio input in PCM format and is applicable to recording applications that are ported from other embedded platforms or that implements audio input at the native layer. +- [OpenSL ES](using-opensl-es-for-recording.md): provides a set of standard, cross-platform, yet unique native audio APIs. It supports audio input in PCM format and is applicable to recording applications that are ported from other embedded platforms or that implements audio input at the native layer. ## Precautions for Developing Audio Recording Applications diff --git a/en/application-dev/media/figures/audiocapturer-status-change.png b/en/application-dev/media/figures/audiocapturer-status-change.png index aadbc4fb6470b7cdc0f399ee5954a96c01a7f7c3..ff76a8414f7a254af7d2796e44f2c2555dc9185f 100644 GIT binary patch literal 32488 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 M3vK0EMVqky06T6MU;qFB diff --git a/en/application-dev/media/media-application-overview.md b/en/application-dev/media/media-application-overview.md index d350482e61..6ca7bbd61b 100644 --- a/en/application-dev/media/media-application-overview.md +++ b/en/application-dev/media/media-application-overview.md @@ -2,7 +2,7 @@ ## Multimedia Subsystem Architecture -The multimedia subsystem provides the capability of processing users' visual and auditory information. For example, it can be used to collect, compress, store, decompress, and play audio and video information. Based on the type of media information to process, the media system is usually divided into four modules: audio, media, camera, and image. +The multimedia subsystem provides the capability of processing users' visual and auditory information. For example, it can be used to collect, compress, store, decompress, and play audio and video information. Based on the type of media information to process, the multimedia subsystem subsystem is usually divided into four modules: audio, media, camera, and image. As shown in the figure below, the multimedia subsystem provides APIs for developing audio/video, camera, and gallery applications, and provides adaptation and acceleration for different hardware chips. In the middle part, it provides core media functionalities and management mechanisms in the form of services. diff --git a/en/application-dev/media/using-audiorenderer-for-playback.md b/en/application-dev/media/using-audiorenderer-for-playback.md index 11934e6698..d726378192 100644 --- a/en/application-dev/media/using-audiorenderer-for-playback.md +++ b/en/application-dev/media/using-audiorenderer-for-playback.md @@ -151,9 +151,6 @@ export default class AudioRendererDemo { console.info(`${TAG}: creating AudioRenderer success`); this.renderModel = renderer; this.renderModel.on('stateChange', (state) => { // Set the events to listen for. A callback is invoked when the AudioRenderer is switched to the specified state. - if (state == 1) { - console.info('audio renderer state is: STATE_PREPARED'); - } if (state == 2) { console.info('audio renderer state is: STATE_RUNNING'); } diff --git a/en/application-dev/media/using-avsession-developer.md b/en/application-dev/media/using-avsession-developer.md index 077f0b956a..0995196522 100644 --- a/en/application-dev/media/using-avsession-developer.md +++ b/en/application-dev/media/using-avsession-developer.md @@ -1,6 +1,6 @@ # AVSession Provider -An audio and video application needs to access the AVSession service as a provider in order to display media information in the controller (for example, Media Controller) and respond to control commands delivered by the controller. +An audio and video application needs to access the AVSession service as a provider in order to display media information in the controller (for example, Media Controller) and respond to playback control commands delivered by the controller. ## Basic Concepts @@ -14,22 +14,22 @@ The table below lists the key APIs used by the provider. The APIs use either a c For details, see [AVSession Management](../reference/apis/js-apis-avsession.md). -| API| Description| +| API| Description| | -------- | -------- | -| createAVSession(context: Context, tag: string, type: AVSessionType, callback: AsyncCallback<AVSession>): void | Creates an AVSession.
Only one AVSession can be created for a UIAbility.| -| setAVMetadata(data: AVMetadata, callback: AsyncCallback<void>): void | Sets AVSession metadata.| -| setAVPlaybackState(state: AVPlaybackState, callback: AsyncCallback<void>): void | Sets the AVSession playback state.| -| setLaunchAbility(ability: WantAgent, callback: AsyncCallback<void>): void | Starts a UIAbility.| -| getController(callback: AsyncCallback<AVSessionController>): void | Obtains the controller of the AVSession.| -| activate(callback: AsyncCallback<void>): void | Activates the AVSession.| -| destroy(callback: AsyncCallback<void>): void | Destroys the AVSession.| +| createAVSession(context: Context, tag: string, type: AVSessionType, callback: AsyncCallback<AVSession>): void | Creates an AVSession.
Only one AVSession can be created for a UIAbility.| +| setAVMetadata(data: AVMetadata, callback: AsyncCallback<void>): void | Sets AVSession metadata.| +| setAVPlaybackState(state: AVPlaybackState, callback: AsyncCallback<void>): void | Sets the AVSession playback state.| +| setLaunchAbility(ability: WantAgent, callback: AsyncCallback<void>): void | Starts a UIAbility.| +| getController(callback: AsyncCallback<AVSessionController>): void | Obtains the controller of the AVSession.| +| activate(callback: AsyncCallback<void>): void | Activates the AVSession.| +| destroy(callback: AsyncCallback<void>): void | Destroys the AVSession.| ## How to Develop To enable an audio and video application to access the AVSession service as a provider, proceed as follows: 1. Call an API in the **AVSessionManager** class to create and activate an **AVSession** object. - + ```ts import AVSessionManager from '@ohos.multimedia.avsession'; // Import the AVSessionManager module. @@ -46,10 +46,10 @@ To enable an audio and video application to access the AVSession service as a pr - AVPlaybackState The controller will call an API in the **AVSessionController** class to obtain the information and display or process the information. - + ```ts async setSessionInfo() { - // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet above. + // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet in step 1. let session: AVSessionManager.AVSession = ALLREADY_CREATE_A_SESSION; // The player logic that triggers changes in the session metadata and playback state is omitted here. // Set necessary session metadata. @@ -80,13 +80,13 @@ To enable an audio and video application to access the AVSession service as a pr 3. Set the UIAbility to be started by the controller. The UIAbility configured here is started when a user operates the UI of the controller, for example, clicking a widget in Media Controller. The UIAbility is set through the **WantAgent** API. For details, see [WantAgent](../reference/apis/js-apis-app-ability-wantAgent.md). - + ```ts import WantAgent from "@ohos.app.ability.wantAgent"; ``` ```ts - // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet above. + // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet in step 1. let session: AVSessionManager.AVSession = ALLREADY_CREATE_A_SESSION; let wantAgentInfo = { wants: [ @@ -104,14 +104,14 @@ To enable an audio and video application to access the AVSession service as a pr }) ``` -4. Listen for control commands delivered by the controller, for example, Media Controller. +4. Listen for playback control commands delivered by the controller, for example, Media Controller. > **NOTE** > - > After the provider registers a listener for the control command event, the event will be reflected in **getValidCommands()** of the controller. In other words, the controller determines that the command is valid and triggers the corresponding event as required. To ensure that the control commands delivered by the controller can be executed normally, the provider should not use a null implementation for listening. - + > After the provider registers a listener for playback control commands, the commands will be reflected in **getValidCommands()** of the controller. In other words, the controller determines that the command is valid and triggers the corresponding event as required. To ensure that the playback control commands delivered by the controller can be executed normally, the provider should not use a null implementation for listening. + ```ts async setListenerForMesFromController() { - // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet above. + // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet in step 1. let session: AVSessionManager.AVSession = ALLREADY_CREATE_A_SESSION; // Generally, logic processing on the player is implemented in the listener. // After the processing is complete, use the setter to synchronize the playback information. For details, see the code snippet above. @@ -140,16 +140,16 @@ To enable an audio and video application to access the AVSession service as a pr ``` 5. Obtain an **AVSessionController** object for this **AVSession** object for interaction. - + ```ts async createControllerFromSession() { - // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet above. + // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet in step 1. let session: AVSessionManager.AVSession = ALLREADY_CREATE_A_SESSION; // Obtain an AVSessionController object for this AVSession object. let controller: AVSessionManager.AVSessionController = await session.getController(); - // The AVSessionController object can interact with the AVSession object, for example, by delivering a control command. + // The AVSessionController object can interact with the AVSession object, for example, by delivering a playback control command. let avCommand: AVSessionManager.AVControlCommand = {command:'play'}; controller.sendControlCommand(avCommand); @@ -164,11 +164,12 @@ To enable an audio and video application to access the AVSession service as a pr ``` 6. When the audio and video application exits and does not need to continue playback, cancel the listener and destroy the **AVSession** object. - The code snippet below is used for canceling the listener for control commands: + + The code snippet below is used for canceling the listener for playback control commands: ```ts async unregisterSessionListener() { - // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet above. + // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet in step 1. let session: AVSessionManager.AVSession = ALLREADY_CREATE_A_SESSION; // Cancel the listener of the AVSession object. @@ -180,11 +181,11 @@ To enable an audio and video application to access the AVSession service as a pr } ``` - The code snippet below is used for destroying the AVSession object: - + The code snippet below is used for destroying the AVSession object: + ```ts async destroySession() { - // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet above. + // It is assumed that an AVSession object has been created. For details about how to create an AVSession object, see the node snippet in step 1. let session: AVSessionManager.AVSession = ALLREADY_CREATE_A_SESSION; // Destroy the AVSession object. session.destroy(function (err) { -- GitLab