목록Android (47)
Foggy day
이번 포스팅에서는 Android에서 SplashScreen을 적용하는 방법을 알아보겠습니다. 좀 더 정확하게는 앱 실행 후 launch activity가 나오기 전에 잠시 동안 나오는 window 화면의 UI를 수정하는 내용입니다. 아무 설정을 하지 않는다면 일반적으로 빈 화면이 노출됩니다. 여기서 말하는 SplashScreen은 SplashActivity를 말하는 것이 아닙니다. Android 12부터 사용 가능한 Splash API를 의미합니다. SplashActivity를 사용하지 않는 방법도 있지만, 예제에서는 SplashActivity와 SplashScreen을 둘 다 사용하겠습니다. 일반적으로 SplashActivity에서 처리해야 하는 작업들이 있기 때문입니다. 1. Dependency2...
최근 Kotlin으로 만든 Android Native앱을 업데이트 한 후 기존에는 없던 오류가 발생하는 일이 생겼습니다. 원인은 SharedPreference에 저장한 데이터의 형식이 변경됐기 때문입니다. 기존에 apple이라는 key로 int의 값을 저장했습니다. 업데이트 후에는 apple이라는 key의 타입을 Long으로 변경해서 사용했습니다. 개발을 할 땐 앱을 삭제 후 새로 설치하기 때문에 문제가 되는 것은 없었습니다. 하지만 일반 사용자들이 앱을 삭제하거나 데이터를 삭제하지 않고, 바로 업데이트해서 사용하는 경우 SharedPreference에 저장한 apple이라는 값의 type이 달라져서 오류가 발생했습니다. 운영하면서 경험해볼 수 있는 오류였습니다.
이번 포스팅에서는 Android의 접근성 서비스(AccessibilityService)에 대해 알아보겠습니다. 접근성 서비스는 기본적으로 장애가 있는 사용자를 위한 서비스입니다. 하지만 디바이스의 화면을 컨트롤 하기 위해 많이 사용되곤 합니다. Accessibility services should only be used to assist users with disabilities in using Android devices and apps https://developer.android.com/reference/android/accessibilityservice/AccessibilityService AccessibilityService | Android Developers developer.android...
HEX 투명도 HEX 투명도 HEX 투명도 HEX 투명도 00 0% 4F 31% 92 62% ED 93% 03 1% 52 32% A1 63% F0 94% 05 2% 54 33% A3 64% F2 95% 08 3% 57 34% A6 65% F5 96% 0A 4% 59 35% A8 66% F7 97% 0D 5% 5C 36% AB 67% FA 98% 0F 6% 5E 37% AD 68% FC 99% 12 7% 61 38% B0 69% FF 100% 14 8% 63 39% B3 70% 17 9% 66 40% B5 71% 1A 10% 69 41% B8 72% 1C 11% 6B 42% BA 73% 1F 12% 6E 43% BD 74% 21 13% 70 44% BF 75% 24 14% 73 45% C2 76% 26 1..
Android에서 Overlay 기능이 필요할 때가 있습니다. 예를 들어 네비게이션 앱처럼 앱을 백그라운드 상태로 두더라도 화면에 특정 View를 보여주는 것입니다. 이럴 때 사룔하는 것이 Overlay 기능입니다. 다른 앱 위에 우리가 설정한 View를 보여주고, 특정 로직을 수행할 수 있습니다. 이를 위해서는 권한 요청과 Service 클래스를 구현해야 합니다. Overlay를 사용할 때 주의할 것은 앱을 종료시키더라도 Overlay가 같이 종료되는 것은 아니라는 점입니다. 때문에 비즈니스 로직에 따라서 어떠한 경우에 overlay를 종료시킬지, 계속 살려둘지를 잘 설정해야 합니다. 또한 Service만 종료시키는 것이 아니라 View들도 직접 제거해줘야 합니다. 예제에서 구현한 기능 1. Overl..
MediaRecorder 클래스를 사용해서 음성 녹음 기능을 구현해보겠습니다. 1. 권한 추가 2. 녹음 코드 구현 1. 권한 추가 음성 녹음을 위해 Audio 권한과 녹음한 파일을 저장하기 위한 storage 권한을 추가하겠습니다. 그리고 application tag에 android:requestLegacyExternalStorage="true"를 추가 하는 것 또한 잊지 마세요. AndroidManifest ... runtime으로 권한을 요청하겠습니다. ActivityCompat.requestPermissions( this, arrayOf( Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.pe..
안드로이드 fcm을 수신하는 방법을 간략히 정리했습니다. 1. 파이어베이스 2. Android 코드 구현 1. 파이어베이스 Fcm을 수신하기 위해서는 파이어베이스에 등록 작업을 해야 합니다. 사진은 생략하고 처리 해야 할 항목만 나열하겠습니다. - 프로젝트 생성 - google-services.json 파일 다운로드 및 프로젝트에 추가 - 안드로이드 앱 추가 - 앱을 추가한 후에 프로젝트 설정 -> 일반 -> Sha 인증서 추가 sha1 키 발급 방법 https://jinhan38.com/14 Android(안드로이드) - How to get debug/release SHA-1 Sha key is needed when we use api like google and kakao and so on. So, ..
Android studio에서 갑자기 [Syntax highlighting has been temporarily turned of because of an internal error] 오류가 발생할 때가 있습니다. Invalidate caches, project clean, Repair IDE, Android Studio 최신 버전으로 업데이트 전부 실행해 봤지만 소용이 없었습니다. * 해결책 보통 이 에러는 특정 파일에서 발생했었습니다. 그래서 해당 파일을 다른데 복사한 후에 에러 나는 파일을 삭제하고, 복사해둔 파일을 다시 집어 넣었더니 해결 됐습니다.
UsageStatsManager 클래스를 사용하기 위해 PACKAGE_USAGE_STATS 권한을 요청해야 했습니다. 1. manifest에 permission 추가 2. 런타임 권한 요청 private fun checkPermissionUsage(): Boolean { val appOps = applicationContext .getSystemService(APP_OPS_SERVICE) as AppOpsManager val mode = appOps.checkOpNoThrow( AppOpsManager.OPSTR_GET_USAGE_STATS, Process.myUid(), applicationContext.packageName ) val granted = if (mode == AppOpsManager.M..
android.permission.SYSTEM_ALERT_WINDOW 권한은 overlay View를 사용하기 위해 필요합니다. 1. manifest 에 permission 추가 2. 런타임 권한 요청 checkPermissionOverlay 함수로 권한을 요청하면 권한 허용 시스템 창으로 이동하게 됩니다. 그리고 다시 화면으로 돌아왔을 때 onActivityResult에서 권한을 허용 했는지 아닌지 확인할 수 있습니다. const val overlayPermission = 100 .... private fun checkPermissionOverlay(): Boolean { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Settings.canDra..