3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VibratorManager を利用する

Last updated at Posted at 2022-01-08

Context.VIBRATOR が Deprecated に

API Level 31 (Android 12) より getSystemService(Context.VIBRATOR)Deprecated になりました。
以降は同じく API Level 31 で追加された getSystemService(Context.VIBRATOR_MANAGER_SERVICE) の使用が推奨されます。

Vibrator Manager の使い方

AndroidManifest.xml に次のパーミッションを追加します。

AndroidManifest.xml
<uses-permission android:name="android.permission.VIBRATE"/>

つづいて MainActivity.kt に処理を記述します。
サンプルではこまかな点まで考慮しておりませんのでご了承ください。

MainActivity.kt
class MainActivity : AppCompatActivity() {
    @RequiresApi(Build.VERSION_CODES.S)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val vibratorManager = getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
        val vibrationEffect = VibrationEffect.createWaveform(
            longArrayOf(500L, 500L),
            intArrayOf(VibrationEffect.DEFAULT_AMPLITUDE, 0),
            3
        )
        val combinedVibration = CombinedVibration.createParallel(vibrationEffect)

        findViewById<Button>(R.id.Button).setOnClickListener { vibratorManager.vibrate(combinedVibration) }
    }
}

従来の Vibrator を使用する方法との違いは、CombinedVibration が加えられる点です。
公式リファレンス によると CombinedVibration は API Level 31 で追加された振動機能全般を管理するためのクラスとなっています。
従来の振動機能に加え、触覚フィードバックも一元化して扱いやすくするのが狙いなようです。
その点を除くと、 VibrationEffect オブジェクトを生成し VibratorManager.vibrate() に渡すという基本サイクルは変わりません。

実行中のvibratorをすべて停止するには、 VibratorManager.cancel() を使用します。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?