Xamarin.Androidでバイブを制御する

提供: MonoBook
ナビゲーションに移動 検索に移動

ググるJavaKotlinの例がいっぱいでてくる。 実装はなんら違わない。

権限[編集 | ソースを編集]

バイブを制御するには以下の権限を付与する必要がある。

  • Vibrate

権限の付与方法は「Xamarin.Androidで権限を設定する」を参照。

実装[編集 | ソースを編集]

using Android.App;
using Android.Widget;
using Android.OS;
using Android.Content;

namespace vibration
{
    [Activity(Label = "vibe", MainLauncher = true, Icon = "@mipmap/icon")]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Main);
            Button button = FindViewById<Button>(Resource.Id.myButton);

            // vibe
            var vibrator = GetSystemService(Context.VibratorService) as Vibrator;

            // バイブのパターン off,on,off,on,...
            var pattern = new long[] { 100, 100, 200, 200, 300, 300 };

            // リピート回数
            // -1 = 1回
            //  0 = Cancelが呼ばれるまで繰り返す
            //  n = n回
            var repeat = 0;

            // バイブon,off制御用
            var isVibe = false;

            button.Click += delegate
            {
                // バイブ存在チェック
                if (vibrator == null || vibrator.HasVibrator == false)
                {
                    return;
                }

                if (!isVibe)
                {// バイブ開始
                    if (BuildVersionCodes.O <= Android.OS.Build.VERSION.SdkInt)
                    {
                        var effect = VibrationEffect.CreateWaveform(pattern, repeat);
                        vibrator.Vibrate(effect);
                    }
                    else
                    {
                        vibrator.Vibrate(pattern, repeat);
                    }
                }
                else
                {// バイブ停止
                    vibrator.Cancel();
                }

                isVibe = !isVibe;
            };
        }
    }
}

関連項目[編集 | ソースを編集]