Xamarin 効果音

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();
}
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください