소곤소곤 ad

2015년 3월 10일 화요일

스마트폰 하드웨어 정보 모음

제조사 휴대폰명 애칭 모델번호 해상도 Network CPU
LG 옵티머스G 옵쥐 F180 HD 1280x720    
  옵티머스G Pro 옵쥐프로 F240 FHD 1920x1024 LTE  
  옵티머스GX 옵쥐엑스 F310 FHD 1920x1024    
  옵티머스GK 옵쥐엑스 F220 FHD 1920x1024    
  옵티머스 뷰 옵뷰2        
  옵티머스 뷰2 옵뷰2 F200      
  옵티머스 LTE3 옵티삼 F260 HD 1280x720    
삼성 갤럭시노트 갤노트 SHV-E160 HD 1280x720   1.5x2
  갤럭시노트2 갤노트2 SHV-E250 HD 1280x720   1.6x4
  갤럭시 S3 3G 갤3지 SHV-M440 HD    
  갤럭시 S3 LTE 갤3 SHV-E210 HD    
  갤럭시 S4 미니 갤4미니 SHV-E370      
  갤럭시 그랜드 갤그랜 SHV-E270 WVGA    
  갤럭시 넥서스 갤넥 SHW-M420 HD    
  갤럭시 S5 프라임/광대역 갤오프 G906 QHD 2560x1440 LTEx3  
  갤럭시탭 갤탭 SHW-M180 WSVHGA    
팬텍 베가아이언 베아 IM-A870   LTE  
  베가 LTE-A 베티아 IM-A880   LTE-a  
  베가 NO.6 베넘식 IM-A860   LTE  
  베가 R3 베알삼 IM-A850   LTE  
  베가 S5 베스파 IM-A840   LTE  




