프로그래밍 80

[android] Android 12 Vibrator Pattern(진동 패턴) VibratorManager VIBRATOR_MANAGER_SERVICE

안드로이드 12 (target 31) 에서 새롭게 VIBRATOR_MANAGER_SERVICE가 추가되어 기존에 사용하던 VIBRATOR_SERVICE가 deprecated 되었다. VibratorManager 선언하기 (버전 분기) val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { val manager = getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager manager.defaultVibrator } else { @Suppress("DEPRECATION") getSystemService(Context.VIBRATOR_SERVICE) as Vibrator }..

[android] apk decompile (안드로이드 apk 디컴파일)

신규 프로젝트를 진행한 뒤, 난독화가 잘 되었는지 확인하기 위해서 디컴파일을 진행해 보았다. 디컴파일은 평소에 자주 하는게 아니기 때문에 정리차원에서 포스팅을 해두자. apktool을 이용하여 디컴파일을 하는 방법도 있지만, 나는 오래전에 사용해 보았던 dex2jar를 이용하여 간단하게 디컴파일을 할 것이다. 1. 먼저 아래 링크에서 dex2jar를 다운 받는다. https://sourceforge.net/projects/dex2jar/ dex2jar Download dex2jar for free. Tools to work with android .dex and java .class files. Mirrors: * https://bitbucket.org/pxb1988/dex2jar * https://gi..

[Android 12] Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. 위와 같은 메시지가 발견되었다면 PendingIntent를 사용하는 구문에서 오류가 발생했을 가능성이 높다. 나의 경우 foregroundS..

[android] Kotlin ArrayList SharedPreferences json data (feat. Gson)

▣ Model data class Person(val name: String, val age: Int) ▣ Read val preferences = getSharedPreferences("pref", Context.MODE_PRIVATE) val jsonData = preferences.getString("person", "") val gson = Gson() val token: TypeToken = object : TypeToken(){} val list: MutableList? = gson.fromJson(jsonData, token.type) ▣ Write val preferences = getSharedPreferences("pref", Context.MODE_PRIVATE) val jsonDat..

Android 11 Full Screen

Android Full screen 처리하는 방식이 바뀌었는지 이전 코드가 Android 11 폰에서 제대로 동작하지 않더라. 아래 Android developer 사이트를 참고하자. https://developer.android.com/training/system-ui/immersive?hl=ko 전체 화면 모드 사용 설정 | Android 개발자 | Android Developers 동영상, 게임, 이미지 갤러리, 책, 프레젠테이션 슬라이드 같은 콘텐츠를 이용하기에 최적의 환경은 전체 화면입니다. 이 페이지에서는 전체 화면에서 사용자를 콘텐츠에 더욱 몰입하게 하는 방 developer.android.com https://developer.android.com/guide/topics/display-cu..

[android] Dp to Px, Px to Dp

DisplayMetrics를 통해서 density와 densityDpi 값을 구해보면 val density = resources.displayMetrics.density val densityDpi = resources.displayMetrics.densityDpi 기준이 되는 mdpi로 보면 densityDpi = 160 이므로, density = 160 / 160 = 1 즉, 1dp = 1px 그렇다면 density = densityDpi / 160 이라는 공식으로 densityDpi가 440 이라면 density는 2.75가 나온다. ※ Px to Dp val samplePx = 300 val density = resources.displayMetrics.density val value = (samp..