DependencyService、SoundPoolを使ってAndroidで効果音を再生する
音声ファイルの配置
音声ファイルをAndroidプロジェクトの「Resources」→「raw」フォルダに配置する
(TestSound.wav)
インターフェイス作成する
ISoundEffectとして作成
public interface ISoundEffect
{
void SoundPlay();
}
クラスの作成
Androidプロジェクトにクラスを作成する
(SoundEffectクラス)
using Android.Media;
[assembly: Xamarin.Forms.Dependency(typeof(Sound01.Droid.SoundEffect))]
namespace Sound01.Droid
{
public class SoundEffect : ISoundEffect
{
SoundPool soundPool;
int soundPoolId;
public SoundEffect()
{
int SOUND_POOL_MAX = 6;
AudioAttributes attr = new AudioAttributes.Builder()
.SetUsage(AudioUsageKind.Media)
.SetContentType(AudioContentType.Music)
.Build();
soundPool = new SoundPool.Builder()
.SetAudioAttributes(attr)
.SetMaxStreams(SOUND_POOL_MAX)
.Build();
soundPoolId = soundPool.Load(Android.App.Application.Context, Resource.Raw.TestSound, 1);
}
public void SoundPlay()
{
soundPool.Play(soundPoolId, 1.0F, 1.0F, 0, 0, 1.0F);
}
}
}
インターフェースの実装
ISoundEffect soundEffect = DependencyService.Get<ISoundEffect>();
効果音を再生する
using (soundEffect as IDisposable)
{
soundEffect.SoundPlay();
}