Samsung Galaxy S3 (c1skt)
Samsung Galaxy Note2 (t0lteskt)
Samsung Galaxy S2 (SHW-M250S)
LGE LG G2 (g2)
Samsung Galaxy S3 (c1ktt)
AppPlayer
Samsung Galaxy Note2 (t0ltektt)
Samsung Galaxy S2 (SHW-M250K)
LGE LG Optimus G (geehrc4g)
Samsung Galaxy S3 (m0skt)
LGE LG Optimus G Pro (geefhd)
Samsung Galaxy S4 LTE-A (ks01lteskt)
Samsung Galaxy S3 (c1lgt)
Samsung Galaxy Note3 (hlteskt)
Samsung Galaxy Note2 (t0ltelgt)
Samsung Galaxy Note (SHV-E160S)
LGE Optimus Vu2 (vu2kt)
Samsung Galaxy S4 Mini  (serranoltektt)
LGE LG Optimus G (geehrc)
Samsung Galaxy Note (SHV-E160K)
Samsung Galaxy Win (deloslteskt)
LGE LG Optimus G Pro (geefhd4g)
Pantech IM-A870S (ef52s)
Pantech IM-A870L (ef52l)
LGE TBD (aka)
Samsung Galaxy Note (SHV-E160L)
Samsung Galaxy Pop (superiorlteskt)
Samsung Galaxy Note3 (hltelgt)
Samsung Galaxy Note (GT-N7000)
Pantech EF34K (ef34k)
Samsung Galaxy S4 (ks01ltektt)
Samsung Galaxy S2 HD LTE (SHV-E120S)
LGE Optimus Vu2 (vu2sk)
Samsung Galaxy Note3 (hltektt)
Pantech IM-A850L (ef50l)
Pantech IM-A850S (ef48s)
Pantech IM-A830L (ef46l)
Samsung Galaxy S2 (SHW-M250L)
Pantech IM-A840S (IM-A840S)
Pantech IM-A850K (ef49k)
Pantech IM-A860S (ef51s)
Samsung Galaxy S (SHW-M110S)
LGE G Pro2 (b1)
Samsung Galaxy S4 (ks01ltelgt)
Pantech EF33S (ef33s)
LGE LG Optimus LTE3 (fx1sk)
Samsung Galaxy S3 (m0)
LGE LG optimus LTE2 (d1lu)
LGE LG Gx (omega)
Samsung Galaxy S4 (jalteskt)
Pantech IM-A830S (ef47s)
LGE LG optimus LTE2 (d1lkt)
Pantech IM-A870K (ef52k)
Pantech IM-A860L (ef51l)
LGE LG G3 (g3)
Samsung Galaxy S2 (GT-I9100)
Samsung Galaxy S4 (ja3g)
Samsung Galaxy Win (delosltelgt)
Samsung Galaxy S4 (jaltelgt)
LGE G3 Beat (jagn)
Samsung Galaxy S2 (SHV-E110S)
LGE Optimus Vu2 (vu2u)
Samsung Galaxy S5 (lentislteskt)
Pantech VEGA Secret UP (ef62l)
Pantech IM-A860K (ef51k)
Samsung Galaxy M Style (SHW-M340S)
Samsung Galaxy Note4 (trelteskt)
Samsung Galaxy Grand2 (ms01ltektt)
Samsung Galaxy S5 (kltektt)
Samsung Galaxy S5 (klte)
Pantech IM-A880S (EF56S)
Samsung Galaxy Note3 Neo (frescolteskt)
Pantech IM-A830K (ef45k)
Samsung Galaxy Grand (baffinltektt)
Samsung Galaxy Note II (t03g)
LGE PRADA 3.0 (p2)
Samsung Galaxy Note3 Neo (frescoltektt)
Pantech VEGA Secret Note (EF59S)
Samsung Galaxy S5 (kltelgt)
LGE LG F70 (f70n)
Pantech VEGA Secret UP (ef61k)
Pantech IM-840SP (IM-A840SP)
LGE LG G3 Cat.6 (tiger6)
Samsung Galaxy S4 (jaltektt)
Pantech IM-A830KE (ef45kv)
Samsung Galaxy S5 (klteskt)
Pantech Vega LTE M (ef65l)
LGE VU3 (vu3)
Samsung Galaxy Grand2 (ms01ltelgt)
Samsung Galaxy S4 Active (jactivelteskt)
Samsung Galaxy Player 5.8 (harrisonkrktt)
LGE Optimus GK (gvfhd)
Pantech IM-A810K (ef40k)
LGE LG optimus LTE2 (d1lsk)
LGE Optimus 3D MAX (cx2)
Samsung Galaxy Note 10.1 (p4notewifiany)
LGE Optimus LTE (i_skt)
Samsung Galaxy Core Advance (cane3gskt)
Samsung Galaxy Core Safe (arubaslimss)
Samsung Galaxy Tab 8.9 (SHW-M305W)
Samsung Galaxy S2 HD LTE (SHV-E120L)
Samsung Galaxy S2 HD LTE (SHV-E120K)
KT Tech KM-S330 (s330)
LGE Optimus LTE (i_u)
Samsung Galaxy Note3 (hlteatt)
Samsung Galaxy Player 5.8 (harrisonkrlgt)
Pantech VEGA Secret Note (EF59K)
Samsung Galaxy Note4 (treltelgt)
Samsung Galaxy Nexus (maguro)
Samsung Galaxy S5 (lentisltektt)
LGE LG G Pad 8.3 homeBoy (awifi070u)
Samsung Galaxy Note4 (treltektt)
Samsung Galaxy S5 (lentisltelgt)
Pantech VEGA Secret UP (ef60s)
Pantech IM-A800S (ef39s)
LGE Optimus Vu (batman_lgu)
Samsung Galaxy Tab 10.1 (SHW-M380W)
Pantech VEGA Secret Note (EF59L)
LGE LG Gx (omegar)
Samsung Galaxy R-Style (jaguark)
Huawei H60-L04 (hwH60)
Samsung Galaxy 070 (hendrix)
Samsung SM-T255S (q7lteskt)
Samsung Galaxy Grand2 (ms01lteskt)
Samsung Galaxy Tab3 7.0   (lt02wifilgt)
Pantech EF35L (ef35l)
Samsung Galaxy Grand-Max (grandmaxltekx)
Samsung Galaxy Alpha (slteskt)
SK Telesys ITP-R208W (rk30sdk)
Google Nexus 7 (2012) (grouper)
Samsung Galaxy Note3 Neo (frescoltelgt)
Samsung Galaxy Tab2 7.0 (espressorf)
Pantech IM-A810S (ef40s)
Samsung Galaxy Grand (baffinlteskt)
LGE Optimus Big (justin)
Samsung Baffin (baffinltelgt)
Pantech AT1 (at1)
Samsung Galaxy U (SHW-M130L)
Samsung Galaxy Mega 6.3 (meliusltelgt)
Samsung Galaxy Tab2 10.1 (espresso10wifi)
Pantech IM-A910S (ef63s)
LGE Optimus Q2 (bssq_450-06)
Samsung Galaxy Grand (baffinveskt)
Samsung Galaxy A5 (a5ulteskt)
Samsung Galaxy Tab 10.1 (SHW-M380S)
Motorola XT910 (umts_spyder)
Samsung Galaxy Alpha (sltelgt)
KT Tech KM-S220 (s220)
Samsung Galaxy Note 10.1 (p4noteltelgt)
Pantech IM-A910K (ef63k)
LGE G Pad 10.1 (e9wifin)
LGE Optimus Vu (batman_skt)
LGE LG G Pad 8.3 (awifi)
Samsung Galaxy Player (YP-GB70)
Samsung Galaxy Tab 10.1 (SHW-M380K)
LGE L70 (w5n)
Motorola Atrix (olympus)
Samsung Galaxy Mega 6.3 (meliuslteskt)
Samsung Galaxy K Zoom (m2altelgt)
Google Nexus 7 (flo)
Samsung Galaxy Tab2 10.1 (espresso10rf)
Pantech VEGA Secret UP (EF61K)
LGE LG G Flex (zee)
Samsung Galaxy Note Edge (tbelteskt)
Samsung SHW-M480S (p4noterfskt)
Samsung Galaxy Note 10.1 (p4noterf)
Samsung Galaxy Note 10.1 (p4noteltektt)
Samsung Galaxy S4 Zoom (mprojectltelgt)
Samsung Galaxy Note 10.1 (lt03ltelgt)
LGE G3 Screen (liger)
LGE LG Optimus LTE Tag (lge_120_kt)
Samsung Galaxy Note 8.0 (konawifiany)
Samsung Galaxy Tab2 7.0 (espressowifi)
Pantech IM-A910L (ef63l)
KT Tech TAKE SUIT (e100)
LGE Optimus Vu (batman)
LGE Gx2 (b2ln)
Samsung Galaxy Tab 8.9 (SHV-E140S)
LGE Optimus EX (x2_450-05)
LGE LG G3 A (tigers)
KT Tech KM-S120 (s120)
Samsung Galaxy Note 10.1 (p4noterfktt)
SK Telesys All&G PAD (mypad2)
Samsung Galaxy Note 10.1 2014 Edition (lt03wifikx)
Samsung Galaxy Note 8.0 (kona3g)
Samsung Galaxy R-Style (jaguarl)
Google Nexus S (crespo)
LGE LG Optimus 3D (cosmopolitan)
LGE LG Connect 4G (cayman)
Samsung Galaxy A5 (a5ultektt)
Samsung Galaxy player 70 Plus (YP-GB70D)
Samsung Galaxy Tab (SHW-M180L)
Samsung Galaxy K (SHW-M130K)
Pantech VEGA Secret UP (EF60S)
Samsung Galaxy Alpha (sltektt)
KT Tech KM-S300 (s300)
KT Tech EV-S100 (s100)
HTC HTC_X515E (rider)
Samsung Galaxy Tab4 10.1 (matissewifikx)
LGE Optimus Big (lu6800)
Samsung Galaxy Tab3 7.0 (lt02ltetmo)
LGE Optimus Vu (lge_325_skt)
LGE LG Optimus LTE Tag (lge_120_skt)
LGE Optimus Black (ku5900)
Samsung Galaxy R-Style (jaguars)
Barnes and Noble NOOK짰 HD (hummingbird)
HTC HTC Velocity 4G (holiday)
Samsung Galaxy Note3 (ha3g)
Pantech Vega X (ef18k)
Pantech ef14lv (ef14lv)
Pantech Mirach (ef13s)
Samsung Galaxy A5 (a5ultelgt)
Samsung Galaxy Tab (SHW-M180S)
Samsung Galaxy Tab 8.9 (SHV-E140L)
Motorola Defy (umts_jordan)
LGE Optimus One (su370)
KT Tech KM-S200 (s200)
Samsung Galaxy Mega 6.3 (meliusltektt)
LGE Optimus One (lu3700)
LGE LG-LU3100 (lu3100)
Samsung Galaxy Note 10.1 (lt03lteskt)
Samsung Galaxy Tab3 7.0 (lt02wifi)
Samsung Galaxy S5 (k3g)
Samsung Galaxy Tab3 Lite (goyawifi)
Samsung Galaxy TabS 10.5  (chagallwifikx)
LGE Optimus Black (black)
Samsung Galaxy A (archer)
Samsung Galaxy A7 (a7lteskt)
Samsung Galaxy Player 4 (YP-GB1)
Samsung Galaxy S (SHW-M190S)
Samsung SHV-E150S (SHV-E150S)
HP 7 Tablet (Mesquite)
Sony Xperia Z2 (D6503)
NEC G?셻One CA-201L (CA201L)
Sony Ericsson Xperia Z1 (C6903)
LGE LG-KU8800 (x2_450-08)
LGE Optimus EX (x2)
Acer Iconia One 7 (vespa2)
Samsung Galaxy Note Pro 12.2 (v1awifikx)
Samsung Galaxy Note4 (tre3calteskt)
Samsung Galaxy Note Edge (tbeltektt)
Samsung Galaxy Note2 (t0lte)
LGE Optimus 2X (star_450-05)
LGE LG-P990hN (star)
Pantech Izar (sp33k)
Samsung Galaxy S4 Mini  (serranolte)
KT Tech KM-S220H (s220H)
Enspert S732 (rk3026)
Samsung Galaxy Note 10.1 (p4notewifiww)
Samsung Galaxy Note 10.1 (p4notelteskt)
Barnes and Noble NOOK짰 HD+ (ovation)
Samsung Samsung Galaxy S4 Zoom (mprojectltektt)
Samsung Galaxy Tab Pro 8.4 (mondrianwifikx)
Acer A1-811 (mango)
Samsung Galaxy Tab3 7.0  (lt023g)
Samsung Galaxy Tab3 (lt01wifikx)
Samsung Galaxy Tab3 8.0 (lt01wifi)
Samsung Galaxy S4 (ks01lte)
Samsung Galaxy Note 8.0 (konawifi)
Samsung Galaxy S5 (kltevzw)
iRIver Wow(Window of the world) (itq700)
Samsung Galaxy Note3 (hltetmo)
Samsung Galaxy Note3 (hlte)
Samsung Galaxy Player 5.8 (harrison)
g02_d7ref
Samsung Galaxy Round (flteskt)
fiber-inets
Pantech IM-A920S (ef65s)
Pantech IM-A775C (ef34c)
Pantech IM-A730S (ef30s)
Pantech Mirach (ef13l)
LGE G Pad 7.0 (e7wifi)
Acer A1-830 (ducati)
Xiaomi HM NOTE 1LTETD (dior)
Samsung Galaxy S3 (d2can)
LGE Optimus 3D (cosmo_450-05)
Samsung Galaxy Grand (baffinvektt)
HTC Desire HD (ace)
Samsung Galaxy A7 (a7ltektt)
Vandroid
Samsung SHW-M340K (SHW-M340K)
Samsung Galaxy Tab 8.9 (SHV-E140K)
Lenovo Mobile S5000 (S5000)
Gigabyte i7 (RCT6773W22)
GT-P7510
Samsung Galaxy Tab 8.9 (GT-P7300)
Acer A3-A10 (zara)
LGE LG G Flex2 (z2)
x86
LGE Optimus 4X HD (x3)
LGE 070 touch (w3voip)
LGE Optimus Vu (vu10)
Samsung Galaxy Note Pro 12.2 (viennaltekx)
vfpv
LGE Wine Smart (vfp)
Acer Icona One 7 (vespa)
u35gt
LGE LG Optimus L9 (u2)
Sony Xperia Tablet S (txs03)
Samsung Galaxy Note4 (trltetmo)
Samsung Galaxy Note4 (trelte)
Samsung Galaxy Note4 (tre3caltektt)
Toshiba Corporation AT400 (tostab12AL)
Toshiba Corporation AT100 (tostab03)
LGE LG Optimus One (thunderg)
LGE Optimus One (thunder_kor-08)
LGE Optimus One (thunder_kor-05)
NVidia TegraNote (tegranote)
HTC HTC One max (t6ul)
Samsung Galaxy Note2 (t0ltetmo)
Motorola XOOM (stingray)
Samsung Galaxy Tab3 10.1 (santos10wifi)
HTC HTC Sensation XL with Beats Audio X315e (runnymede)
Hisense F5281CH (rk3288)
Hisense Sero 8 (rk3188)
rk29sdk
HP Slate 21 Pro (ranger)
qishang77_cu_ics2
Acer Picasso (picasso)
p4wifi
Pantech Flex (oscar)
nuclear-pfdq88c
nuclear-evb
nuclear-86V
Sony Tablet S (nbx03)
Fuhu nabi 2 Tablet (mt799)
Samsung Galaxy Grand2 (ms013g)
iRIver MM3202 (mm3201)
Samsung Galaxy Tab4 8.0 (milletwifiue)
Samsung Galaxy Tab4 8.0 (milletltektt)
Samsung Galaxy Tab4 8.0 (milletlte)
Asus MeMO PAD (me172v)
mc706
Samsung Galaxy Tab4 10.1 (matissewifi)
HTC HTC One (m7)
Samsung Galaxy Note 10.1 (lt03ltektt)
Samsung Galaxy Tab3 7.0    (lt02lteatt)
Samsung Galaxy Tab3 Kids (lt02kidswifi)
Samsung Galaxy Trend Lite (kylevess)
Samsung Galaxy TabS 8.4 (klimtwifikx)
Samsung Galaxy S4 (jfltevzw)
Samsung Galaxy S4 (jfltecan)
iRIver Wow TAB + (itq701)
Huawei Huawei-U8665 (hwu8665)
Huawei HUAWEI MediaPad 10 Link+ (hws10231l)
Huawei MediaPad 10 LINK (hws10201u)
Archos Hudl HT7S3 (ht7s3)
Samsung Galaxy Note3 (hltevzw)
Samsung Galaxy Note3 Neo (hl3g)
Samsung Galaxy S3 Mini (golden)
Samsung Galaxy Camera  (gd1ltelgt)
Samsung Galaxy Grand Prime (fortunalte)
Google Nexus 9 (flounder)
fiber-mpgio
Motorola Moto G (falcon_umts)
f16ref
HTC HTC_P515E (expresskt)
ZTE ZTE N9120 (elden)
ef32k
LGE G pad 8.0 LTE (e8lte)
LGE My touch 4G (e739)
Enspert enspert_e201 (e201)
dtc_gt18
Samsung Galaxy Tab4 7.0 (degaswifiue)
Samsung Galaxy S3 (d2usc)
Samsung Galaxy S3 (d2ltetmo)
Samsung Galaxy S3 (d2att)
crane-sochip-sc3077
crane-eduplayer-sc3057
crane-amos7
Samsung Galaxy Pocket Neo (corsica)
Samsung Galaxy Tab S 10.5 (chagallwifi)
Motorola Droid X (cdma_shadow)
Fujitsu ARROWS X LTE F-05D (blaze)
Samsung Galaxy Grand Neo (baffinlite)
Samsung Galaxy Grand duos (baffin)
ZTE Z992 (aviva)
Samsung Galaxy Core (arubaslim)
Samsung SGH-S730G (amazingtrf)
Samsung Galaxy Centura (amazing3gtrf)
Acer Liquid E700 (acer_e39)
Samsung Galaxy A7 (a7ltelgt)
Z25
TCT Mobile Limited (Alcatel) ONE TOUCH 4033X (Yaris_M_GSM)
Lenovo Mobile Lenovo YOGA Tablet Pro-1050L/Yoga Tablet 2 (YT2)
Samsung Galaxy Player 4.2 (YP-GI1)
TCT Mobile Limited (Alcatel) Vodafone Smart mini (Vodafone_875)
Virtual
Pegatron Android Tablet PC (TabletPC)
Asus ASUS Transformer Pad TF300TG (TF300TG)
Gigabyte NS-15AT10 (TA120)
Sony Ericsson Xperia ray (ST18i)
Samsung Galaxy S2 Epic (SPH-D710)
Sony Xperia Z2 Tablet (SOT21)
Samsung SHW-M460D (SHW-M460D)
Sony Ericsson Xperia Tablet Z (SGP312)
Samsung Galaxy S2 (SGH-I777)
Samsung Galaxy Note3 (SC-02F)
Samsung Galaxy Note2 (SC-02E)
Fujitsu ARROWS A SoftBank 301F (SBM301F)
Lenovo Mobile IdeaTab S6000 (S6000)
Wind River Ellipsis 7 (QMV7A) (QMV7A)
TCT Mobile Limited (Alcatel) ALCATEL ONE TOUCH P310A (POP7)
Sony Ericsson Xperia sola (MT27i)
Asus ASUS Fonepad ME371MG (ME371MG)
Asus ME173X (ME173X)
Digi-In Monster M10 (M10)
Sony Ericsson Xperia SL (LT26ii)
Kyocera Corporation URBANO L02 (KYY22)
Kyocera Corporation DIGNO S (KYL21)
Asus MeMO Pad ME103K (K01E_2)
Asus MeMO pad 8 ME581CL (K015)
Asus MeMO Pad 7 (K013_1)
Asus MeMO Pad 8 (K011_1)
Samsung Galaxy Y (GT-S5360T)
Samsung Galaxy Pocket (GT-S5300)
Samsung Galaxy Tab 7.7 (GT-P6800)
Samsung Galaxy Tab 7.0 Plus (GT-P6200)
Samsung Galaxy Tab (GT-P1000L)
Samsung Galaxy Tab (GT-P1000)
Samsung Galaxy Beam (GT-I8530)
Enjoy 71
Digi-In EGQ337 (EGQ337)
Pantech VEGA Secret UP (EF62L)
Hisense NBX-T7014 (E270BSA)
DragonTouch-Y88X
Sony Xperia Z3 Compact (D5833)
Sony Xperia C3 (D2533)
Sony Ericsson Xperia Z (C6602)
Kyocera Corporation Hydro (C5170)
Sony Ericsson Xperia M (C1904)
Acer B1-710 (B1-710)
AN101G4

