태그 보관물: 안드로이드 개발

안드로이드 개발자 스토어 정리

창업을 해서 3년간 게임 및 애플리케이션을 라이브 서비스 하면서 알게 된 정보를 공유합니다.

시간에 따라서 해당 내용이 변할 수 있기 때문에, 감안해서 봐주시면 감사하겠습니다.

– 구글 플레이
URL : https://play.google.com/apps/publish/
가입비 : 25 US$ 의 가입비가 필요 (평생)
IAP : 지원함, 구현 필요, 수수료 30%
타겟 : 글로벌
구글 개발자 약관을 매우 꼼꼼히 살펴보고 서비스를 최대한 보수적으로 운영해야 할 필요가 있습니다. 애플과 같이 사전 검수가 없지만(실질적으로는 하고 있습니다), 그 만큼 약관에 위반하였을 경우 무서운 벌(?)인 앱 삭제나 계정 삭제가 될 수 있기 때문입니다. 계정이 삭제 될 경우 다른 계정으로도 가입이 불가능하고, 앱도 더 이상 올릴 수 없도록 조치 됩니다.

– 티스토어 & 올레마켓 & U+ 스토어 (OneStore)
URL : http://dev.onestore.co.kr/http://seller.ollehmarket.com/http://devpartner.lguplus.co.kr/
IAP : 지원함, 구현 필요, 수수료 30%
타겟 : 국내
제가 서비스 할 때만 해도 3개의 앱스토어의 개발자 센터가 모두 나뉘어 있었지만, 지금은 통합된 것으로 보입니다. OneStore 에 업로드 하면 3개 마켓에 모두 서비스가 가능한 것으로 보여집니다.
티스토어의 경우 사전 검수가 타 마켓에 비해서 까다로운 편이기 때문에, 티스토어 서비스 일정 전에 미리 검수를 요청해 보는 것도 좋을 것 같습니다.

– 삼성 갤럭시 앱스
URL : http://seller.samsungapps.com/
IAP : 지원함, 구현 필요, 수수료는 파트너 여부에 따라 20~30%, 해외 매출의 경우 국가별 정산 차이가 있을 수 있음
타겟 : 글로벌
삼성 휴대폰에는 대부분 기본으로 설치되어 나오기 때문에 해외까지 하면 사용자가 꽤 많습니다. 실제로 글로벌 앱이라고 하면 여기는 필수적으로 서비스 하는 것이 좋을 것 같다고 생각합니다. 사용자에 비해 앱 숫자가 상대적으로 다른 스토어에 비해 별로 없다고 할 수 있습니다. 하지만 사전 검수가 시간이 오래 걸리고 매우 까다로운 편입니다.

– 아마존 앱스토어
URL : https://developer.amazon.com/home.html
IAP : 지원함, 구현 필요, 수수료 30%, 달러와 파운드로 입금
타겟 : 글로벌
아마존에서 개발하고 판매하는 단말(킨들, 파이어폰 등)에 기본으로 탑재되어 있는 스토어이며, 일반 안드로이드 디바이스에서도 다운로드 받아서 설치해서 이용할 수 있습니다. 미국 및 유럽에서 트래픽이 많이 나오는 것으로 파악되기 때문에, 수익이 괜찮은 스토어라고 할 수 있습니다. 사전 검수가 필요합니다.

– 네이버 앱스토어
URL : http://appdev.naver.com/
IAP : 지원함, 구현 필요(외부 IAP 사용 가능), 수수료 20%
타겟 : 국내
국내 최대 포털인 네이버에서 운영하는 앱스토어 입니다. 베타존 등 다양한 스타트업 및 기업 지원 프로그램이 있으며, 수수료가 저렴하기 때문에 매력적인 마켓입니다.

– LG SmartWorld
URL : http://seller.lgworld.com/partner/home/view.dev
IAP : 지원함, 구현 필요(외부 IAP 사용 가능), 수수료 30%
타겟 : 글로벌
삼성 갤럭시 앱스같이 LG 에서 출시하는 휴대폰에는 기본으로 탑재되는 마켓이라고 알고 있습니다. IAP가 불편하기 때문에, 무료로 서비스 되는 전체이용가급 앱이나 게임을 서비스 하기에 적합할 것으로 생각합니다. 마켓 규모에 비해 서비스 되는 앱이 굉장히 적기 때문에, 서비스를 잘 하면 나름 성과를 얻을 수 있을 것 같습니다.

