APNG 파일 포맷과 관련 안드로이드 라이브러리

21 Oct 2020

ProblemAPNG(Animated Portable Network Graphics)는 이름에서 알 수 있듯이 PNG 포맷을 확장한 이미지 파일 포맷으로 하위 호환성을 유지하면서 GIF같은 애니메이션 구현이 가능한 포맷이다1. 가장 큰 장점으로 하위 호환성이 유지된다는 것인데 APNG를 지원하지 않는 뷰어에서는 PNG처럼 동작하게 된다. 하위 호환성을 유지하는 방법으로 첫번째 프레임은 기존 PNG 정보를 보여주고 나머지 프레임에 애니메이션 프레임들이...


Java의 AsyncTask를 Kotlin의 coroutine으로 변환

19 Oct 2020

Problem기존 Java로 작성된 코드를 Kotlin으로 변환할때 어떻게 하면 더 Kotlin 스타일에 맞게 변환할 수 있을까하는 고민을 하게 됐다. 동일하게 AsyncTask로 변환 할 수도 있지만 조금 더 Kotlin스타일로 변환 할 수 있는지 확인해 보고자 한다.AsyncTask.execute(new Runnable() {@Overridepublic void run() { ...Solutioncoroutine은 Kotlin 1.3 버전에서 추가되었다. 그 이상 버전을 사용하는 경우만 해당한다....


안드로이드에서 홈 화면 바로가기 생성

15 Sep 2020

Problem안드로이드에서 앱 설치 후 바탕화면(런처)에 앱 아이콘을 표시하고자 한다.SolutionAndroid 8 Oreo (API 26)이하에서는 다음 방법을 사용할 수 있다.private fun addShortCut(context: Context) { val shortcutIntent = Intent(Intent.ACTION_MAIN).apply { addCategory(Intent.CATEGORY_LAUNCHER) setClassName(context, javaClass.name) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) } sendBroadcast(Intent().apply { putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent) putExtra(Intent.EXTRA_SHORTCUT_NAME, resources.getString(R.string.app_name)) putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.mipmap.ic_launcher)) putExtra("duplicate", false) action = "com.android.launcher.action.INSTALL_SHORTCUT" }) val...


안드로이드에서 루팅된 디바이스 확인 코드

22 Aug 2020