2015년 2월 24일 화요일

카카오(Kakao) SDK 설치시에 발생하는 오류들 (Eclipse/Android)

카카오(Kakao, 카카오톡, 카톡, Kakaotalk) SDK 설치시에 발생하는 오류들 (Eclipse/Android)


카카오는 여러가지 API들을 공개하고 있는데, https://developers.kakao.com/ 를 방문하면 자세한 정보를 얻을 수 있다. 그런데 여기서 제공하는 SDK를 그냥 설치하면 에러가 쏟아진다. 여기저기를 검색해봐도 이 오류들에 대한 설명도 해결방법도 찾기가 힘들었다.






여러군데서 오류가 발생한다. 오류가 발생한 부분의 소스코드를 살펴봐도 왜인지 잘 모르겠다. 

자, 심호흡을 한번 하고, 이 오류들을 싸그리 없애보자!


1. google_play_service_lib 라이브러리 위치



첫번째 할 일은, google_play_service_lib 의 위치를 제대로 지정해 주는 것이다. 빨갛게 X표시된 것은 카카오 SDK를 만드신분의 개발환경으로 이 라이브러리의 경로가 지정되어 있기 때문에 문제가 생겼음을 알 수 있다. 이것들을 제거하고, 내 개발환경의 google_play_service_lib 프로젝트를 지정해주면 해결. (이 라이브러리를 설치하는 방법에 대한 것은 이 글의 범위를 벗어난다)




