@performance/reasonable-audio-use-check
无长时任务的应用退到后台时,禁止使用麦克风或扬声器。
规则配置
// code-linter.json5
{
"rules": {
"@performance/reasonable-audio-use-check": "suggestion",
}
}
选项
该规则无需配置额外选项。
正例
import { UIAbility } from '@kit.AbilityKit';
import { audio } from '@kit.AudioKit';
import { media } from '@kit.MediaKit';
import { BusinessError } from '@kit.BasicServicesKit';
let audioStreamInfo: audio.AudioStreamInfo = {
samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, // 采样率。
channels: audio.AudioChannel.CHANNEL_2, // 通道。
sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式。
encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式。
};
const audioRendererOptions: audio.AudioRendererOptions = {
streamInfo: audioStreamInfo,
rendererInfo: {
usage: audio.StreamUsage.STREAM_USAGE_UNKNOWN,
rendererFlags: 1
}
}
let audioCapturerInfo: audio.AudioCapturerInfo = {
source: audio.SourceType.SOURCE_TYPE_MIC, // 音源类型:Mic音频源。根据业务场景配置,参考SourceType。
capturerFlags: 0 // 音频采集器标志。
};
let audioCapturerOptions: audio.AudioCapturerOptions = {
streamInfo: audioStreamInfo,
capturerInfo: audioCapturerInfo
};
let audioRenderer: audio.AudioRenderer
let avPlayer: media.AVPlayer
let audioCapturer: audio.AudioCapturer;
export default class EntryAbility extends UIAbility {
// Create an AudioRenderer based on the service requirements at the foreground
onForeground(): void {
audio.createAudioRenderer(audioRendererOptions, ((err, data) => {
audioRenderer = data;
}));
avPlayer.play();
audio.createAudioCapturer(audioCapturerOptions, (err, data) => {
audioCapturer = data;
});
}
onBackground(): void {
// Return to the background to stop or pause
audioRenderer.stop((err: BusinessError) => {
});
avPlayer.stop();
audioCapturer.stop((err: BusinessError) => {
});
}
}
反例
import { UIAbility } from '@kit.AbilityKit';
import { audio } from '@kit.AudioKit';
import { media } from '@kit.MediaKit';
let audioStreamInfo: audio.AudioStreamInfo = {
samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, // 采样率。
channels: audio.AudioChannel.CHANNEL_2, // 通道。
sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式。
encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式。
};
const audioRendererOptions: audio.AudioRendererOptions = {
streamInfo: audioStreamInfo,
rendererInfo: {
usage: audio.StreamUsage.STREAM_USAGE_UNKNOWN,
rendererFlags: 1
}
}
let audioCapturerInfo: audio.AudioCapturerInfo = {
source: audio.SourceType.SOURCE_TYPE_MIC, // 音源类型:Mic音频源。根据业务场景配置,参考SourceType。
capturerFlags: 0 // 音频采集器标志。
};
let audioCapturerOptions: audio.AudioCapturerOptions = {
streamInfo: audioStreamInfo,
capturerInfo: audioCapturerInfo
};
let audioRenderer: audio.AudioRenderer
let avPlayer: media.AVPlayer
let audioCapturer: audio.AudioCapturer;
export default class EntryAbility extends UIAbility {
// Create an AudioRenderer based on the service requirements at the foreground
onForeground(): void {
audio.createAudioRenderer(audioRendererOptions, ((err, data) => {
audioRenderer = data;
}));
avPlayer.play();
audio.createAudioCapturer(audioCapturerOptions, (err, data) => {
audioCapturer = data;
});
}
onBackground(): void {
}
}
规则集
plugin:@performance/all
Code Linter代码检查规则的配置指导请参考Code Linter代码检查。