본문 바로가기

안드로이드/코틀린

(32)
[AOS] Custom QR Reader 만들기 일전에 qr reader에대해 가볍게 포스팅을 작성한 적이 있는데 테스트 목적으로 작성되다보니 부족한 부분도 많고 업데이트된 내용들이 있어서 새로 포스팅을 작성합니다. zxing에서 제공하는 라이브러리를 사용해 구현하는데 기본적인 화면은 아래 사진과 같습니다. github 에 가시면 샘플 프로젝트를 다운받아서 실행시켜볼 수 있는데, 구현 가능한 기능들이 정리되어 있어 한번 다운 받아서 실행시켜 보시고 코드 분석 후 필요한 기능을 구현하시면 좋을것 같습니다. 해당 포스팅에 담길 내용 네이버 렌즈와 같은 QR Reader 앱을 구현하는데 필요한 사항들입니다. - 투명한 Status bar - 연속 QR 인식 - QR 화면 Custom - 실행중 카메라 전환 기본 QR 구현 AndroidManifest.xml..
[AOS] Mopub Migration MAX ( 광고 SDK ) 기존에 애드몹과 애드핏을 사용중이였지만 글로벌 출시를 하면서 외국인 유저를 대비해 Mopub 광고 Sdk를 연동했었습니다. ( 카카오 애드핏 광고의 경우 국내 유저 대상으로만 권고하고 있습니다. ) 외국인 유저가 많지 않아 애드몹으로도 커버가 될 수 있지만 광고가 부족해 실패가 떨어질 경우 Mopub을 호출했습니다. 그러다 Mopub이 AppLovin에 인수되어 'MAX'라는 이름으로 변경됐다는 소식을 듣고 변경작업 진행했습니다. ※작성일 기준 (22.2.15)에는 Mopub Delveloper에 접속은 가능합니다. | 구현 과정 1. AppLovin 계정이 없는 경우 새로 가입하고 2. MAX 광고 Unit을 생성하고 3. Api key를 발급 받는 | Unit 생성 회원 가입후 로그인을 하고 'Med..
[AOS] 하단 네비게이션 배경색 변경 안드로이드 유저에게 익숙한 하단 네비게이션의 색상을 변경해 조금 더 자연스럽게 연출할 수 있습니다. 작은 부분이지만 일부 유저에겐 감동(?)을 줄수 있습니다. 아래 예시 사진을 보면 제가 개발한 '식물일기'입니다. 안타깝게도 제 앱에도 아직 적용하지 못했네요.. 지금 한창 디자인 개선중에 있는데 언능 출시해야하는데 맘처럼 쉽지 않네요 ㅠ 코드 구글링 했을때 배경색 바꾸는 코드들은 많았는데 버튼 색상 변경하는 코드들이 버전을 타는 이슈들이 있었는데 아래 코드는 minSDk 21인 앱에도 문제 없지 작동했습니다. window.navigationBarColor = ContextCompat.getColor(this,R.color.white) // 배경색 변경 WindowInsetsControllerCompat(..
Webview 파일 다운로드 구현하기 웹뷰 관련 포스팅 Webview내 window.open 대응 하기 ( 새창 열기 에러 ) Webview 이미지 업로드 구현하기 Webview내 카카오톡 공유하기 에러 / 해결방안 Webview 쿠키 매니저 다루기 Webview 설정값 웹뷰에서 다운로드 기능을 별도로 구현해야 합니다. webview.setDownloadListener { url, userAgent, contentDisposition, mimetype, contentLength -> //.. 구현 } 위 코드 처럼 웹뷰에 리스너를 추가해 다운로드 타입으로 설정된 버튼등을 클릭했을때 별도 처리를 해야합니다. 엑티비티에서 사용중인 webview에 설정해도 되지만 웹뷰를 커스텀뷰로 생성해서 공통적으로 사용하면 설정 값이 변경되거나 추가할때 편리..
Webview 이미지 업로드 구현하기 ( 카메라, 갤러리 ) 웹뷰가 아닌 네이티브만 작업하시는 분들은 제 블로그에 다른 포스팅을 참고해주세요 ! ( 그리고 해당 포스팅은 minsdk 21, Kotlin 기준으로 작업됐습니다. ) [안드로이드/코틀린] 카메라와 갤러리에서 이미지 가져오기 해당 포스팅은 제 블로그 조회수에 상당수를 기록했습니다. 그만큼 앱을 개발하는데 있어 이미지는 필수사항이라고 해도 과언이 아닙니다. 많이 부족함에도 불구하고 찾아주셔서 감사합니다. superwony.tistory.com | AndroidManifest.xml 권한 설정 카메라 파일을 읽고 쓰기 위해 3가지 권한을 사용합니다. 카메라로 찍은 사진을 onActivityResult로 바로 가져오지 않고, 빈 파일을 생성해서 카메라로 찍은 사진을 저장하기 때문에 저장소 권한이 필요 합니다...
[Android/Kotlin] 커스텀 뷰로 생산성 증가시키기 시간표와 같이 일정 패턴으로 반복된 뷰들을 많이 사용해야하고 그로 인해 코드가 길어지고 복잡해 진다면 커스텀 뷰를 고려해보는게 좋습니다. 커스텀뷰 사용이 불편하시다면 Recyclerview를 이용하는 것도 방법입니다. ( 보여줘야할 뷰들의 갯수가 불규칙적일 경우 recyclerview가 더 적합할 것 같습니다. ) >> 작업이 필요한 View의 형태 개발중인 달력뷰에 사용중인 투두 리스트의 리스트로 체크 박스를 클릭하면 각 체크 박스에 맞는 이미지가 채워지고 텍스트에 줄이 생기도록 개발해야 합니다. Recyclerview만으로도 개발은 가능하지만 다른 화면에서 재사용할 예정이라 커스텀뷰를 활용 했습니다. 나아가 attrs를 활용해 xml 생성시 주어진 옵션으로 각 색과 이미지가 셋팅 되도록 했습니다. >..
[안드로이드/Kotlin] WorkManager를 활용한 백그라운드 작업 Android Jetpack의 일부로 백그라운드 작업시 구글에서 권장하는 API입니다. ( API 14이상 모두 지원 ) 기존에는 서비스를 생성하거나, 브로드캐스트 리시버를 사용해서 개발자가 원하는 시점에 앱을 깨워 작업할 수 있었습니다. 하지만 Target SDK 26이상부터는 제약으로 인해 WorkManager를 활용해야만 원활한 백그라운드 작업이 수행 가능합니다. 타겟이 이전인 예전 프로젝트나, 스토어에 출시하지 않는다면 기존 방법들도 사용 가능합니다. ( 현재 마켓 Target SDK는 29가 아니면 출시 불가 ) >> WorkManager를 활용한 경우 - 알람 매니저로 특정 시점에 서버 통신의 결과를 Noti로 보여줘야 하는 경우 ( 버전별 알람 매니저 적용법 ) - 알람 매니저로 특정 시점에..
[Android/Kotlin] Transformations를 사용해 Livedata 활용하기 Livedata는 양방향 데이터 바인딩이나 Transformation과 함께 쓸수록 더 유용하게 사용할 수 있습니다. Transformation은 하나의 Livedata가 변경될때마다 다른 Livedata를 변경해줄때 사용하면 유용합니다. >> Transformations.map ( 공식문서 ) 첫번째 인자로 Livedata 넘겨준다. 두번째 인자 리턴 형태가 있는 함수를 넘겨주는데 반환 타입에 제한은 없다 ( 리턴된 타입이 String이면 Livedata으로 반환된다.) var name = MutableLiveData() var displayName = Transformations.map(name){ mapName -> "우리${mapName}" } 디비에 저장된 이름을 불러오는 'name' 변수가 있..