원인:안드로이드의 오디오 메모리 용량은 1mb라서 oom크래시나는거(라고 스택오버플로우에서 말함)
해결:
싱글톤처럼 한개만 유지하면서,완료되면 추가
함수밖에(귀찮아서 파일 내 전역으로(임포트 바로밑)에 선언했음)
private var toneGenerator:ToneGenerator?=null
선언후
fun beep( mediaFileRawId: Int,i : Int) {
try {
if (toneGenerator == null) {
toneGenerator = ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100)
}
toneGenerator!!.stopTone();
toneGenerator!!.startTone(mediaFileRawId, 200)
val handler = Handler(Looper.getMainLooper())
handler.postDelayed(Runnable {
if (toneGenerator != null) {
toneGenerator!!.release()
toneGenerator = null
}
}, 200)
} catch (e: Exception) {
}
}
i는 볼륨조절한다고 넣어둔건데 빼도됨,아마 stopTone도 뺴도될거같은데,안돼서 막넣어보다가 넣어둔건데 빼기귀찮아서 제거안함
사용시엔
beep(ToneGenerator.TONE_CDMA_ALERT_AUTOREDIAL_LITE,300)
핸들러는
import android.os.Handler
import android.os.Looper
'기타개발' 카테고리의 다른 글
인텔리제이의 새로만들기에 groovy 클래스 만들기가 생겼을때 (0) | 2024.08.25 |
---|---|
리눅스(우분투)설치와 설치후 해야할것 (0) | 2024.07.02 |
리팩터링 (0) | 2024.05.28 |
chrome devtools에서 form data가 보이지않을때 (0) | 2023.02.08 |
인텔리제이에서 힙메모리 변경이 되지않을때 (0) | 2023.02.07 |