2. Eclipse의 TextEncoding 문제

여전히 소스코드 여러곳에서 에러가 발생하는데, 이번 문제는 애매한 코드영역에서 발생한다. 이 문제의 주요한 원인은, 카카오 SDK를 만드신분이 UTF-8코드의 한글로 주석을 달아서이다.  필요충분조건인 또하나의 원인은, 내 개발환경이 UTF-8이 아니기 때문이다. 




UTF-8로 작성된 주석들이 윈도우개발환경에서 코드페이지가 맞지 않는 경우에는 코드들과 섞여버린다. 즉, 주석 다음줄의 코드까지 주석처리되어 버려서 오류들이 발생하는 것.

문제 해결하는 방법은 둘 중 하나이다. 

1) 내 개발환경을 모두 UTF-8로 바꾼다. 


Window - Preference - General - Content Types - Text - Java Source File 을 찾아서 맨 아래 Default encoding 에 "UTF-8"로 적어주고 업데이트 하면 된다. 아니면 더 쉬운 방법이 있다! 그것은 바로... 


2) 카카오 SDK 소스코드내의 한글 주석을 영문으로 바꾸던가 지워버린다. 

(오류나는 부분)

(수정된 소스)

엔터 하나 때려넣고 수정 완료! -_-v


3. WebView와 Android 버전문제


