У меня есть директива angularjs для воспроизведения аудиофайлов в ионном приложении. Я также показываю продолжительность аудиофайла и прочее в моей директиве. Поэтому, если я хочу отображать продолжительность аудиофайла через событие ondurationchange, он отлично работает на iOS, но на Android событие никогда не будет вызвано.
Мой код выглядит так:
$scope.audioObj = new Audio(url);
if(isNaN(AAudioService.getDuration())) {
$scope.audioObj.ondurationchange = function() {
console.log($scope.audioObj.duration.toFixed(1));
}
В чем проблема?
Вы можете использовать Ionic-audio
для этой цели. Он использует внутренний Cordova Media Plugin
.
app.js
//Add it as dependency
angular.module('starter', ['ionic', 'starter.controllers', 'ionic-audio'])
controllers.js
angular.module('starter.controllers', [])
.controller('MusicCtrl', function($scope) {
$scope.track = {
url: 'https://www.example.com/my_song.mp3',
artist: 'Somebody',
title: 'Song name',
art: 'img/album_art.jpg'
}
});
yourtemplate.html
<ion-view view-title="Music">
<ion-content>
<ion-audio-track track="track">
<div class="list list-inset">
<div class="item item-thumbnail-left">
<img src="{{track.art}}">
<h2>{{track.title}}</h2>
<p>{{track.artist}}</p>
<ion-audio-controls>
<a class="button button-icon icon" ion-audio-play></a>
<ion-spinner icon="ios"></ion-spinner>
</ion-audio-controls>
</div>
<div class="item">
<ion-audio-progress-bar display-time></ion-audio-progress-bar>
</div>
</div>
</ion-audio-track>
</ion-content>
</ion-view>