Как играть звуки на Xamarin.форм?
Я создаю приложение для Android, iOS и Windows Phone с помощью Xamarin.формы. Мой вопрос в том, как играть в mp3 или wav с формами Xamarin?
моя бизнес-логика обрабатывается общим проектом, и я не знаю, как использовать платформу специально "MediaPlayer".
4 ответов
Я только что закончил создание AudioManager для Xamarin, который работает на iOS, Android, UWP, Windows 8.1 и Windows Phone 8.1. Если вы заинтересованы проверить его наhttps://github.com/jcphlux/XamarinAudioManager. Существует ссылка на пакет Nuget или не стесняйтесь клонировать проект.
прямо сейчас Xamarin.формаs не имеет звука API, поэтому вам нужно использовать DependencyService
Проверьте следующую ссылку, она отлично работает для меня:
https://www.codeproject.com/Articles/1088094/Playing-audio-mp-File-in-Xamarin-Forms
нам потребуется создать интерфейс, который будет реализован в конкретном проекте платформы, я назвал его IAudio.cs и код для того же, что и следует:
using System;
namespace AudioPlayEx
{
public interface IAudio
{
void PlayAudioFile(string fileName);
}
}
Android Решение:
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:
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();
}
}
}
и, наконец, мы будем использовать следующий код в нашем проекте PCL / shared для воспроизведения аудиофайла.
DependencyService.Get<IAudio>().PlayAudioFile("MySong.mp3");
думаю, Xamarin.На данный момент Forms не имеет звуковых API, поэтому вам придется писать пользовательский, специфичный для платформы код.
проверить, как Джеймс Монтеманьо осуществляет преобразования текста в речь (через DependencyService)
относятся :
вы можете Xam.Plugin.SimpleAudioPlayer
попытка, начиная с Xamarin.Формы не имеют звукового API.
короче говоря, добавьте пакет NuGet к каждому конкретному проекту платформы, который вы хотите поддержать. Скопируйте аудиофайлы в папку Assets для Windows UWP и Android и задайте действия сборки как Content
и Android Asset
соответственно. Для iOS скопируйте аудиофайлы в папку Resources и установите действие сборки в BundleResource
, затем воспроизвести файлы следующим образом:
var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
player.Load("intro_sound.mp3");
player.Play();