SDK에 포함된 WebView의 일부 기능들은 안드로이드 API 버전 "11" 부터 지원하는데, Kakao SDK의 AndroidManifest.xml에는 

minSdkVersion="10" 

으로 되어 있다. 11로 바꿔준다. 이게 문제가 된다면 빌드가 끝나고 나중에 나중에 슬그머니 10으로 바꿔 놓으면 된다. 카카오 개발자도 이렇게 하지 않았을까 싶다 ㅎㅎ


4. PowerManger.isInteractive() 함수


이 오류가 생긴 이유는 카카오 SDK개발자님이 최신기능을 사용할수 있다고 뽐내려고 했기 때문으로 추정된다. 이 함수는 Android SDK 버전 "20" (롤리팝)부터 지원하는 신기능이다. 킷캣 이전버전에서는 지원하지 않아 오류가 생긴다. sdk의 Build Target을 20이상으로 해줘야 한다. 그런데 그래봤자 구버전에서는 isScreenOn()을 사용하도록 코딩되어 있으므로, 아예 이 부분을 삭제해 버리는것이 낫겠다는 판단. 

(롤리팝의 이 기능을 사용하기 위해 앱빌드 타겟을 20으로 강제하는것보다는, 타겟을 19이하로 하게 내버려두고 동작은 그냥 운영체제에 맡기는게 낫지 않았을까?)

 private boolean isApplicationActive(Context context) {
        try {
            final PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            return powerManager.isScreenOn();

            /*
            if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
                return powerManager.isScreenOn();
            } else {
                return powerManager.isInteractive();
            }
            */
        } catch (Exception e) {
            // nothing to do;
        }

        return true;
    }

