[Kotlin & Android] 코틀린 나누기 소수점
·
개발/Kotlin & Android
코틀린언어에서 소수점 표현은 어떻게 되며, 소수점 자리수 표현은 어떻게 하는지 알아보자. 1. 나눗셈 코틀린에서 정수 값 두 개를 나누게 되면 몫에 소수점 표현이 안된다. var result = 10 / 4 // result: 2 소수점을 표현하기 위해선 두 정수 중 하나를 실수형으로 만든다. var result = 10.0 / 4 // result: 2.5 2. 소수점 자리수 소수점 2자리까지 표현하고 싶을 땐 어떻게 하면 될까? var result = String.format("%.2f", 10.0 / 4) // result: 2.50 이렇게 하면된다. var result = String.format("%.2f", 10.0 / 6) // result: 1.67 반올림도 된다.
[Kotlin & Android] SimpleDateFormat 형식 문제 해결 (TimeZone)
·
개발/Kotlin & Android
애뮬레이터에서 SimpleDateFormat 을 사용하여 날짜 형식을 출력했을 때, 원하는 값이 나왔다. 그런데, 내 폰으로 빌드해서 출력했을 땐 날짜가 다르게 출력되는 것이였다. 어떤 문제였는지 알아보자. 1. 문제 var dateFormat = SimpleDateFormat("hh:mm a") var time = dateFormat.format(totalMs) 밀리초를 date형식으로 변환하고자 하였다. 애뮬레이터에서는 오후3시가 출력되었고, 휴대폰으로 직접 빌드를 해보니 오전 1시가 출력되었다. 처음으로, 날짜 형식에 문제가 있나? 생각하고 패턴을 다시 확인해보았다. Letter Date or Time Component Presentation Examples y 년 Year 1996; 96 M 월 ..
[Kotlin & Android] 코틀린 for 문 사용법
·
개발/Kotlin & Android
코틀린에서의 for문은 다른 언어와 다른 부분이 많기 때문에 좀 더 자세히 알아보기 위해 정리를 해보겠다. 1. in, .. for (i in 1..3){ Log.d("MainActivity", "i: $i") } D/MainActivity: i: 1 D/MainActivity: i: 2 D/MainActivity: i: 3 1부터 3까지 순서대로 출력한다. 2. in, until for (i in 1 until 3){ Log.d("MainActivity", "i: $i") } D/MainActivity: i: 1 D/MainActivity: i: 2 ..이 아닌 until을 사용하게 되면 마지막 3은 포함되지 않는다. 3. step for (i in 1..5 step(2)){ Log.d("MainAct..
[Kotlin & Android] 코틀린 전역 변수 선언 (다른 엑티비티 변수 사용하기)
·
개발/Kotlin & Android
개요 다른 Activity 에서 사용되고 있는 변수를 가져와야하는 경우가 있다. 어떤 방법으로 사용할 수 있는지 확인해보자. companion object // SecondActivity Class companion object{ var testValue = "Hi" } 자바의 static 과는 다르게 class 안에 companion object를 선언하여 변수를 내부에 선언한다. 정확히 따지면 static과 companion object는 같다라고 할 수 없다. // MainActivity Log.d("MainActivity", SecondActivity.testValue) 다른 클래스에서 해당 변수를 호출할 수 있다. 마무리 class에 단 하나의 companion object만 존재할 수 있다. ..
[Kotlin & Android] 호출한 엑티비티에서 값 받기(startActivityForResult 함수 deprecated)
·
개발/Kotlin & Android
개요 Activity 간 값을 전달하거나 받아야 하는 경우가 있다. 값을 전달하는 방법은 Intent에 putExtra로 값을 전달할 수 있다. 그러면 호출한 엑티비티가 종료될 때 해당 엑티비티에서 처리한 값은 어떻게 받을 수 있을까? startActivityForResult 함수를 사용하여 값을 받을 수 있었지만 deprecated 되어 사용을 권장하지 않는다. 그러므로 registerForActivityResult 함수를 통해 콜백을 등록하는 방법을 사용해야한다. 어떤 방법인지 살펴보자. 콜백 등록 private lateinit var result: ActivityResultLauncher result = registerForActivityResult(ActivityResultContracts.Sta..
[Kotlin & Android] Android 지속적인 음성인식 기능 구현 (SpeechRecognizer)
·
개발/Kotlin & Android
개요 지난 포스팅때 Foreground 서비스와 SpeechRecognizer API에 대해서 알아보았다. Google 에서 제공하는 SpeechRecognizer API는 연속해서 음성인식을 할 수 있는 기능이 따로 없으며 무료 API 이기 때문에, 제한적인 부분이 많다. 이번 포스팅에서는 지난 포스팅때 다뤘던 두 기능으로 음성인식이 끝날 때 마다 다시 시작하는 방식을 사용하여 백그라운드에서 지속적인 음성인식을 하는 방법을 알아보겠다. 기능의 자세한 내용은 지난 포스팅을 참고하길 바란다. 1. 동작 원리 btn_start = findViewById(R.id.btn_start) btn_start!!.setOnClickListener(View.OnClickListener { Toast.makeText(th..
[Kotlin & Android] Android SpeechRecognizer API 구현하기 (음성을 텍스트로 변환 - STT변환)
·
개발/Kotlin & Android
개요 안드로이드에서 제공하는 SpeechRecognizer API를 사용하여 인식된 음성을 텍스트로 변환하는 작업을 수행해보겠다. 1. Layout 구성 결과를 출력하는 TextView와 음성인식을 실행하는 Button을 구현한다. 2. Manifest 파일에 권한 추가 SpeechRecognizer API는 Google 서버를 이용하기 때문에 INTERNET 권한이 필요하다. 음성인식을 하기위해서 마이크 권한이 필요하다. API 30부터는 queries 속성을 추가하여야 사용할 수 있다. 3. 권한 요청 // 권한 요청 if (Build.VERSION.SDK_INT >= 23) { ActivityCompat.requestPermissions( this, arrayOf( Manifest.permissio..
[Kotlin & Android] 포그라운드 서비스 (Foreground Service)
·
개발/Kotlin & Android
슬립나우: 수면시간 추천 및 계산 슬립나우: 수면시간 추천 및 계산 - Google Play 앱 슬립나우로 적절한 시간에 알람을 맞춰 개운하게 일어나세요. play.google.com 개요 여러 프로세스를 실행하거나 앱이 꺼져도 계속해서 어떠한 동작을 실행 시키고 싶을 때가 있다. 그럴 때 사용하는 기능이 포그라운드 서비스다. 그럼 포그라운드와 백그라운드의 차이는 무엇인가? 포그라운드 vs 백그라운드 1. 포그라운드(Foreground) - 죽지않는 서비스 포그라운드는 사용자가 인지할 수 있는 작업을 수행한다. 포그라운드 서비스를 실행하기 위해서는 상태바 알림을 꼭 띄어야만 한다. 백그라운드와는 다르게 메모리 부족 시에도 시스템에서 강제로 서비스를 종료하지 않는다. ex) 앱 다운로드, 노래 재생 등 2..