“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”
토이 프로젝트를 만들고 있었는데
갱신을 할 때마다 진동을 울려주고 싶어서 사용법을 정리해 보았다.
코드는 굉장히 쉽다.
진동은 Vibrator
라는 클래스를 통해서 사용이 가능하다.
하지만 API Level 26 (Oreo)부터 방법이 조금 바뀌었다.
Oreo부터는 VibrationEffect
라는 클래스를 한번 더 거쳐줘야 한다.
val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
vibrator.vibrate(200)
val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
val effect = VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE)
vibrator.vibrate(effect)
패턴을 지정해서 반복적으로 진동을 발생하는 것도 가능하다.
LongArray
에 주기를 담아서 인자로 넘겨주면 되는데
짝수 인덱스는 대기하는 시간
홀수 인덱스는 진동을 울리는 시간으로 담아서 넘겨주면 된다.
longArrayOf(100, 200, 100, 200)
예를 들어, 위 코드는 200ms짜리 진동을 100ms 주기로 두번 울린다.
쉽게 말하자면 짝수 인덱스, 홀수 인덱스를 하나의 주기로 묶어서 생각하면 편하다.
val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
val pattern = longArrayOf(100, 200, 100, 200)
vibrator.vibrate(pattern, -1)
val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
val pattern = longArrayOf(100, 200, 100, 200)
val effect = VibrationEffect.createWaveform(pattern, -1)
vibrator.vibrate(effect)
눈치 챈 분들이 있겠지만
vibrator.vibrate(pattern, -1)
val effect = VibrationEffect.createWaveform(pattern, -1)
pattern과 같이 넣어준 -1 같이 넣어주었다.
-1은 repeat이란 인자를 넣어주는 자리인데
0을 넣어주면 무한반복,
-1을 넣어주면 반복하지 않는다는 뜻이다.
무한반복이 되면 취소를 해야할텐데
취소하는 것 또한 메소드로 제공한다.
vibrator.cancel()
위 메소드를 호출하면 반복되던 진동이 멈춘다.
개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.