이렇게 수정하여 드디어, 오류없이 컴파일 성공!! 야호~


HttpURLConnection을 이용하여 간단하게 이미지 다운로드받기,Example for Downloading an image with HttpURLConnection (no Apache)

HttpURLConnection을 이용하여 간단하게 이미지 다운로드받기 Example for Downloading an image with HttpURLConnection (no Apache)


실시간으로 웹서버에서 이미지를 가져다가 출력할 필요가 종종 있다. WebView나 HttpGet등의 고차원적인 기능의 라이브러리를 이용할 수도 있겠지만, 복잡한 옵션없이 아주 간단하게 이미지만 가져오고 싶다면?

정보의 바다에서 쉽게 샘플 소스를 구할 수 있을것 같았지만, 제대로 문제없이 동작하는 샘플을 구할 수가 없었다. 여러가지 제한사항들이 있는데...

1) 크로스플랫폼에서 (나 같은경우는 Android + Windows Desktop) 동작해야 한다.
2) java.* 이외의 외부라이브러리를 가급적 사용하지 않고 구현해야 한다 - 여러가지 이유가 있지만, 순수 java라이브러리만으로 가볍게 구현하고 싶었다.

기본적인 구현은 아래와 같다.

 static private boolean getHttpFile(String url, String fileName) throws MalformedURLException, IOException
 {
  HttpURLConnection conn;

  conn = (HttpURLConnection) new URL( url ).openConnection();
  
  conn.setConnectTimeout( timeOut );
  conn.setReadTimeout( timeOut );
// oops! conn.setDoOutput(true);
  conn.setUseCaches(true);
  conn.setRequestMethod( "GET" );

  conn.setRequestProperty("Connection", "Keep-Alive" );
  conn.setRequestProperty("Content-Type", "image/png");
//  conn.setRequestProperty("Content-Type","application/x-www-form-urlendcoded");
  
  conn.connect();
  
  int response = conn.getResponseCode(); // System.out.println(String.format("HTTP_RESPONSE:%s CODE:%d TYPE:%s SIZE:%d", url, response, conn.getContentType(), conn.getContentLength()));
  if( response == HttpURLConnection.HTTP_OK ){
   InputStream is = conn.getInputStream();
   FileOutputStream outputStream = new FileOutputStream(fileName);
   
   if ("gzip".equals(conn.getContentEncoding())){
    System.out.println("zipped image");
       is = new GZIPInputStream(is);
   }
   
                        // opens an output stream to save into file
   int bytesRead = -1;
                        byte[] buffer = new byte[2048];
                        while ((bytesRead = is.read(buffer)) != -1) {
                            outputStream.write(buffer, 0, bytesRead);
                        }
                        is.close();
                        outputStream.close();
            
                        return true;
  } 
  return false;
 }


