본문 바로가기

안드로이드

안드로이드 : 진동과 사운드

진동

진동을 위한 인스턴스 생성
val vib = getSystemServive (Context.VIBRATOR_SERVICE) as Vibrator

안드로이드 누가 버전 (N_MR1) 이후
vib.vibrate(VibrationEffect.createOneShot(시간, 효과))
안드로이드 누가 버전 까지
vib.vibrate(밀리초 단위의 정수)

진동은 권한이 있어야 수행됩니다.

권한 설정은 AndroidManifest.xml 파일의 application 태그 외부에서 설정

사운드 재생
시스템이 제공하는 사운드 - RingTone
음악 파일 재생 MediaPlayer 클래스
사운드 파일이나 동영상 파일의 경우는 사이즈가 커서 리소스로 관리하기에는 부담이 됩니다.

이런 파일들은 assets라는 디렉토리에 저장해서 관리
리소스는 애플리케이션이 시작 될 때 메모리에 로드가 되는 자원이고 assets 는 사용 할 때 메모리에 로드가 되는 자원입니다.

 

 

    <uses-permission android:name="android.permission.VIBRATE" />
package kr.co.tjoeun.app1028

import android.content.Context
import android.media.MediaPlayer
import android.media.Ringtone
import android.media.RingtoneManager
import android.net.Uri
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.VibrationEffect
import android.os.Vibrator
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn1.setOnClickListener(View.OnClickListener {
            // 진동 객체를 생성
            val vib = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
            // 누가 버전 이후
            if(Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) {
                vib.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE))
            } else {
                vib.vibrate(1000)
            }
        })

        btn2.setOnClickListener(View.OnClickListener {
            // 시스템 사운드 재생
            val notification: Uri = RingtoneManager.getDefaultUri(
                RingtoneManager.TYPE_ALARM)
            val ringtone = RingtoneManager.getRingtone(this, notification)
            ringtone.play()
        })

        btn3.setOnClickListener(View.OnClickListener {
            val player:MediaPlayer
                    = MediaPlayer.create(this, R.raw.buttoneffect)
            player.start()
        })

    }
}