无长时任务的应用退到后台禁止使用麦克风或扬声器。
约束
NA
示例
播音场景(audioRenderer)
import { UIAbility } from '@kit.AbilityKit';
import { audio } from '@kit.AudioKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class EntryAbility extends UIAbility {
//在前台时按业务所需创建AudioRenderer
onForeground(): void {
audio.createAudioRenderer(audioRendererOptions, ((err: BusinessError) => {}));
}
onBackground(): void {
//退到后台停止或者暂停
audioRenderer.stop((err: BusinessError) => {});
}
}
播音场景(AVPlayer)
import { UIAbility } from '@kit.AbilityKit';
export default class EntryAbility extends UIAbility {
// ...
onForeground(): void {
//在前台时按业务所需进行播放
avPlayer.play();
}
onBackground(): void {
//退到后台停止播放或者暂停
avPlayer.stop(); //或者pause();
}
}
播音场景(OpenSL ES)
//前台场景开始播放
SLPlayItfplayItf=nullptr;
(*pcmPlayerObject)->GetInterface(pcmPlayerObject,SL_IID_PLAY,&playItf);
(*playItf)->SetPlayState(playItf,SL_PLAYSTATE_PLAYING);
//后台场景停止播放
(*playItf)->SetPlayState(playItf,SL_PLAYSTATE_STOPPED);
(*pcmPlayerObject)->Destroy(pcmPlayerObject);
(*engineObject)->Destroy(engineObject);
播音场景(OHAudio)
// 构造播放音频流
OH_AudioRenderer*audioRenderer;
ret=OH_AudioStreamBuilder_GenerateRenderer(builder,&audioRenderer);
//前台场景开始播放
ret=OH_AudioRenderer_Start(audioRenderer);
//后台场景停止播放
ret=OH_AudioRenderer_Stop(audioRenderer);
播音场景(SoundPool)
// 构造播放音频流
awaitfs.open('/test_01.mp3', fs.OpenMode.READ_ONLY).then((file: fs.File) => {
console.info("filefd:" + file.fd);
uri = 'fd://' + (file.fd).toString()
}); //'/test_01.mp3'作为样例,使用时需要传入文件对应路径。
soundId = awaitsoundPool.load(uri);
//前台场景开始播放
streamId = awaitsoundPool.play(soundId);
//后台场景停止播放soundPool.stop(streamId);
录音场景
import { UIAbility } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { audio } from '@kit.AudioKit';
export default class EntryAbility extends UIAbility {
// ...
onForeground(): void {
//申请系统需要的资源,或者重新申请在onBackground()中释放的资源
audio.createAudioCapturer(audioCapturerOptions, (err, data) => {
if (err) {
console.error(`InvokecreateAudioCapturerfailed,codeis${err.code},messageis${err.message}`);
} else {
console.info('InvokecreateAudioCapturersucceeded.');
}
});
}
onBackground(): void {
// 释放UI不可见时释放资源
audioCapturer.stop((err: BusinessError) => {});
//或者pause();
}
}