setDoOutput(true)
일단, HttpURLConnection.setDoOutput(true);를 절대 하면 안된다. 안드로이드 4.0 이후부터는 이것이 true인 경우 method가 강제적으로 "POST"방식으로 변경되어져서 결과적으로는 데이터를 가져올 수 없고, HTTP/405 Error 를 만나게 된다.

getInputStream()의 함정
인터넷에서 구하는 샘플소스들은

  if( response == HttpURLConnection.HTTP_OK ){ 
                    return conn.getInputStream();
                }

이렇게 InputStream을 돌려주면서 끝나는데, 사실 InputStream은 그 끝을 알 수 없는 파이프의 한쪽만을 보여주는 형태라서, 파일사이즈가 좀 커지면 다 받지 않았는데도 리턴한다. 가볍게 생각하고 InputStream으로부터 이미지를 저장해보면 난리가 난다.

여기에서는 InputStream이 종료될때까지 2k씩 계속 받아다가 파일로 저장한다. 메모리를 더 써도 된다면 팍팍 읽어다가 팍팍 저장!


사용하기, 그리고 예외처리들

 static public Texture getHttpTexture(String fileId, FileHandle handle)
 {
  String url = "http://xxxx.com/images/" + fileId+ ".png";
  
  try {
   if (getHttpFile(url, handle.path()) ){
    try {
     Texture td = new Texture(handle);
     td.setFilter(TextureFilter.Linear,  TextureFilter.Linear);
     return td;
    } catch ( GdxRuntimeException e){
     e.printStackTrace();
    }
   }
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }

이 함수는 libGDX 엔진기반의 게임개발에서 사용하는 실제 코드이다. 정해진 웹서버에서 fileID 형태의 png 파일을 다운로드 받고, 이를 이용하여 Texture를 생성한다.


Thread로 다운로드받고 이미지 그리기

마지막으로 큰 걸림돌인데, 여태까지 했던 작업들은 모두 별도 Thread 로 돌아야 한다. Activity.runOnUIThread()에 넣거나, View.postDelayed()를 이용해서 다운로드받고 UI를 갱신해주면 된다. 실제로 우리가 만들고 있는 게임에서는 libGDX의 postRunnable를 이용해서 오래걸리는 작업을 처리하도록 했다.

   Gdx.app.postRunnable(new Runnable(){
    @Override
    public void run() {
     Texture tx = HttpGetImage.getHttpImage(fileID, fileHandle);
     TextureRegionDrawable trd = new TextureRegionDrawable(new TextureRegion(tx));
     imageSample.setDrawable(trd);
    }
   });