프로그래밍/Android 131

[안드로이드] 예제로 알아보는 바인드된 서비스 (Bound Service)

바인드된 서비스(Bound Service)는 서비스와 다른 안드로이드 컴포넌트들 (Activity, Fragment, Service)간에 서버와 클라이언트같은 관계를 구현할 수 있어 IPC(프로세스간 통신)를 가능하게 한다. 이번에 이를 이용해서 구현할 예제는 앱의 설치상황을 관찰하는 서비스이다. 게임 다운로드 버튼을 누르면, 구글 플레이가 실행되고 구글플레이 설치 진행 상황에 따라 버튼 상태가 바뀐다. Bind Service의 작동원리와 개념은 코드와 함께 보자! 서비스 만들기 설치 상태를 관찰 할 서비스는 InstallStateService이다. 먼저 Binder를 하나 만들어 주어야하는데, binder를 통해서 다른 앱 컴포넌트에서 이 서비스에 접근 할 수 있게 된다. class InstallSta..

[안드로이드] 패키지명(Package name)으로 앱 실행하기

패키지명을 받아서 앱을 띄워주어야 할 때가 있습니다. 사용자의 휴대폰에 해당 앱이 깔려있다면 실행하고, 깔려있지 않고 Google Play는 이용할 수 있다면 구글 플레이의 앱 상세 페이지로, 만약에 그렇지도 않다면 구글 플레이 웹에서 앱 상세 페이지로 이동 시키는 함수입니다. /** * 패키지 네임을 가진 앱을 실행합니다. 없으면 구글 플레이로 이동합니다. * @param packageName 대상 앱의 패키지 네임 */ fun launch(context: Context, packageName: String?) { val launchIntent = context.packageManager.getLaunchIntentForPackage(packageName ?: "") if (launchIntent !=..

[안드로이드] Firebase Crashlytics 연동방법

구글 Firebase Document에 나와있지만 한국어로 설정하면 보이지 않는 문제가 있어서 블로그에 포스팅한다. Firebase Crashlytics 통합을 위한 절차는 다음과 같다. 미리 해야 할 일 Firebase에서 프로젝트를 생성하고, google-services.json 파일을 안드로이드 프로젝트에 넣는 작업이 완료된 후 Firebase를 사용 할 준비가 되어있어야 한다. 여기까지의 단계는 (https://firebase.google.com/docs/android/setup[https://firebase.google.com/docs/android/setup]) 에서 따라 할 수 있다. app/build.gradle plugins { ... id 'com.google.gms.google-ser..

[안드로이드] 프로젝트에 Sentry 연동방법, Proguard 적용까지

Firebase Crashlytics는 Crash만 기록할 수 있지만, Sentry를 이용하면 Crash는 물론, 개발자가 직접 기록한 이벤트 로그를 확인 할 수 있고 오류가 난 디바이스의 정보와 회원 정보까지 쉽게 파악이 가능하다. 그래서 이번 프로젝트에서는 Sentry를 한 번 이용 해 보기로 했다. 기본 세팅 먼저 Sentry에 가입하고, Sentry에서 안드로이드 프로젝트를 만든 후 다음과 같이 대시보드에 진입 할 수 있는 상태가 되어야한다. 이 절차는 간단하므로 빠르게 스-킵! 먼저 공식 문서(docs.sentry.io/platforms/android/)가 말하는 대로, 안드로이드 프로젝트에서 세팅을 해 주어야 한다. // Make sure jcenter or mavenCentral is the..

[Kotlin/Java] 생년월일 기준으로 현재 만 나이 계산하기

입력한 생년월일을 기준으로 만 나이를 계산하는 코드다. calculateAge(date) >= 14 일경우, 만 14세 이상 조건을 만족하게 된다. /** * 생년월일을 기준으로 현재 나이 계산 * @param unix unixtimestamp */ fun calculateAge(date: Date?): Int { val birthCalendar = Calendar.getInstance() birthCalendar.time = date ?: Date() val current = Calendar.getInstance() val currentYear = current[Calendar.YEAR] val currentMonth = current[Calendar.MONTH] val currentDay = curr..

[안드로이드] 주식 봉차트 그리기 (Drawing candle stick chart with MPAndroidChart Library Example)

라이브러리 & 프로젝트 준비 프로젝트에 MPAndroidChart를 import 하는 법은 이전강의(아래 링크)에 잠깐 참고하고 오면된다. jizard.tistory.com/240 데이터 구조 봉 차트를 그리기 위해서 open, close,shadowHigh,shadowLow값을 전달 해 주어야한다. 봉차트를 보는 방법은 다음과 같다. 샘플 데이터는DataUtil.getCSStockData()를 통해서 가져오면된다. 빨간색으로 칠한 봉은 하루동안 가격이 오른 봉, 한국어로 양봉이고 푸른색으로 칠한 봉은 하루동안 최종적으로 가격이 내려간 봉, 음봉이다. open: 시작가 (시가) close: 종료가 (종가) shadowHigh: 장중 최고가 shadowLow: 장중 최저가 - 주식 자료형인 CSStock과..

[안드로이드] 주식차트 그리기 (Drawing LineChart with MPAndroidChart, Differentiate line colors by limit line value)

위 사진에 보이는 차트를 안드로이드 주요 차트 라이브러리인 MPAndroidChart를 이용해 그려볼 것이다. 내가 영어를 그닥 잘하지 않아서 그런건지 모르겠지만, 저런 차트를 그리고 싶은데 문서나 강의 같은걸 찾지 못했다. 그래서 블로그에도 올려서 방법을 공유 해 보려고 한다! MPAndroidChart 준비하기 MPAndroidChart 라이브러리를 사용하기 위해서 gradle에 다음과 같이 추가한다. allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { ... implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' 최신 버전으로 받고 싶다면 githu..

[안드로이드] Keytool을 이용해 KeyHash, SHA-1 얻기

안드로이드 키 해시 얻는 방법, 터미널에서 아래와 같이 입력 해 주면된다. 디버그 Keyhash 확인법 keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64 릴리즈 Keyhash 확인법 디버그 확인 코드랑 같은데 variable만 다르다. keytool -exportcert -alias gnacompany -keystore -storepass -keypass | openssl sha1 -binary | openssl base64 디버그 SHA-1 / SHA-256 확인법 keytool..