Xamarin.formsを使用して、Android、iOS、Windows Phone用のアプリを作成しています。私の質問は、XamarinフォームでMP3またはWAVを再生する方法ですか?
私のビジネスロジックは共有プロジェクトによって処理され、プラットフォーム「具体的にはMediaPlayer」の使用方法がわかりません。
IOS、Android、UWP、Windows 8.1、およびWindows Phone 8.1で動作するXamarin用のAudioManagerの作成が完了しました。興味がある場合は、 https://github.com/jcphlux/XamarinAudioManager で確認してください。 Nugetパッケージへのリンクがあるか、プロジェクトを自由に複製してください。
現在Xamarin.formsが鳴りません[〜#〜] 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 /共有プロジェクトで次のコードを使用して、オーディオファイルを再生します。
DependencyService.Get<IAudio>().PlayAudioFile("MySong.mp3");
Xamarin.Formsには現時点でサウンドAPIがないため、プラットフォーム固有のカスタムコードを作成する必要があると思います。
James Montemagnoの実装方法を確認 (TextToSpeech ( DependencyService )を使用
参照:
Xamarin.FormsにはサウンドAPIがないため、 Xam.Plugin.SimpleAudioPlayer
を試してみてください。
つまり、サポートしたいプラットフォーム固有の各プロジェクトにNuGetパッケージを追加します。オーディオファイルをWindows UWPおよびAndroidのAssetsフォルダーにコピーし、ビルドアクションをそれぞれContent
およびAndroid Asset
として設定します。iOSの場合は、オーディオファイルをResourcesフォルダーとビルドアクションをBundleResource
に設定し、次のようにファイルを再生します。
var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
player.Load("intro_sound.mp3");
player.Play();