Problem루팅된 디바이스에서 앱이 실행 될 경우 정적 분석이나 코드 변조, 임의로 코드의 흐름을 조작하는 등 보안 문제를 일으킬 수 있다. 이를 방지하고자 루팅된 디바이스 실행 여부를 확인하는 코드가 필요하다.Solutionprivate fun isRootedDevice(): Boolean { val buildTags = Build.TAGS if (buildTags != null && buildTags.contains("test-keys")) { return true } if (File("/system/app/Superuser.apk").exists()) {...


Oilnow owner

Oilnow owner Oilnow owner Oilnow owner
18 Apr 2020

This app can be used as a push notification to see price changes at nearby gas stations.The app is available for weekly price trend in the list.While developing this app, I knew how to focus quickly. And I was able to test my maximum performance.


Dimeclub

Dimeclub Dimeclub
01 Feb 2020

Maintenance works for dating app. It’s an app currently used by over a million people. This app includes real-time chat and recommendation features.I developed for the latest os, bug fixes, app updates and optimizations.


Sweetco

Sweetco Sweetco Sweetco Sweetco
01 Dec 2019

Rental car price comparison web application and mobile app.Stabilization and upgrade works. Bulk push feature upgrades and many service bug fixes.I developed for the latest os, bug fixes, app updates and optimizations.I was able to understand the whole used car brokerage business through this project.


안드로이드 OS 알림 설정 확인

21 Nov 2019

Problem안드로이드에서 서버와 앱에서 별도로 푸시 알림을 제어할 수도 있지만, OS 설정을 통해서 푸시 수신여부를 확인할 수도 있다.OS에서 푸시 설정을 꺼놓은 경우 푸시를 수신할 수 있는 방법이 없으므로 사용자에게 어떤 상태인지 안내해줄 필요가 있다.OS에서 푸시 설정 상태를 확인하는 방법을 정리하여 공유한다.Solution아래처럼 OS에서 푸시 설정이 활성화 상태를 확인할 수 있다.NotificationManagerCompat.from(context).areNotificationsEnabled()만약 푸시 사용이...


빌드속도를 높여주는 안드로이드 gradle.properties 설정

16 Nov 2019

Solution# memory allotted to JVMorg.gradle.jvmargs=-Xmx5120m# configure on demandorg.gradle.configureondemand=true# parallel buildsorg.gradle.parallel=true# build Cacheandroid.enableBuildCache=true# gradle cachingorg.gradle.caching=true


네이버 네아로 로그인시 user_cancel 에러 해결 방법

08 Nov 2019

Problem네이버 SDK를 이용하여 로그인을 구현할 때 네이버 앱이 설치되있지 않은 경우에서 로그인 후 “user_cancel” 에러가 나오는 경우가 있었다.재현이 가능한 특정 상황에서 나오는 문제는 아니고 여러번 시도하다보면 가끔 또는 자주 발생하기도 했다.네이버 개발자 포럼을 찾아보니 이와 같은 어려움을 겪고있는 개발자들(1,2, 3)이 많았지만 이상하게도 네이버측에서는 답변이 없었다. 여기에서는 확인해보겠다는 답변이 있지만 아직...


CoordinatorLayout and AppBarLayout Always elevation in Android

22 Jun 2019

Problem안드로이드에서 CoordinatorLayout에 구현된 AppBarLayout의 경우 AppBarLayout가 축소되는 경우 그림자와 함께 elevation 효과가 적용되는데 디자인에 따라 확장된 상태에서도 elevation의 적용이 필요한 경우가 있다.Solution400: Invalid request


Non-Swipeable View Pager in Android

25 May 2019

Problem안드로이드에서 ViewPager와 TabView를 작업할 때, 특정 뷰에서는 swipe 기능을 비활성화 할 필요가 있는데 이때 전체 또는 선택적으로 Non-Swipeable 기능을 적용할 필요가 있다.Solution400: Invalid request


안드로이드 net::ERROR_CLEARTEXT_NOT_PERMITTED 에러 해결방법

28 Apr 2019

Problem안드로이드 P(Android 9.0 (API level 28)) 부터 cleartext를 요청하는 기능이 기본적으로 비활성화 되었다. 타깃 SDK를 28이전으로 사용했다면 상관없지만 업데이트 후 문제가 발생할 수 있다.Solution400: Invalid request


Wegen Scan

Wegen Scan Wegen Scan Wegen Scan
01 Apr 2019

Wegen is a cryptograph wallet based on a block chain system. It includes the activation function using 3D security label made with ultra-thin nano process.If you scan the QR code of the G-Mov attached to the purchased product with the Wesen Scan app, you can redeem the coin for a...


Jaro

Jaro Jaro
01 Mar 2019

Smart tape measure application for Android. Work for CJ proposal. Troubleshoot upgrading from BLE 4.0 to BLE 4.2


Fivesense

01 Mar 2019

Apps that could host the application on a web-based with native code from Android(Java) and iOS(Swift and Objective-C), and registered it in the Google Play and Appstore.While I’m working on this project, I was able to better understand establish the procedures for iOS Appstore registration. I was able to speed...


안드로이드 앱 버전 체크, 스토어 연결

24 Jan 2019

Problem앱에서는 현재 앱이 최신 버전인지 여부를 확인할 필요가 있다. 안드로이드 앱 기준으로는 버전코드(Int)가 있어서 이전 버전과의 단순한 숫자 비교로 구분해도 되지만 사용자가 보기에 직관적이지는 않다.또한, 하나의 백엔드 인터페이스를 통해서 iOS와의 버전 확인을 일관성 있게 유지하기 위해서는 버전명(ex: 1.0.0)으로 버전을 확인할 수 있는 방법이 필요하다.작성한 코드는 버전명 1.0.0과 1.0.1을 비교할 때...


Simple to use customizable Android Tooltips

24 Dec 2018

Problem안드로이드 툴팁에 필요한 일반적인 클래스를 작성했다.listener를 추가하면 이벤트 처리 및 여러 툴팁이 순차적으로 보이도록 구현할 수 있다.Solution400: Invalid request


Update your app to comply with Google Play Permissions policy

22 Nov 2018

ProblemHello Google Play Developer,In October, we announced updates to our Permissions policy that will limit which apps are allowed to request Call Log and SMS permissions. This policy will impact one or more of your apps.Only an app that has been selected as a user’s default app for making calls...


An Android text view with change animation

07 Nov 2018

Problem안드로이드에서 TextView를 이용해서 숫자가 바뀌는 애니메이션 효과를 구현하고자 한다. 기존에 https://github.com/robinhood/ticker 같은 훌륭한 라이브러리가 있지만 빠르게 숫자를 전환하는 효과를 구현하지는 못하고 이 라이브러리를 소스를 수정하는데에는도 구조적인 한계가 있었다.Solution400: Invalid requestConclusion단순히 텍스트가 빠르게 바뀌는 효과만을 구현한 것이라 스크롤되는 등 자연스럽게 바뀌지 않는 문제가 있는데 추후 구현으로 남겨둔다.


Resource NotFoundException in Android

07 Nov 2018

Problem구현 안드로이드 4.4.4 이하에서 백터 리소스 포멧을 지원하지 않아서 abc_ic_menu_overflow_material.xml에서 Resource NotFoundException이 발생할 수 있다.Solution여기를 참고하여 setCompatVectorFromResourcesEnabled 를 설정하는 방법도 있지만 그렇게도 해결이 되지 않을 때에는 아래와 같은 문제일 수도 있다.400: Invalid request


Remove trailing zeros in Kotlin

03 Nov 2018

ProblemFloat나 Double 데이터 타입을 String으로 변환 시 1.0 등과같이 정수형이나 1.23000 등 소수점 이하의 범위에서 표현되는 0은 String으로 변환시 표시가 불필요 하기때문에 제거할 필요가 있다. 1.0은 “1”로 1.23000은 “1.23”으로 표시할 방법을 고민해봤다.Solution400: Invalid request


Textview to Drawable on Android

02 Aug 2018

Problem안드로이드에서 TextView 의 내용을 Drawable 객체 또는 Bitmap으로 변환해서 사용해야 하는 경우가 있다. 이런 경우는 드물긴 하는데 제 경우에는 외부 라이브러리를 사용하고 해당 라이브러리 코드가 수정이 어려운 상태에서 Bitmap 객체를 입력으로 사용해야 되는 경우였다.Solution400: Invalid requestConclusion결과적으로 Canvas에 그리는 간단한 코드가 되어버렸지만 해결 방법을 찾는 과정은 쉽지 않았다. 그리고 찾는 과정에서...


안드로이드 APK 분석 방법

31 Jul 2018

ADBADB 파일 경로는 안드로이드 스튜디오를 설치하고 MAC 기준으로 /Users/[USERID]/Library/Android/sdk/platform-tools 에서 확인할 수 있다. 원하는 APK를 얻고자 한다면 스토어 앱을 통해 앱을 설치한 후 아래 과정을 통해 APK를 받을 수 있다.$ adb shell pm list packages -f -3위와 같이 실행하면 연결된 기기에 설치된 앱 들을 경로와 함께 확인할 수 있다. -3...


CLET

CLET CLET CLET CLET CLET CLET
01 May 2018

CLET is a powerful cryptocurrency wallet and an easy ICO platform.Blind investment for token sales and ICO is coming to an end.Now you can raise profit with judgements and investments based on practical information.It is important for ICO projects to attract new investors. Entry barriers for the new investors should...


Sendlike

Sendlike Sendlike Sendlike Sendlike Sendlike
01 Mar 2018

Developing a dating app that open patterns that users have given scores.It is a dating app that supports precise matching based on data by disclosing user’s score pattern. Using the matching data from this app, you can create interesting new service.While I’m working on this project, I understood the techniques...


FastOrder

FastOrder FastOrder FastOrder FastOrder
01 Mar 2018

FastOrder is an online order service using a smartphone. It also supports application for tablets that can be used in stores. This service can manage customers more efficiently without significantly changing existing store ordering system. I participated in ideation of service, service planning, design concepts, and prototyping. I have experienced...


Oilnow

Oilnow Oilnow Oilnow Oilnow Oilnow Oilnow Oilnow
01 Dec 2017

Based on Big Data Analysis and Algorithm Application, the app automatically recommends the closest and cheapest gas station near my location. This app helps you save on fuel costs by analyzing oiling patterns.While I’m working on this project, I understood the technology to recognize the direction through the coordinates, the...


Myriels

Myriels Myriels Myriels
01 Dec 2017

The network map for your mobile contacts. The network map would be a visual guideline on designing your contact map. I implemented wi-tag feature on the network map. A Wi-tag is an anonymous tag that helps you better understand people on your contact map.While I’m working on this project, I...


RisingStar

RisingStar RisingStar RisingStar
01 Nov 2017

It is a personal broadcasting service that supports live streaming. It is implemented as Android native using Kotlin. I have experienced with live streaming back-end building and protocol integration through this service.While I’m working on this project, I understood the streaming service integration technology, live streaming technology and troubleshoot streaming....


T-messenger

T-messenger T-messenger
01 Sep 2017

It is a mobile messenger for business use by the Oman government. The project uses WebRTC technology. I did the optimization work on this project for various network environments.While I’m working on this project, I understood how to troubleshoot WebRTC clients for various network environments.


Ready U

Ready U Ready U Ready U Ready U
01 Sep 2017

An Android application that connects with people going to ski resorts. This app includes matching people, chatting, bulletin boards, and skiing skills.While I’m working on this project, I understood effective user matching techniques, user-friendly UI, UX to improve retention.


CashFeed

CashFeed CashFeed CashFeed
01 Sep 2017

CashFeed is a mobile flyer service that analyzes user patterns based on your location and recommends nearby stores. This app allows users to redeem points when they see the ad. The user can accumulate points and exchange them for goods.While I’m working on this project, I understood Tinder-like UI development...


MeBuy

MeBuy MeBuy MeBuy
01 Jul 2017

An Android application that curates PPL videos for real purchasing. Implemented hybrid application technology, video and content management technology.While I’m working on this project, I understood the industry-wide trends related to PPL and video commerce.


Salalee

Salalee Salalee Salalee
01 Jun 2017

An Android application to meet new people, invite friends and chat. In particular, this app can only be signed by employees of a certified company.While I’m working on this project, I understood how effective email authentication.


Sleek Project

Sleek Project Sleek Project Sleek Project
01 Mar 2017

This is a mobile app and a web project. The web application allows the user to select, schedule and pay for fitness programs. The mobile app application is an O2O service. The app can connect with users and trainers.


OTT(Over The Top) Service; Mug

OTT(Over The Top) Service; Mug OTT(Over The Top) Service; Mug OTT(Over The Top) Service; Mug
01 Feb 2017

This app is an Android application that watches movies and TV. This app can be viewed or streamed online. The app implemented location aware technology using Wifi and multi-format streaming video playback technology.While I’m working on this project, I understood location recognition technology and AP authentication method through Wifi.


Smart Tape Management; Jenda

Smart Tape Management; Jenda Smart Tape Management; Jenda Smart Tape Management; Jenda
01 Jan 2017

An Android application that manages measurement by communicating with Smart Tape via Bluetooth. The app can connect with smart tapes to view, organize and share size data. Dimension management, Body shape management and smart tape measure data calibration algorithm added in Phase 2.While I’m working on this project, I understood...


Comgree

Comgree Comgree Comgree Comgree
01 Mar 2016

A messaging application for teams. The service is available online or on a standalone. Implemented in Java a Messaging Application which performs real-time messaging and chat for team. Along with three other team members who wrote the server, iOS and web application.


T-messenger

T-messenger T-messenger T-messenger T-messenger T-messenger
01 Aug 2015

It is a mobile messenger for business use by the Oman government. The project uses WebRTC technology. I did the optimization work on this project for various network environments.While I’m working on this project, I understood how to work with foreigners and teach the skills.


Doctor Implant

Doctor Implant Doctor Implant Doctor Implant Doctor Implant
01 Jan 2015

Implemented in Node.js Back-end Service and Back Office which supports API and consults management. Implemented in Java an Application which performs chat and consultation with dentists. Lead engineer on this product.안드로이드 앱을 이용해 치과 상담을 할 수 있는 O2O 서비스. 기존 스킨닥 서비스를 변형하여 치과(임플란트)에 맞게 재 패키징한 제품.


SkinDoc

SkinDoc SkinDoc SkinDoc SkinDoc
01 Sep 2014

Implemented in Node.js Back-end Service and Back-office which supports API and consults management. Implemented in Java an Application which performs chat and consultation with dermatologists. Lead engineer on this product.안드로이드 앱을 이용해 피부과 상담을 할 수 있는 O2O 서비스. 서버와 관리툴(API, 상담, 채팅, 관리 기능 등) 개발.