– SlideMe
URL : http://slideme.org/developers
IAP : 지원함, 구현 필요, 수수료 ???
타겟 : 글로벌
해당 마켓은 저도 2,3개 무료 앱만 올려본 수준이라, IAP 에 대한 정보는 정확하지 않습니다. 사전 심사가 까다로운 편이기 때문에, 사전 심사를 통과해서 서비스 할 수 있다면 나름 어느 정도 성과를 얻을 수 있을 것이라 생각합니다.

– 기타 스토어들
바이두 앱스토어 : http://developer.baidu.com/ (중국어, 중국 타겟, 무료 앱을 올려서 서비스 했습니다)
Yandex 스토어 : https://developer.store.yandex.com/ (러시아 포털 사이트)
Opera 앱스토어 : https://apps.opera.com/administrator/

[안드로이드] 주소록에 있는 사진 얻어오기

 안드로이드 주소록에 있는 사진을 Bitmap 으로 얻어올 수 있는 방법입니다. 아래와 같은 함수를 이용하여 주소록에 있는 사진을 얻어올 수 있습니다.

[code java]
 public static Bitmap loadContactPhoto(ContentResolver cr, long  id) {
     Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
     InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
     if (input == null) {
         return null;
     }
     return BitmapFactory.decodeStream(input);
 }
[/code]

 첫번째 인자는 context의 getContentResolver() 함수로 얻어와서 넣어주면 되고, 두번째 인자는 주소록의 ID 값을 넣어주면 됩니다. 제가 구현해 봤을 때 Data.RAW_CONTACT_ID 값을 넣어주면 정상적으로 나왔습니다. 만약 이미지가 없을 경우에는 R.drawable.ic_contact_picture 값을 화면에 출력해주면 기본 주소록과 같이 보이게 될 수 있습니다.

참고 : http://stackoverflow.com/questions/2383580/android-how-do-i-load-a-contact-photo

[안드로이드] Touch 이벤트의 ACTION 처리

 View의 setOnTouchListener 이벤트를 처리하고자 하는 경우 아래 함수로 이벤트를 받게 됩니다.

public boolean onTouch(View v, MotionEvent event) { }

 여기에서 View는 터치 이벤트를 받은 View를 의미하고 event에서는 어떠한 터치 이벤트가 발생했는지 정보를 얻을 수 있습니다.
자세한 것은 android.view.MotionEvent 소스를 보면 아실 수 있지만 getAction() 함수를 주로 사용합니다.Action 종류에는 아래와 같이 여러 가지가 존재합니다.

ACTION_MASK, ACTION_DOWN, ACTION_UP, ACTION_MOVE, ACTION_CANCEL, ACTION_OUTSIDE, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_POINTER_INDEX_MASK

 자세한 것은 http://developer.android.com/reference/android/view/MotionEvent.html 페이지를 참고하시길 바랍니다.
위 Action 중에 View를 클릭했을 때는 ACTION_DOWN가 오고,  터치가 끝나서 손가락을 떼면 ACTION_UP이 오게 됩니다. 그 중간에는 ACTION_MOVE가 오게 됩니다.

 한가지 팁으로는 제 생각에 ACTION_DOWN 중에 View의 범위를 벗어나면 ACTION_OUTSIDE이나 ACTION_CANCEL이 와야 할텐데 이 부분이 호출이 되지 않는 문제가 생겼습니다. 그래서 ACTION_MOVE 이벤트 중에 view의 isPressed, isSelected 상태를 체크하여 isPressed가 true라면 아직 눌려있는 상태라서 범위를 벗어나지 않은 상태이고, false 라면 범위를 벗어난 것이라고 판단 하도록 처리하겠습니다. 이러한 처리는 버튼의 터치 이벤트를 처리할 때 간혹 필요한 부분이라고 생각이 됩니다.