Android📱
-
[Android] Oss-licenses 오픈소스 라이선스 표시하기Android📱/삽질 기록... 2023. 5. 19. 21:59
안드로이드 앱에서 오픈소스 라이선스 보여주기 안드로이드 앱에 설정을 가보면 앱정보에서 오픈소스 라이선스를 볼 수 있는 화면을 보여주는 경우가 많다. 이를 통해서 어떤 오픈소스들을 사용했는지 라이선스를 표시할 수 있게 해주는 것이다. 방법 방법은 간단하다. 구글에서 자동으로 목록을 불러와주는 기능을 제공하기 때문이다. gradle (project) buildscript { dependencies { classpath 'com.google.android.gms:oss-licenses-plugin:0.10.6' } .. } gradle(app) 상단 plugins { id 'com.google.android.gms.oss-licenses-plugin' } 하단 dependencies implementation..
-
[Android] Compose StateAndroid📱 2023. 5. 16. 22:26
Jetpack Compose State 컴포즈를 사용할 때 State는 가장 기본적이고, 중요한 요소이다. State란? State란 앱이 시간이 흐름에 따라서 변화할 수 있는 모든 값이다. 굉장히 광범위한 의미로 디비의 데이터부터 ui에 입력 값까지 모든 것이 state라고 생각할 수 있다. @Composable fun TestScreen() { var text = "test" TextField( value = text, onValueChange = { str -> text = str }, label = { Text(text = "field!") } ) } 대표적인 예로 TextField가 있다. 위 같은 컴포져블을 만들어서 입력을 받아보면 값이 바뀌지 않는 걸 볼 수 있다. 이런 괴상한 움직임이 발생..
-
[Compose] ML kit으로 바코드 읽고, OCR을 해보자Android📱 2023. 5. 4. 22:46
CameraX x Compose x ML kit을 이용한 OCR 구글에서 제공하는 ML Kit에는 다양한 기능들이 있다. 그중 OCR 기능과 바코드 스캔 기능이 존재한다. *OCR이란 Optical Character Recognition의 약자로 광학 문자 인식이라고 해석할 수 있다. 광학 문자 인식(OCR)은 텍스트 이미지를 기계가 읽을 수 있는 텍스트 포맷으로 변환하는 과정이다. 이미지에 있는 텍스트를 인식해서 추출해 내는 기능이라고 생각하면 된다. 이번에 이 기능들을 써야 할 일이 생겨서 예제를 만들어보며 기능을 적용시켜 보았다. 이번에 사용해 볼 기능들을 보면 제일 필요한 것은 카메라이다. 카메라 같은 경우는 CameraX를 사용해 주면 더 수월하게 진행이 가능해진다. 1. dependencies..
-
Android Full Screen 화면 만들기~~~Android📱 2023. 3. 20. 22:42
Android를 사용하다보면 앱에서 터치를 하면 StatusBar와 아래 백버튼과 홈버튼 같은 시스템 UI가 사라지는 인터렉션을 볼 수 있다. 오늘은 이 부분을 구현하는 법을 알아보았다. 이름하야 android Immersivemode..... Immersivemode는 동영상 재생 앱 같은 사용자와의 인터렉션이 적은 앱을 만들때 사용되는 기능이다. 영상을 보고 있을때 필요없는 부분을 제거하고, 더 큰화면으로 영상을 보면 유저가 더 좋아지고, 어차피 영상을 보거나 무언가 하고 있을 때는 상호작용이 적어지니 버튼과 statusBar를 가리는 것이다. 이 부분을 구현할때는 분기처리가 필요하다 Mode Full Screen 모드는 세가지가 존재한다 BEHAVIOR_SHOW_BARS_BY_SWIPE BEHAVI..
-
Gson, Retrofit2 - Enum Class 쓰는 법 (Kotlin, Android)Android📱/삽질 기록... 2023. 3. 10. 10:37
Retrofit은 Enum이 된다 Api 통신을 하다 보면 서버에서 Type으로 Enum을 내려 주는 경우가 많다 문서에 String이라고 쓰여있길래 지금까지 그냥 String으로 받아서 kotlin enum class에 name으로 비교해서 분기를 했었다. data class User( @SerializedName("name") val name: String, @SerializedName("age") val age: Int, @SerializedName("type") val type: String ) enum class UserType { TEACHER, STUDENT } fun getUserTitle() { val user = getUser() if(user.type == UserType.TEACHE..
-
Retrofit DELETE Body 추가하기Android📱/삽질 기록... 2023. 3. 2. 16:16
Retrofit DELETE에 Body 넣기 Retrofit으로 api 삭제 요청을 할 때 DELETE를 사용하게된다. @DELETE("/요청주소") 하지만 Http method DELETE는 Body에 대한 언급이 따로 없어서 보통 빈 값으로 많이 사용을 하기 때문인지 (추정입니다) Retrofit에서 DELETE를 사용할때 @Body를 쓰게된다면 Non-body HTTP method cannot contain @Body or @TypedOutput 를 마주치게 된다. 하지만 개발을 하다보면 DELETE에 Body를 추가해주어야할 상황도 존재하는데 그때는 @HTTP를 사용해주면 된다. @HTTP(method = "DELETE", path = "/요청주소", hasBody = true) 이렇게 작성해주면..
-
[Android] Back 버튼 조절 onBackPressedDispatcherAndroid📱 2023. 2. 21. 01:18
Android Back Button 안드로이드에는 백버튼이 존재한다. 만약 서버 요청, 디비 저장 등 시간이 걸리는 작업을 하는 화면이라서 업 버튼을 없앴다고 하더라도 유저가 백버튼을 눌러 뒤로가기를 실행할 수도 있기 때문에 이를 막거나 요즘 많이 보이는 두 번 눌러야 앱을 종료 시키는 등의 흐름을 수행해야 하는 경우가 있을 수도 있다. 이럴 때 보통 많이 보이는 글은 activity에 onBackPress() 함수를 override 해서 해결하는 내용의 글이 많다. 하지만 실제로 해보면 Deprecated 되어 있는 것을 확인 할 수 있다. Use OnBackInvokedCallback or androidx.activity.OnBackPressedCallback to handle back navigat..