하루에 0.01%라도 성장하자
반응형

안드로이드 10

Livedata setValue와 postValue 그리고 Cannot invoke setValue on a background thread

안드로이드를 개발할 때 요즘 많이들 livedata를 사용한다. state관리에도 용이하고 UI를 즉각 반영할 때도 좋다 livedata를 다루는 여러 가지 기술도 있지만 오늘은 setValue postValue 에 대한 기록을 남기려고 한다. 내가 겪은 코드는 아래와 같다 Cannot invoke setValue on a background thread 백그라운드 쓰레드에서 setVlaue를 호출 할 수 없습니다 :( setValue setValue는 MainThread에서 동작하는 방식이다. // viewModel private val _textStr: MutableLiveData = MutableLiveData() val textStr: LiveData get() = _textStr ... _tex..

Develop/Android 2022.11.10 (1)

Android Image Multi Select in Gallery 갤러리에서 사진 여러개 선택

안드로이드 앱을 사용하다 보면 intent를 이용해서 사진을 가져오는 경우가 많다. 사진을 가져올때는 하나만 가져올 수도 있고, 여러 사진을 셀렉트 해서 가져올 수 있다. Intent.ACTION_GET_CONTENT 를 사용하면 최근 사용한 이미지를 선택 할 수 있다. 이때 갤러리를 들어가지 않고 바로 데이터를 선택할 수 있고, 갤러리에 들어가서 하나만 선택해서 나올 수 있다. 우선 먼저 코드를 볼까 private fun bindingAddImageButton() { binding.addImageButton.setOnClickListener { when { ContextCompat.checkSelfPermission( this, android.Manifest.permission.READ_EXTERNAL..

Develop/Android 2022.07.20

Android - 코로나 정책

최근에 코로나 정책 때문에 구글 플레이 스토어 배포에 아주 애를 먹었다. 구글 코로나 관련 정책 안내 우선 이 업데이트는 2021년 8월 17일에 최종 업데이트 되었다. 구글 콘솔 개발자 계정에 들어가면 새로운 앱 컨텐츠 항목이 생겼는데, 이렇게 생겼다. 즉 출시한 앱이 코로나19 관련 앱인지 확인하는 것. 현재 개발 중인 앱은 코로나 백신 접종자를 대상으로 항체검사를 진행해 항체가 있는지 여부를 확인해주는 기능과 메뉴를 제공하려고 했는데, 해당 메뉴에 '코로나19' 라는 문구가 들어가다 보니 리젝을 받았다 .. 그러면서 알게된 코로나 정책. 즉 코로나19 가지고 뭔가 기능을 제공하면 리젝이구, 코로나19 관련된 뉴스기사를 제공하거나 '코로나19'가 메인이 아닌 '코로나19 시대에 어울리는 취미' 같은 ..

Develop/Android 2021.11.09

Android - Data Binding

Kotlin 을 이용한 Data Binding을 위한 셋팅 데이터 바인딩은 넓은 호환성을 위해 Android 2.1 이상(API level 7)에서 사용할 수 있도록 되어 있음. ( 엄청난 호환성.. ) 1. 세팅 plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' } .... dataBinding{ enabled = true } Module level의 Gradle에 위와 같은 설정을 해준다. MainActivity에 버튼을 하나 만들어서 로그를 출력하는 형태로 개발 activity_main.xml 의 경우 기본 설정되는 layout을 감싸는 형태로 layout을 써줘야 한다. 말이 이상한데 아래 코드를 보고 확인 위 ..

Develop/Android 2021.04.08

Android - TYPE_STEP_COUNTER, TYPE_STEP_DETECTOR

SensorManager를 이용한 걸음 수 체크를 하는 앱을 개발하기 위해서 두가지 센서에 대한 특징 파악이 필요하다. TYPE_STEP_COUNTER 특징으로는 핸드폰이 켜진순간 부터 현재까지 누적된 카운트를 보여준다. 따라서 서비스(Service)를 이용한 백그라운드 앱실행을 하면서 센서 수치를 측정될 때마다 측정할 필요는 없다. 센서가 자동으로 누적되기 때문. 다른 특징으로는 핸드폰을 껐다가 다시 키면 수치가 0으로 초기화 된다. 다만 하루치의 걸음 수를 측정하려면 계산이 필요하다. 계산하는 법은 1. 앱이 실행되면 현재 센서 수치를 저장한다. ( previousStep ) 2. 00시나 23시 59분에 센서 수치를 한번 더 측정한다. ( currentStep ) 3. 현재수치에서 저장한 수치를 뺀..

Develop/Android 2020.12.27

Kotlin ) 웹 뷰를 이용한 사이트 이동, 검색앱 만들기.

간단한 어플이다. WebView를 이용해서 검색앱을 만드는 것이다. 다만, 나는 코틀린으로 했다는 것에? 살짝 의미를 둔다. 그리고 코틀린으로 해보니... 너무 코드가 간결해지고 쉬워졌다. 개발된 기능 앱을 켰을때 WebView를 이용해서 메인 사이트를 보여준다. 옵션 메뉴를 이용한 저장된 사이트 이동. 암시적 인텐트를 이용한 전화, 문자, 이메일 메뉴 만들기 일부 소스코드 [ 웹뷰 소스코드 ] webView.apply { settings.javaScriptEnabled = true // 자바스크립트가 잘 동작하도록 설정 webViewClient = WebViewClient() // 웹뷰에서 페이지가 뜨도록, 설정 안해주면 기본 브라우저가 실행됨. } webView.loadUrl("www.naver.co..

Develop/Android 2019.07.03

Android 변수의 종류

변수는 코딩을 하면서 가장 많이 사용된다. 하지만 내가 사용하고 있는 변수의 명칭과, 해당 변수의 생성되는 시기와 사라지는 시기를 정확하게 알지 못한다고 생각했다. ( 사실 그동안 그걸 알아야하는 난이도 있는 개발을 못했다는게 맞을지도.. ) 그래서 정리겸 글을 남긴다. 변수 종류 개념 인스턴스 변수 클래스의 인스턴스를 생성할 때 만들어진다. 객체를 여러개 생성하면 각각의 저장공간이 만들어진다. static 변수 변수 앞에 static을 붙여서 사용한다. 객체를 생성하지 않아도 사용할 수 있다. 변수를 공유하고 있기 때문에, 다른객체에서 이 변수값을 변경하면 변경된 값으로 계속 유지 된다. 지역 변수 메소드, 생성자 안에서 사용되며 그 안에서만 사용이 가능하고 메소드의 실행이 끝나면 자동으로 사라진다. ..

Develop/Android 2019.05.02

Notification Skill #1

Notification에 대한 내용을 찾다보면 대부분 2016년 이전 내용이 많다. 그 이유는 아마 그때 Notification에 대해서 핫하게 기술 연구(?)가 이루어졌기 때문이 아닐까 하지만 현재는 Firebase라는 좋은 프레임워크가 있기 때문에 잘 사용 안해서 관련하여 더이상 연구문서가 없을 수도 있고, 아니면 이미 알만한 사람은 다 알기 때문에 굳이 다시 작성하지 않는 이유일까... 이전 데이터를 찾아서 그대로 가이드를 따라 진행하면 에러도 발생하지 않고 알람도 발생하지 않는다. ( 즉 정상 동작 하지 않는다. ) 이유는, NotificationCompat.Builder를 만들때 이전 버전에서는 context만 넣어주면 되었다. 하지만 그 이상의 버전은 channelId라는 것을 넣어주어야 동작..

Develop/Android 2019.04.30

네비게이션바 숨기기

찾아본 이유는 별거 없다.... 플레이어로 전체 화면 재생을 할때 네비게이션바가 영역을 차지하는 것이 싫었을 뿐 public void hideNavigationBar() { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility( // Set the content to appear under the system bars so that the // content doesn't resize when the system bars hide and show. // Hide the nav bar and status bar View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERS..

Develop/Android 2019.04.30
반응형