Ответ 1
Я нашел проблему у вашего провайдера smartAudio. Пожалуйста, измените "актив: ключ" на "актив: актив" и повторите попытку.
У меня возникла проблема с использованием плагина native-audio cordova с ионным. Я установил native, используя npm
sudo npm install --save @ionic-native/native-audio
И добавил нового провайдера под названием smartAudio (код прилагается ниже). Он работает как шарм как в ионном виде в Интернете, так и на эмуляторе iOS/реальном устройстве, но по какой-то причине нет звука на эмуляторах Android и реальных устройствах вообще.
У меня есть элемент с ионными слайдами, который генерирует слайд изображений, используя * ngFor, например:
<ion-slides (ionSlideDidChange)="muteAnimalSound()" pager dir="rtl" [loop]="true" >
<ion-slide *ngFor="let slide of animals_slides; let i = index" style="background-color: white">
<img src="{{slide.img_url}}" (click)="playAnimalSound($event)">
</ion-slide>
</ion-slides>
Где функция playAnimalSound() выглядит так:
playAnimalSound(ev) {
let animalSound = this.getAnimalBySource(ev.target.src);
let currentIndex = this.slides.getActiveIndex();
this.smartAudio.preload(currentIndex, animalSound[0].sound_url);
this.smartAudio.play(currentIndex);
}
Мой провайдер smartAudio был определен следующим образом:
export class SmartAudio {
audioType: string = 'html5';
sounds: any = [];
constructor(public nativeAudio: NativeAudio, platform: Platform) {
if(platform.is('cordova')){
this.audioType = 'native';
}
//testing atlassian sourcetree
}
preload(key, asset) {
if(this.audioType === 'html5'){
let audio = {
key: key,
asset: asset,
type: 'html5'
};
this.sounds.push(audio);
} else {
this.nativeAudio.preloadSimple(key, asset);
let audio = {
key: key,
asset: key,
type: 'native'
};
this.sounds.push(audio);
}
}
play(key){
let audio = this.sounds.find((sound) => {
return sound.key === key;
});
if(audio.type === 'html5'){
let audioAsset = new Audio(audio.asset);
audioAsset.play();
} else {
this.nativeAudio.play(audio.asset).then((res) => {
console.log(res);
}, (err) => {
console.log(err);
});
}
}
stop(key)
{
let audio = this.sounds.find((sound) => {
return sound.key === key;
});
if(audio.type === 'html5'){
let audioAsset = new Audio(audio.asset);
audioAsset.play();
} else {
this.nativeAudio.stop(audio.asset).then((res) => {
console.log(res);
}, (err) => {
console.log(err);
});
}
}
}
Я нашел проблему у вашего провайдера smartAudio. Пожалуйста, измените "актив: ключ" на "актив: актив" и повторите попытку.
Удостоверьтесь, что уровни Android API равны 14-21.
В старых версиях может не работать.
У меня была та же проблема. Но я нашел эту статью: Звуковые эффекты с использованием HTML5 и родного аудио в ионическом
Я сделал все, как в этой статье, - и я получил звук на своем телефоне Android. Попробуйте - он должен работать. На всякий случай, я покажу файл package.json:
"dependencies": {
"@angular/common": "4.4.3",
"@angular/compiler": "4.4.3",
"@angular/compiler-cli": "4.4.3",
"@angular/core": "4.4.3",
"@angular/forms": "4.4.3",
"@angular/http": "4.4.3",
"@angular/platform-browser": "4.4.3",
"@angular/platform-browser-dynamic": "4.4.3",
"@ionic-native/core": "4.3.0",
"@ionic-native/native-audio": "^4.3.0",
"@ionic-native/social-sharing": "^4.3.0",
"@ionic-native/splash-screen": "4.3.0",
"@ionic-native/status-bar": "4.3.0",
"@ionic/storage": "2.0.1",
"ionic-angular": "3.7.1",
"ionicons": "3.0.0",
"rxjs": "5.4.3",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.18"
},
"devDependencies": {
"@ionic/app-scripts": "3.0.0",
"typescript": "2.3.4"
},
Используется последняя версия Ionic. Этот пример работает в этой статье. Попробуйте.