API
Vibrator
진동을 울릴 때 사용하는 API이다.
API 레벨 31(S) 미만 버전에서는 Activity.getSystemService(Context.VIBRATOR_SERVICE)
로 Vibrator
를 얻는다.
VibratorManager
API 레벨 31(S) 이상 버전에서 Vibrator
를 얻기 위해 사용하는 API이다.
Activity.getSystemService(Context.VIBRATOR_MANAGER_SERVICE)
로 VibratorManager
를 얻은 뒤,
getVibrator()
또는 getDefaultVibrator()
를 호출하여 Vibrator
를 얻을 수 있다.
진동 울리기
Vibrator
객체의 vibrate()
에 지속 시간, 진동 패턴, 반복 횟수 등을 파라미터로 전달하여 진동을 울린다.
권한이 필요하므로 매니페스트 파일에 다음 태그를 선언해야 한다.
<uses-permission android:name="android.permission.VIBRATE" />
vibrate(milliseconds: Long)
(API 레벨 1 ~ 25)
지속 시간(단위: ms)를 지정하여 진동을 울린다.vibrate(milliseconds: Long, attributes: AudioAttributes!)
(API 레벨 21 ~ 25)
용도 및 컨텐츠 유형 등 진동에 대한 여러 정보가 포함된AudioAttributes
를 함께 지정한다.vibrate(pattern: LongArray!, repeat: Int)
(API 레벨 1 ~ 25)
진동 패턴을 나타내는LongArray
와 반복 횟수를 지정하여 진동을 울린다.vibrate(pattern: LongArray!, repeat: Int, attributes: AudioAttributes!)
(API 레벨 21 ~ 25)vibrate(vibe: VibrationEffect!)
(API 레벨 26 ~)
진동 패턴을 나타낼 때LongArray
대신VibrationEffect
를 사용한다.vibrate(vibe: VibrationEffect!, attributes: AudioAttributes!)
(API 레벨 26 ~ 32)vibrate(vibe: VibrationEffect, attributes: VibrationAttributes)
(API 레벨 33 ~)
진동에 대한 정보를AudioAttributes
대신VibrationAttributes
를 통해 전달한다.
val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
(getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager).defaultVibrator
} else {
getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val oneShotEffect = VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE)
vibrator.vibrate(oneShotEffect)
} else {
vibrator.vibrate(500)
}
'Android' 카테고리의 다른 글
액션 바 사용하기 (0) | 2022.08.09 |
---|---|
알림 표시하기 (0) | 2022.07.26 |
벨소리 재생하기 (0) | 2022.07.19 |
Chronometer와 RecyclerView로 스톱워치 만들기 (0) | 2022.07.09 |
액티비티 (9) : 백그라운드에서 액티비티를 시작할 때 제한 사항 (0) | 2022.05.14 |