Vibrator 객체를 이용하여 진동을 발생시킨다.
<uses-permission android:name="android.permission.VIBRATE"/>
주요 메서드로
vibrate(android.os.VibrationEffect)
이 있다.
val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { // API Level 31에서 VibratorManager로 변경됨
val vibratorManager = this.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
vibratorManager.defaultVibrator;
} else {
getSystemService(VIBRATOR_SERVICE) as Vibrator
}
현재 API 레벨에선 Vibrator Manager를 통해 생성한다.
// 1. 진동 발생(일회성)
btn1.setOnClickListener {
Log.d(TAG, "onCreate: ${vibrator}")
// deprecated Build.VERSION_CODES.O
if(Build.VERSION.SDK_INT >= 26 ) {
vibrator.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
}else{
vibrator.vibrate(500);
}
}
vibrator.vibrate(500)
와 같이 시간만 주고 진동세기를 지정하지 않는 것은 현재 deprecated 되었다.
btn4.setOnClickListener {
vibrator.cancel()
}
패턴 진동은 VibrationEffect를 써서 구현한다.
// 2. 패턴 진동 발생(일회성)
btn2.setOnClickListener {
val vibratorTiming = longArrayOf(100, 400, 100, 100, 100, 100)//대기 진동 대기 진동 대기 진동
val effect = VibrationEffect.createWaveform(vibratorTiming, -1)//-1은 반복이 없음을 의미
vibrator.vibrate(effect)
}
// 3. 패턴 진동 반복
btn3.setOnClickListener {
val vibratorTiming = longArrayOf(100, 400, 100, 100, 100, 100)
val effect = VibrationEffect.createWaveform(vibratorTiming, 2)
vibrator.vibrate(effect)
}
0은 무한반복
-1은 한번만
양수는 해당 인덱스부터 끝까지를 계속 반복한다
ex) 100 200 300 200 100 이고 repeat를 1을 주면 100 200 300 200 100 200 300 200 100 ..... 와 같이 반복한다
진동세기도 패턴마다 조절할 수 있다. VibratorEffect에 인자로 전달하면 된다.
// 5. 패턴 진동 세기 조절 (일회성)
btn5.setOnClickListener {
val vibratorTiming = longArrayOf(100, 400, 100, 100, 100, 100)
val vibratorAmplitudes = intArrayOf(0, 50, 0, 200, 0, 200)
val effect = VibrationEffect.createWaveform(vibratorTiming, vibratorAmplitudes, -1)
vibrator.vibrate(effect)
}
Ringtone클래스를 이용해 원하는 음악파일(wav, mp3)등을 res 폴더의 raw 폴더에 넣고 실행할 수 있다.
// 6.Ringtone
btn6.setOnClickListener {
if (btn6.text == "Ringtone_start") {
ringtone.play()
btn6.setText("Ringtone_stop")
} else {
ringtone.stop()
btn6.setText("Ringtone_start")
}
}
val uriRingtone2 = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
//val uriRingtone2 = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM)
val ringtone2 = RingtoneManager.getRingtone(this, uriRingtone2)
// 7.default_bellsound_start
btn7.setOnClickListener {
if (btn7.text == "default_bellsound_start") {
ringtone2.play()
btn7.setText("default_bellsound_stop")
} else {
ringtone2.stop()
btn7.setText("default_bellsound_start")
}
}
유익해요