Введение функции:
Трансляция Аудио,Улучшить путь к аудиофайлу,играть Аудио。Справочная документацияИспользуйте AVPlayer для разработки функций воспроизведения звука.。
Очки знаний:
Среда использования:
Требуемые разрешения:
Фрагмент кода функции обратного вызова регистрации игрока:
setAVPlayerCallback() {
this.avPlayer.on('error', (err) => {
console.error(`В плеере произошла ошибка, код ошибки: ${err.code}, Сообщение об ошибке: ${err.message}`);
// Вызов сброса для сброса ресурсов и перехода в состояние ожидания.
this.avPlayer.reset();
})
// государственная Функция обратного вызова изменения машины
this.avPlayer.on('stateChange', async (state, reason) => {
switch (state) {
case 'initialized':
console.info('Инициализация ресурса завершена');
// Инициализация ресурса завершена и начинается подготовка файла.
this.avPlayer.prepare();
break;
case 'prepared':
console.info('Подготовка ресурсов завершена');
// Подготовка ресурса завершена, приступаем к подготовке файлов
this.avPlayer.play();
break;
case 'completed':
console.info('Воспроизведение завершено');
this.avPlayer.stop();
break;
}
})
}
Воспроизвести фрагмент функции аудио:
async onPageShow(){
// Создать объект экземпляра avPlayer
this.avPlayer = await media.createAVPlayer();
// создаватьгосударственная Функция обратного вызова изменения машины
this.setAVPlayerCallback();
console.info('Подготовка игрока завершена')
}
async avPlayerUrl() {
let fdPath = 'fd://';
// Получить путь к аудио
let context = getContext(this) as common.UIAbilityContext;
let pathDir = context.filesDir;
let path = pathDir + '/test.wav';
let res = fs.accessSync(path);
if (!res) {
console.error(`Аудиофайл не существует: ${path}`);
promptAction.showToast({ message: "Аудиофайл не существует"})
return
}
// Откройте соответствующий адрес файла ресурсов, чтобы получить fd.
let file = await fs.open(path);
fdPath = fdPath + '' + file.fd;
// назначение URL-адреса запускает инициализированнуюгосударственную машина Отчет this.avPlayer.url = fdPath;
}
Полный код:
import media from '@ohos.multimedia.media';
import fs from '@ohos.file.fs';
import common from '@ohos.app.ability.common';
import promptAction from '@ohos.promptAction';
@Entry
@Component
struct PlayAudio {
private avPlayer;
async onPageShow(){
// Создать объект экземпляра avPlayer
this.avPlayer = await media.createAVPlayer();
// создаватьгосударственная Функция обратного вызова изменения машины
this.setAVPlayerCallback();
console.info('Подготовка игрока завершена')
}
build() {
Row() {
Column() {
Кнопка('Воспроизвести Аудио')
.fontSize(16)
.backgroundColor(Color.Blue)
.onClick(()=>{
this.avPlayerUrl()
})
}
.width('100%')
}
.height('100%')
}
async avPlayerUrl() {
let fdPath = 'fd://';
// Получить путь к аудио
let context = getContext(this) as common.UIAbilityContext;
let pathDir = context.filesDir;
let path = pathDir + '/test.wav';
let res = fs.accessSync(path);
if (!res) {
console.error(`Аудиофайл не существует: ${path}`);
promptAction.showToast({ message: "Аудиофайл не существует"})
return
}
// Откройте соответствующий адрес файла ресурсов, чтобы получить fd.
let file = await fs.open(path);
fdPath = fdPath + '' + file.fd;
// назначение URL-адреса запускает инициализированнуюгосударственную машина Отчет this.avPlayer.url = fdPath;
}
// Зарегистрировать функцию обратного вызова avplayer
setAVPlayerCallback() {
this.avPlayer.on('error', (err) => {
console.error(`В плеере произошла ошибка, код ошибки: ${err.code}, Сообщение об ошибке: ${err.message}`);
// Вызов сброса для сброса ресурсов и перехода в состояние ожидания.
this.avPlayer.reset();
})
// государственная Функция обратного вызова изменения машины
this.avPlayer.on('stateChange', async (state, reason) => {
switch (state) {
case 'initialized':
console.info('Инициализация ресурса завершена');
// Инициализация ресурса завершена и начинается подготовка файла.
this.avPlayer.prepare();
break;
case 'prepared':
console.info('Подготовка ресурсов завершена');
// Подготовка ресурса завершена, приступаем к подготовке файлов
this.avPlayer.play();
break;
case 'completed':
console.info('Воспроизведение завершено');
this.avPlayer.stop();
break;
}
})
}
}