ngay bây giờ Xamarin.forms đã không âm thanh API, vì vậy bạn cần phải sử dụng DependencyService Kiểm tra liên kết sau đây, nó đang làm việc tốt cho tôi:
https://www.codeproject.com/Articles/1088094/Playing-audio-mp-File-in-Xamarin-Forms
Chúng tôi sẽ yêu cầu để tạo ra một giao diện mà sẽ được thực hiện trong dự án cụ thể nền tảng, tôi đặt tên nó như IAudio.cs và mã cho cùng là như sau:
using System;
namespace AudioPlayEx
{
public interface IAudio
{
void PlayAudioFile(string fileName);
}
}
Android giải pháp:
using System;
using Xamarin.Forms;
using AudioPlayEx.Droid;
using Android.Media;
using Android.Content.Res;
[assembly: Dependency(typeof(AudioService))]
namespace AudioPlayEx.Droid
{
public class AudioService: IAudio
{
public AudioService()
{
}
public void PlayAudioFile(string fileName){
var player = new MediaPlayer();
var fd = global::Android.App.Application.Context.Assets.OpenFd(fileName);
player.Prepared += (s, e) =>
{
player.Start();
};
player.SetDataSource(fd.FileDescriptor,fd.StartOffset,fd.Length);
player.Prepare();
}
}
}
iOS Giải pháp:
using System;
using Xamarin.Forms;
using AudioPlayEx;
using AudioPlayEx.iOS;
using System.IO;
using Foundation;
using AVFoundation;
[assembly: Dependency (typeof (AudioService))]
namespace AudioPlayEx.iOS
{
public class AudioService : IAudio
{
public AudioService()
{
}
public void PlayAudioFile(string fileName)
{
string sFilePath = NSBundle.MainBundle.PathForResource
(Path.GetFileNameWithoutExtension(fileName), Path.GetExtension(fileName));
var url = NSUrl.FromString (sFilePath);
var _player = AVAudioPlayer.FromUrl(url);
_player.FinishedPlaying += (object sender, AVStatusEventArgs e) => {
_player = null;
};
_player.Play();
}
}
}
Và cuối cùng, chúng ta sẽ sử dụng đoạn mã sau vào dự án PCL/chia sẻ của chúng tôi để chơi các tập tin âm thanh.
DependencyService.Get<IAudio>().PlayAudioFile("MySong.mp3");
Nguồn
2017-01-20 15:05:16
Đã kiểm tra và làm việc. Tài liệu tuyệt vời tại đây: https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/introduction/ – pollaris