Android WebView 샘플 앱 개발 - 1
·
Android
WebView 샘플 앱 개발 개요 현재 project내 front-end개발 인원에 비해 Android 앱 개발 인원이 부족하여 안드로이드 앱 네이티브 기능이 필요하지 않은 부분은 협의하에 WebView로 구현하여 프로젝트 일정에 부담을 덜어내기로 합니다. Android WebView란 ? 웹 애플리케이션 또는 웹페이지만 클라이언트 애플리케이션의 일부로 제공하려는 경우 [WebView]()를 사용하면 됩니다. [WebView]() 클래스는 Android의 [View]()클래스의 확장으로, 웹페이지를 활동 레이아웃의 일부로 표시할 수 있게 해 줍니다. 탐색 컨트롤이나 주소 표시줄 등 완전히 개발된 웹브라우저의 기능은 전혀 포함되어 있지 않습니다. [WebView]()의 모든 작업은 기본적으로 웹페이지를 표..
Android에서 Firebase Cloud Messaging 테스트 앱 개발 - 1
·
Android
최근 기획하고 있는 앱에서 푸쉬알림 기능이 필요하여 구현한 내용을 공유합니다. Firebase Cloud Messaging 라이브러리를 이용하여 개발했으며, 샘플 앱의 전체 소스코드는 아래의 링크를 통해 확인해주세요. https://github.com/gogoadl/android-fcm-demo GitHub - gogoadl/android-fcm-demo: android firebase cloud message sample android firebase cloud message sample. Contribute to gogoadl/android-fcm-demo development by creating an account on GitHub. github.com 푸쉬알림이란? 푸시 알림은 사용자가 스마트폰..
BroadcastReceiver
·
Android
BroadcastReceiver ? Android 시스템 및 기타 Android 앱에서 브로드캐스트 메시지를 보내거나 받을 수 있습니다 . 이러한 브로드캐스트는 관심 있는 이벤트가 발생할 때 전송됩니다. 예를 들어 Android 시스템은 시스템이 부팅되거나 기기가 충전을 시작하는 등 다양한 시스템 이벤트가 발생할 때 브로드캐스트를 보냅니다. 예를 들어 앱은 사용자 지정 브로드캐스트를 전송하여 다른 앱에 관심이 있을 수 있는 항목(예: 일부 새 데이터가 다운로드됨)을 알릴 수도 있습니다. BroadcastReceiver 등록 방법 // BroadcastReceiver class public class MyBroadcastReceiver extends BroadcastReceiver { private sta..
Android 앱에서 블루투스 마우스 커서 숨기기
·
Android
Android 장치에 블루투스 마우스 장치를 연결하면 화면에 마우스 커서가 표시됩니다. 이 커서를 Android 7.0 이상부터 커서를 숨기거나, 모양을 바꿀 수 있게 되었습니다. 필자의 경우 마우스 커서를 숨기는 기능에 사용했었는데, 이때 사용한 코드를 공유합니다. 블루투스 마우스 커서의 경우 setPointerIcon 메서드를 호출한 뷰 계층에서는 마우스 커서 모양이 변경되는것으로 보이며, 시스템 UI위에서는 기본 마우스 커서가 보이게 됩니다. 아래는 제가 사용했던 코드 일부를 공유합니다. @Override public boolean dispatchGenericMotionEvent(MotionEvent motionEvent) { int index = motionEvent.getActionIndex()..
Duplicate class a.a.a.a found in modules 오류
·
Android
SDK 외부 배포 시 발생한 오류이며 배포한 SDK의 proguard 옵션 설정으로 오류 해결 가능하다. 오류의 원인은 proguard 설정에서 패키지명, 클래스명이 난독화되면서 a.a.a.... 처럼 알파벳 순서대로 패키지명이 생성된다. 이 때 내가 배포한 SDK를 사용하는 유저가 사용하는 다른 라이브러리에서도 이러한 기본 난독화 패키지명을 사용할 경우 두 SDK의 패키지명, 클래스명이 모두 a.a... 등으로 표시되면서 클래스를 찾지 못하게 된다. 이 때 프로가드에서 flattenpackagehierarchy 옵션을 통해 기본 패키지명 앞에 식별가능한 prefix 패키지명을 붙일 수 있다. -flattenpackagehierarchy "com.hyeonwoo.handsome" 이 프로가드 설정은 co..
[Android Studio] Android Studio IDE에서 이미지 리소스 쉽게 얻기
·
Android
개요 안드로이드 스튜디오 IDE에서 쉽게 아이콘 이미지를 얻어오는 방법을 찾아서 포스팅합니다. 저같은 경우 주로 사용되는 픽토그램 이미지를 https://material.io/ 사이트를 자주 이용했었는데요, IDE 내에서도 쉽게 이미지 리소스를 검색하고 프로젝트에 적용할 수 있는 좋은 방법이 있습니다. Material Design Build beautiful, usable products faster. Material Design is an adaptable system—backed by open-source code—that helps teams build high quality digital experiences. material.io 먼저 안드로이드 스튜디오 상단 바의 Tools > Resource..
[Android] AAR Library 개요 및 모듈 생성
·
Android
AAR 라이브러리 개요 아래는 Android Developers 공식 문서에 소개된 AAR 라이브러리에 대한 설명입니다. Android 라이브러리는 구조적으로 Android 앱 모듈과 동일합니다. Android 라이브러리에는 소스 코드, 리소스 파일, Android 매니페스트를 비롯하여 앱을 빌드하는 데 필요한 모든 항목이 포함될 수 있습니다. 하지만, 이 라이브러리는 기기에서 실행되는 APK로 컴파일되는 대신 Android 앱 모듈의 종속 항목으로 사용할 수 있는 Android 보관 파일(AAR)로 컴파일됩니다. JAR 파일과 달리, AAR 파일은 Android 애플리케이션에 다음과 같은 기능을 제공합니다. AAR 파일에는 Android 리소스 및 매니페스트 파일이 포함될 수 있습니다. 이 파일에서는 ..
[Android] ExoPlayer2 PlayerControlView가 일정시간 후 사라질 때
·
Android
ExoPlayer2의 PlayerControlView가 일정시간이 지난 후 사라지는 현상이 있었다. 원인은 매우 간단했는데, 버그로 판단해서 버전도 변경해보고 여러가지 시도를 했었다. xml 파일의 PlayerControllerView에 아래의 코드를 추가시켜준 후 문제가 발생하지 않았다. app:show_timeout="0" Reference : https://stackoverflow.com/questions/51579006/exoplayer-show-playercontrolview-throughout-playback-of-audio-clip
[Android] 디버깅 중 크래시로 종료되었을 때 로그 보는법
·
Android
안드로이드 앱 개발 중 JNI측에서 발생한 크래시의 경우 크래시가 발생하면서 앱이 종료되고 다시 시작되는데, 이 때 크래시가 발생한 순간의 로그를 안드로이드 스튜디오 로그캣에서 확인할 수 없을 때가 있다. 이 로그를 확인하는 방법을 간단하게 알아보자. 1. 로그를 추출할 기기가 연결하기 2. adb shell bugreport > [로그저장위치][log.txt] 텍스트파일을 확인하면 JNI측에서 발생한 로그를 확인할 수 있다.
[Android Studio] 안드로이드 프로젝트 병합, 한 프로젝트에서 빌드 변형 구성(Flavor)
·
Android
기존 안드로이드 프로젝트에서 free, paid Version 구성 또는 인앱 결제 모델, 구독 결제 모델을 나누는 방법으로 좋은 Flavor에 대해서 알아보겠습니다 ㅎㅅㅎ Flavor란 무엇일까? Flavor이란 Gradle에서 제공하는 옵션으로, Flavor를 통해 한 프로젝트에서 여러개의 빌드 버전을 생성할 수 있습니다. 필자는 안드로이드 개발 중 구독, 인앱 결제를 제외하고 같은 기능을 수행하는 프로젝트를 병합하기 위해 사용했습니다. Flavor를 통해 여러 빌드를 생성하는 방법 applicationIdSuffix는 프로젝트 패키지 마지막에 설정될 이름을 설정할 수 있습니다. 이 옵션을 통해 구글 플레이에 각각 다른 패키지 명으로 앱을 추가할 수 있습니다. manifestPlaceHolder는 A..