<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
	<title>안드로이드 개발 정보</title>
	<link>http://www.androidpub.com/android_dev_info</link>
	<description></description>
	<language>ko</language>
	<pubDate>Thu, 11 Mar 2010 15:43:54 +0900</pubDate>
	<lastBuildDate>Thu, 11 Mar 2010 15:43:54 +0900</lastBuildDate>
	<generator>XpressEngine 1.4.0.3</generator>
				<item>
		<title>CES에 발표된 Parrot사의 iphone 증강현실 게임 AR.Drone</title>
		<dc:creator>neverblues.myid.net</dc:creator>
		<link>http://www.androidpub.com/189072</link>
				<guid isPermaLink="true">http://www.androidpub.com/189072</guid>
		  
						<comments>http://www.androidpub.com/189072#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;증강현실을 이용한 게임 및 장치가 2010 CES에서 발표되었네요.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A class=con_link href=&quot;http://bit.ly/8GzO4D&quot; target=_blank&gt;http://bit.ly/8GzO4D&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;EMBED src=http://www.youtube.com/v/TSv2ca-IECc&amp;amp;hl=ko_KR&amp;amp;fs=1&amp;amp; width=640 height=385 type=application/x-shockwave-flash autostart=&quot;true&quot; invokeURLs=&quot;false&quot; allowScriptAccess=&quot;always&quot; allowNetworking=&quot;all&quot; enableHtmlAccess=&quot;true&quot; AllowHtmlPopupwindow=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/EMBED&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;아이폰으로 컨트롤이 가능한 RC 헬리콥터인데, 헬리콥터에 달려 있는 2개의 카메라를 통해서 영상이 아이폰으로 들어오고,&lt;/P&gt;
&lt;P&gt;AR(Augmented Reality; 증강현실)을 이용해서, 현실의 화면 위에 게임을 입혔습니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;제작사인 Parrot 에서 API를 공개하고, 개발자 사이트를 오픈할 계획이라 하는데,&lt;/P&gt;
&lt;P&gt;무지무지 많은 슈팅게임이 개발되겠어요.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;예를 들어, 여의도 고수부지에서, 친구들끼리 자기의 AR.Drone을 조종해서 슈팅대전을 하거나,&lt;/P&gt;
&lt;P&gt;저 멀리 보이는 국회를&amp;nbsp;폭파시키는 미션을 수행한다거나,&lt;/P&gt;
&lt;P&gt;올림픽도로에 지나가는 자동차들과 전쟁을 한다거나(이건 좀 위험할 수도,,,,도로교통법 잘 보고 하셔야...)&lt;/P&gt;
&lt;P&gt;영화 괴물에 나오는 괴물과 싸우는 미션을 한다거나,,,,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;만약에 저 회사에서 이러한 모델에 특허를 걸었다면,&lt;/P&gt;
&lt;P&gt;(1) RC조종되는 장치(비행기, 헬기, 자동차 등)에 카메라, 스피커를 달고, 카메라와 스피커는 근거리통신 가능한 구성&lt;/P&gt;
&lt;P&gt;(2) RC조종장치로서 RC조종되는 장치로부터 화상, 음성정보를 받아서, 화상정보 중의 일정 픽셀이나 픽셀그룹을 추출하여 그 위에 AR 화상데이터를 입혀서 표시하고, 동작감지(G센서등)나 버튼입력으로 받은 제어신호를 근거리통신으로 RC조종되는 장치로 송신하여 제어하는 구성&lt;/P&gt;
&lt;P&gt;정도가 아니었을까 합니다. 
&lt;DIV class=autosourcing-stub&gt;
&lt;P style=&quot;PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum&quot;&gt;&lt;STRONG style=&quot;PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px&quot;&gt;[출처]&lt;/STRONG&gt; &lt;A href=&quot;http://blog.naver.com/isquare_kr/100101592336&quot; target=_blank&gt;AR.Drone Quadricopter&lt;/A&gt;&lt;SPAN style=&quot;PADDING-RIGHT: 7px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px&quot;&gt;|&lt;/SPAN&gt;&lt;STRONG style=&quot;PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px&quot;&gt;작성자&lt;/STRONG&gt; &lt;A href=&quot;http://blog.naver.com/isquare_kr&quot; target=_blank&gt;아이스퀘어&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;&lt;/div&gt;</description>
				<pubDate>Thu, 11 Mar 2010 11:41:53 +0900</pubDate>
									</item>
		<item>
		<title>KH5200 ADB driver 설치하기</title>
		<dc:creator>킬딘</dc:creator>
		<link>http://www.androidpub.com/187857</link>
				<guid isPermaLink="true">http://www.androidpub.com/187857</guid>
		  
						<comments>http://www.androidpub.com/187857#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;안녕하십니까? 학생 개발자 킬딘입니다.&lt;br&gt;이번에 LG KH5200을 구입했는데, 아래 언언님 말씀대로 Windows에서 ADB driver가 안잡히는 문제가 있어 씨름을 좀 했습니다. 아무튼, 결과는 성공적인 듯 하여 그 방법을 소개코자 글 올립니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;설치를 위해서는 아래의 준비물이 필요합니다.&lt;br&gt;- LG USB 드라이버 ( http://www.cyon.co.kr/lgcyon/common/jsp/download_sw.jsp?filename=LG_USB_Driver.zip )&lt;br&gt;- Android USB 드라이버 ( AVD 및 SDK 설치시 &quot;USB Driver package, revision 3&quot;를 설치해주시면 됩니다. )&lt;br&gt;&lt;br&gt;그럼 드라이버 설치에 대해 알려드리겠습니다.&lt;br&gt;1. KH5200을 연결하지 않은 상태로 LG USB 드라이버를 설치합니다.&lt;br&gt;2. KH5200 에서 [ 메뉴 - 설정 - 응용프로그램 - 개발 - USB 디버깅 ] 옵션을 켭니다.&lt;br&gt;3. KH5200을 컴퓨터에 연결합니다.&lt;br&gt;4. USB에 연결하시면 &quot;USB Composite 장치&quot;는 자동으로 설치가 되고, 2개의 장치는 찾지 못할 겁니다.&lt;br&gt;&amp;nbsp;&amp;nbsp; [ 자동으로 찾기 ] 하여 찾지 못한 상태로 종료하십시오.&lt;br&gt;&lt;br&gt;5. 이제 Android USB 드라이버를 수정하셔야 합니다. Android USB 드라이버는 [ &lt;b&gt;
&lt;/b&gt;&lt;font face=&quot;Cursive&quot;&gt;&lt;i&gt;%안드로이드SDK%&lt;/i&gt;\usb_driver&lt;/font&gt; ] 에 있습니다.&lt;br&gt;&amp;nbsp;&amp;nbsp; (예를 들어, &lt;font face=&quot;Cursive&quot;&gt;C:\android-sdk-windows\usb_driver&lt;/font&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp; 만일을 위해 이 폴더를 다른 곳으로 복사하신 뒤 복사본 안의 android_winusb.inf 파일을 텍스트 에디터로 수정합니다. OS가 x86용이라면, &quot;[Google.NTx86]&quot; 항목, x64용이라면 &quot;[Google.NTamd64]&quot; 항목 아래에 다음과 같이 KH5200에 대한 값을 넣어줍니다. (둘 다에 넣으셔도 상관없을 듯 합니다.)&lt;br&gt;&lt;font face=&quot;Cursive&quot;&gt;&lt;/font&gt;&lt;pre class=&quot;brush: plain;gutter: false;first-line: 46;&quot;&gt;[Google.NTx86]
; HTC Dream
   .
   .
   .

;LG KH5200
%CompositeAdbInterface% = USB_Install, USB\VID_1004&amp;amp;PID_6171&amp;amp;MI_01&lt;/pre&gt;&lt;br&gt;6. 이제, Windows의 장치관리자를 열어 Android USB 드라이버를 설치하겠습니다. 장치관리자에 가시면, &quot;!&quot;가 뜬 &quot;LG Mobile USB Modem&quot; 2개가 있습니다. 이중 &lt;b&gt;두 번째&lt;/b&gt; 것에 우클릭 후 [ 드라이버 업데이트... ]를 선택합니다.&lt;br&gt;&lt;br&gt;7. [ 아니오, 지금 연결 안함 - 목록 또는 특정 위치에서 설치(고급) - 이 위치에서 가장 적합한 드라이버 검색 ]을 순서대로 누릅니다.&lt;br&gt;8. [ 검색할 때 다음 위치 포함 ]을 체크하시고 [ 찾아보기 ] 를 눌러 수정한 드라이버가 있는 위치를 선택합니다.&lt;br&gt;9. 드라이버가 설치되면, &quot;Android Composite ADB Interface&quot;로 이름이 바뀝니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;이제 설치가 완료되었습니다. 설치가 제대로 되었는지 아래 방법으로 확인해봅니다.&lt;br&gt;1. cmd 창을 엽니다. (Eclipse가 켜져있다면 닫으시는 게 좋을 듯 합니다.)&lt;br&gt;2. 아래와 같이 입력합니다. 이때, adb의 위치는 SDK 설치폴더에 따라 다릅니다.&lt;br&gt;&lt;pre class=&quot;brush: plain;gutter: false;&quot;&gt;C:\Documents and Settings\kildin&amp;gt;c:\android-sdk-windows\tools\adb devices
List of devices attached
12A345678901234567      device

C:\Documents and Settings\kildin&amp;gt;&lt;/pre&gt;&lt;br&gt;장치의 시리얼은 임의로 수정되었지만, 위와 같은 화면이 나올 것입니다. &lt;font face=&quot;Cursive&quot;&gt;adb shell&lt;/font&gt;명령어를 통해 shell로 접속하는지도 테스트해보시면 확실할 듯 합니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;* Android USB 드라이버를 설치하는 도중 문제가 생기신다면, [ 속성 - 자세히 ] 에 가셔서 &quot;장치 인스턴스 Id&quot;가 다음과 같은지 확인합니다.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face=&quot;Cursive&quot;&gt;USB\VID_1004&amp;amp;PID_6171&amp;amp;&lt;b&gt;MI_01&lt;/b&gt;\....&lt;/font&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; 아래와 다르다면, 첫번째 것을 확인하십시오. (일반적으로 첫번째는 &lt;b&gt;&lt;font face=&quot;Cursive&quot;&gt;MI_00&lt;/font&gt;&lt;/b&gt;
 이고, 두번째가 &lt;b&gt;&lt;font face=&quot;Cursive&quot;&gt;MI_01&lt;/font&gt;&lt;/b&gt; 입니다.)&lt;br&gt;&lt;br&gt;** KH5200을 PC에서 분리하실 때는 adb kill-server로 adb 데몬을 죽이신 뒤, 작업표시줄에서 [ 안전하게 제거 ]를 선택해 제거하시는 것이 좋을 것 같습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;첨언)&lt;br&gt;급하게 글을 적다보니 쉬운 작업임에도 상당히 길고 어렵게 적어버렸군요. 혹 이것으로 부족한 분이 계시면, 스크린샷과 함께 간단하게 재작성하도록 하겠습니다. 이 가이드를 따라 설치하는 도중에 문제가 발생하는 것에 대해서는 죄송하지만 책임질 수 없습니다. 궁금한 점이 있으시면, 댓글 남겨주시기 바랍니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;참고자료 :&lt;br&gt;http://androidnetwork.org/forum/viewtopic.php?f=22&amp;amp;t=176&amp;amp;start=20&lt;br&gt;http://forum.xda-developers.com/showpost.php?p=5105936&amp;amp;postcount=108&lt;br&gt;http://androidforums.com/lg-eve/49587-lg-eve-gw620-rogers-rooting-guide-remove-rogers-apps.html&lt;br&gt;&lt;br&gt;작성일 : 2010년 3월 10일&lt;br&gt;&lt;br&gt;&lt;div align=&quot;right&quot;&gt;이 
글은 &lt;b&gt;저작자 표시, 비영리, 동일조건변경허락&lt;/b&gt;하에 수정과 배포가 가능합니다.&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot;&gt;&lt;img id=&quot;licensebutton&quot; alt=&quot;Creative Commons License&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot; style=&quot;margin-right: 10px; margin-bottom: 4px; border: 0pt none;&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Wed, 10 Mar 2010 22:21:03 +0900</pubDate>
						<category>KH5200</category>
				<category>android_usb_driver</category>
								<slash:comments>2</slash:comments>
			</item>
		<item>
		<title>안드로이드 framework 구조가 개판이네요 ㅡ.ㅡ</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/187191</link>
				<guid isPermaLink="true">http://www.androidpub.com/187191</guid>
		  
						<comments>http://www.androidpub.com/187191#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;안녕하세요. 볼레로 입니다. &lt;br&gt;&lt;br&gt;framework 소스상에 &amp;nbsp; sdcard&amp;nbsp; 빠지는 것에 대한 대비가&amp;nbsp; 전혀 없네요. &lt;br&gt;&lt;br&gt;&lt;br&gt;휴대폰은&amp;nbsp; 배터리를 빼야&amp;nbsp; sdcard를&amp;nbsp; 뺄 수 있는 구조라고&amp;nbsp; 없어도 되기 때문에&amp;nbsp; 이렇게 만든 듯합니다. &lt;br&gt;&lt;br&gt;&lt;br&gt;뭔&amp;nbsp; framwork 가&amp;nbsp;&amp;nbsp; HW 디자인 구조까지&amp;nbsp; 제약이 생기도록 만들었는지 모르겠네요. ㅡ.ㅡ &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;혹시&amp;nbsp; 안드로이드로&amp;nbsp; 뭐 만들려고 하시는 분들은&amp;nbsp; &lt;br&gt;&lt;br&gt;꼭,&amp;nbsp; sdcard 슬롯을&amp;nbsp; 휴대폰처럼&amp;nbsp; 배터리 아래에 넣어세요. &lt;br&gt;&lt;br&gt;&lt;br&gt;이렇게 안하시면 정말&amp;nbsp; 많은 삽질하시거나 &lt;br&gt;혹은&amp;nbsp; 정말 불안한&amp;nbsp; (거의 사용못하는 OS)를&amp;nbsp;&amp;nbsp; 보실 수 있으실 겁니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;젠장.......&lt;br&gt;&lt;br&gt;&lt;br&gt;수고하세요!&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Wed, 10 Mar 2010 16:44:35 +0900</pubDate>
										<slash:comments>5</slash:comments>
			</item>
		<item>
		<title>Android의 Ping,isReachable 소스 분석</title>
		<dc:creator>쏘프트</dc:creator>
		<link>http://www.androidpub.com/184015</link>
				<guid isPermaLink="true">http://www.androidpub.com/184015</guid>
		  
						<comments>http://www.androidpub.com/184015#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Android&lt;/span&gt;의&lt;span lang=&quot;EN-US&quot;&gt; Ping
(isReachable)&lt;/span&gt;소스 분석&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;2010.3.9 softgear&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;네트워크에서 가장 많이 사용하는 기능 중 하나가&lt;span lang=&quot;EN-US&quot;&gt; Ping&lt;/span&gt;이다&lt;span lang=&quot;EN-US&quot;&gt;. JAVA&lt;/span&gt;에서는&lt;span lang=&quot;EN-US&quot;&gt; InetAddress&lt;/span&gt;클래스의&lt;span lang=&quot;EN-US&quot;&gt; isReachable()&lt;/span&gt;함수로 구현되어 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;원래 이 함수는&lt;span lang=&quot;EN-US&quot;&gt; ICMP&lt;/span&gt;를 써서 구현되어 있는 것이 었는데&lt;span lang=&quot;EN-US&quot;&gt;, Android&lt;/span&gt;에서는&lt;span lang=&quot;EN-US&quot;&gt; TCP&lt;/span&gt;를 사용하는 것으로 변경되었다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;원래&lt;span lang=&quot;EN-US&quot;&gt; ICMP &lt;/span&gt;패킷을 전송하기 위해&lt;span lang=&quot;EN-US&quot;&gt; raw&lt;/span&gt;소켓을 사용해야 하는데&lt;span lang=&quot;EN-US&quot;&gt;, root &lt;/span&gt;권한이 필요하다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;따라서 보안상 위험한&lt;span lang=&quot;EN-US&quot;&gt; ICMP &lt;/span&gt;전송&lt;span lang=&quot;EN-US&quot;&gt;/&lt;/span&gt;수신 루틴 대신에&lt;span lang=&quot;EN-US&quot;&gt;
TCP&lt;/span&gt;를 사용하도록 수정한 것으로 보인다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;span lang=&quot;EN-US&quot;&gt;Android SDK&lt;/span&gt;에서&lt;span lang=&quot;EN-US&quot;&gt;
isReachble()&lt;/span&gt;메소드를 사용하여&lt;span lang=&quot;EN-US&quot;&gt; PING&lt;/span&gt;과 같은 기능을 하려면 다음과 같은 예제로
가능하다&lt;span lang=&quot;EN-US&quot;&gt;. isReachable()&lt;/span&gt;내의 인수는&lt;span lang=&quot;EN-US&quot;&gt; int&lt;/span&gt;형으로&lt;span lang=&quot;EN-US&quot;&gt; ms &lt;/span&gt;단위의 타임아웃시간을 나타낸다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style=&quot;mso-element:para-border-div;border:solid windowtext 1.0pt;
padding:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;try {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;InetAddress ia =
InetAddress.getByName(&quot;192.168.123.254&quot;);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if(ia.&lt;b style=&quot;mso-bidi-font-weight:
normal&quot;&gt;&lt;span style=&quot;color:blue&quot;&gt;isReachable&lt;/span&gt;&lt;/b&gt;(3000)==true) {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt; &lt;/span&gt;tv.setText(&quot;Reachable
in 3 sec&quot;);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt; &lt;/span&gt;tv.append(&quot;\naaaa&quot;);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} else {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt; &lt;/span&gt;tv.setText(&quot;Unreachable
in 3 sec&quot;);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} catch (UnknownHostException e){&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tv.setText(&quot;UnknownHost
Exception&quot;);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} catch (IOException e) {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tv.setText(&quot;IO
Exception : &quot; + e.toString());&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} catch (IllegalArgumentException e) {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tv.setText(&quot;IllegalArgumentExceptio&quot;);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-tab-count:1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;span lang=&quot;EN-US&quot;&gt;Adroid&lt;/span&gt;의&lt;span lang=&quot;EN-US&quot;&gt;
isReachable() &lt;/span&gt;함수는 다음 소스파일에 구현되어 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;소스 다운로드 방법은 &lt;span lang=&quot;EN-US&quot;&gt;http://source.android.com/download
&lt;/span&gt;참고&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;dalvik/libcore/luni/src/main/java/java/net/InetAddress.java&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;span lang=&quot;EN-US&quot;&gt;isReachble &lt;/span&gt;메소드의 호출관계는 다음과 같다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;인터페이스가 여러개일 경우&lt;span lang=&quot;EN-US&quot;&gt;, isReachableByMultiThread()&lt;/span&gt;를
호출한다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style=&quot;mso-element:para-border-div;border:solid windowtext 1.0pt;
padding:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;public boolean isReachble(int timeout)&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-fareast-font-family:&amp;quot;맑은 고딕&amp;quot;;mso-fareast-theme-font:minor-latin&quot;&gt;┗&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; public boolean isReachable(NetworkInterface netif, final int ttl,
final int timeout)&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-fareast-font-family:&amp;quot;맑은 고딕&amp;quot;;mso-fareast-theme-font:minor-latin&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;┗ private boolean
isReachableByTCP(InetAddress dest, InetAddress source,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-fareast-font-family:&amp;quot;맑은 고딕&amp;quot;;mso-fareast-theme-font:minor-latin&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int timeout)&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-fareast-font-family:&amp;quot;맑은 고딕&amp;quot;;
mso-fareast-theme-font:minor-latin&quot;&gt;isReachableByTCP() &lt;/span&gt;&lt;span style=&quot;mso-fareast-font-family:&amp;quot;맑은 고딕&amp;quot;;mso-fareast-theme-font:minor-latin&quot;&gt;함수는 다음과
같이 구현되어 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style=&quot;mso-element:para-border-div;border:solid windowtext 1.0pt;
padding:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;private boolean isReachableByTCP(InetAddress dest, InetAddress
source,&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int timeout)
throws IOException {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;FileDescriptor fd =
new FileDescriptor();&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// define traffic only
for parameter&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int traffic = 0;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;boolean reached =
false;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;NETIMPL.createStreamSocket(fd, NetUtil.preferIPv4Stack());&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;try {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (null !=
source) {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;NETIMPL.bind(fd, source, 0);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight:normal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color:blue&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;NETIMPL.connectStreamWithTimeoutSocket&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot;&gt;(fd,
7, timeout, traffic,&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dest);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;reached = true;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} catch (IOException
e) {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if
(ERRMSG_CONNECTION_REFUSED.equals(e.getMessage())) {&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Connection
refused means the IP is reachable&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;reached = true;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;NETIMPL.socketClose(fd);&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return reached;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;결국&lt;span lang=&quot;EN-US&quot;&gt; NETIMPL.connectStreamWithTimeoutSocket()
&lt;/span&gt;메소드를 이용하고 있다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;여기에 두번째 인수로 들어간&lt;span lang=&quot;EN-US&quot;&gt; 7&lt;/span&gt;은&lt;span lang=&quot;EN-US&quot;&gt; ECHO &lt;/span&gt;포트이다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;이 함수는 다음&lt;span lang=&quot;EN-US&quot;&gt;
java &lt;/span&gt;파일에서 선언하고 있는 것처럼&lt;span lang=&quot;EN-US&quot;&gt; native (C&lt;/span&gt;코드&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;로 연결된다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&lt;/span&gt;./dalvik/libcore/luni/src/main/java/org/apache/harmony/luni/platform/OSNetworkSystem.java&lt;/span&gt;&lt;/p&gt;

&lt;div style=&quot;mso-element:para-border-div;border:solid windowtext 1.0pt;
padding:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static native void connectStreamWithTimeoutSocketImpl(FileDescriptor
aFD,&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int aport, int
timeout, int trafficClass, InetAddress inetAddress)&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;throws
IOException;&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;즉&lt;span lang=&quot;EN-US&quot;&gt;, JNI&lt;/span&gt;를 통해&lt;span lang=&quot;EN-US&quot;&gt; c&lt;/span&gt;코드로
연결되며&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;해당 소스는 다음과 같다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;./dalvik/libcore/luni/src/main/native/org_apache_harmony_luni_platform_OSNetworkSystem.cpp&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;해당함수는&lt;span lang=&quot;EN-US&quot;&gt;, osNetworkSystem_connectStreamWithTimeoutSocketImpl()
&lt;/span&gt;이다&lt;span lang=&quot;EN-US&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;div style=&quot;mso-element:para-border-div;border:solid windowtext 1.0pt;
padding:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static void osNetworkSystem_connectStreamWithTimeoutSocketImpl(JNIEnv*
env,&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;jclass clazz, jobject
fileDescriptor, jint remotePort, jint timeout,&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;border:none;mso-border-alt:solid windowtext 1.0pt;
padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;mso-border-shadow:yes&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;mso-spacerun:yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;jint trafficClass,
jobject inetAddr)&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;지면상 소스코드는 생략한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;여기서 핵심 동작은 &lt;span lang=&quot;EN-US&quot;&gt;sockConnectWithTimeout() &lt;/span&gt;함수를 호출하는 것이다&lt;span lang=&quot;EN-US&quot;&gt;. sockConnectWithTimeout()&lt;/span&gt;함수는
전통적인 &lt;span lang=&quot;EN-US&quot;&gt;Unix&lt;/span&gt;의 소켓 프로그램과 거의 같다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;내부적으로&lt;span lang=&quot;EN-US&quot;&gt; doConnect()&lt;/span&gt;함수를 호출하며&lt;span lang=&quot;EN-US&quot;&gt;, doConnect()&lt;/span&gt;함수는&lt;span lang=&quot;EN-US&quot;&gt; connect() &lt;/span&gt;함수를 호출한다&lt;span lang=&quot;EN-US&quot;&gt;. &lt;/span&gt;특이한 것은 &lt;span lang=&quot;EN-US&quot;&gt;osNetworkSystem_connectStreamWithTimeoutSocketImpl() &lt;/span&gt;함수에&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;만약&lt;span lang=&quot;EN-US&quot;&gt; AdbNetworking &lt;/span&gt;을 사용하도록 되어 있으면&lt;span lang=&quot;EN-US&quot;&gt; ADB redirect&lt;/span&gt;하도록 되어 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;결과적으로&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;안드로이드&lt;span lang=&quot;EN-US&quot;&gt;
InetAddress.isReachable() &lt;/span&gt;메소드는&lt;span lang=&quot;EN-US&quot;&gt; TCP ECHO &lt;/span&gt;포트로 연결을 시도하여&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;연결에 성공하거나&lt;span lang=&quot;EN-US&quot;&gt;, Refused&lt;/span&gt;를 받았을 경우에는&lt;span lang=&quot;EN-US&quot;&gt; Reachable&lt;/span&gt;로 판단하고&lt;span lang=&quot;EN-US&quot;&gt;, &lt;/span&gt;그외의&lt;span lang=&quot;EN-US&quot;&gt; Timeout&lt;/span&gt;등의 에러에 대해서는&lt;span lang=&quot;EN-US&quot;&gt; Unreachble&lt;/span&gt;로 판단하도록
구현되어 있다&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&amp;nbsp;문서끝&lt;span lang=&quot;EN-US&quot;&gt;.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 09 Mar 2010 15:01:23 +0900</pubDate>
										<slash:comments>1</slash:comments>
			</item>
		<item>
		<title>linux 에서 nexus one 이용해서 개발하실 분들 참고사항</title>
		<dc:creator>원준</dc:creator>
		<link>http://www.androidpub.com/183794</link>
				<guid isPermaLink="true">http://www.androidpub.com/183794</guid>
		  
						<comments>http://www.androidpub.com/183794#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;제가 방금 했던 삽질인데요&lt;BR&gt;http://developer.android.com/guide/developing/device.html#setting-up 에서 보면&lt;BR&gt;HTC의 vendor id 가 0bb4 라고 나옵니다.&lt;BR&gt;nexus one 의 경우 htc 가 만들었으니 0bb4로 설정하면 나와야하는 것이 맞겠죠?&lt;BR&gt;근데 업데이트 이후 바뀐 것 같다네요 업데이트 버그인지 진짜로 바뀐 것인지는 모르겠으나&lt;BR&gt;id 를 18d1 으로 해줘야 제대로 잡습니다. &lt;BR&gt;참고하세요&lt;BR&gt;&lt;BR&gt;google이 vendor 로 들어가는 건지...위 페이지에 나와있는 vendor id는 아닙니다.&lt;BR&gt;저도 그냥 웹검색해서 찾은거라 정확한 출처는 모르겠고 저 id로 하면 동작은 됩니다 ^^;&lt;/div&gt;</description>
				<pubDate>Tue, 09 Mar 2010 14:01:37 +0900</pubDate>
									</item>
		<item>
		<title>SDK에서 마켓클라이언트 사용</title>
		<dc:creator>순돌이</dc:creator>
		<link>http://www.androidpub.com/181584</link>
				<guid isPermaLink="true">http://www.androidpub.com/181584</guid>
		  
						<comments>http://www.androidpub.com/181584#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;SDK에 있는 에뮬레이터로 구글 마켓을 볼 수 있게 만든 마켓이미지 파일입니다.&lt;br&gt;&lt;br&gt;안드로이드 개발에 관심이 있는 많은 분들이 아직 실제로 안드로이드폰이 없어서 구글 마켓에 어떤 어플들이 있는지 볼 기회도 없었으리라 생각됩니다.&amp;nbsp; 에뮬레이터를 통해서 마켓을 한번 둘러보면, 어떤 어플들이 있고, 어떤 어플들이 아직 없는지 보실 수 있으실 겁니다.&amp;nbsp; 향 후 어떤 프로그램을 개발하실지 아이디어를 얻는데 도움이 되리라 생각됩니다.&lt;br&gt;&lt;br&gt;설치방법&lt;br&gt;1. 아래 폴더의 system.img 파일을 첨부된 파일로 덮어씌웁니다.&lt;br&gt;&lt;a href=&quot;http://www.zumodrive.com/share/42RKYzZiOG&quot; onclick=&quot;window.open(this.href);return false;&quot; class=&quot; editor_blue_text&quot;&gt;1.5 이미지&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.zumodrive.com/share/42RJYTA2Mj&quot; onclick=&quot;window.open(this.href);return false;&quot; class=&quot; editor_blue_text&quot;&gt;1.6 이미지&lt;/a&gt;&lt;br&gt;&lt;br&gt;Windows XP 기준)&lt;br&gt;&lt;i&gt;안드로이드SDK설치폴더&lt;/i&gt;\platforms\android-&amp;lt;버전&amp;gt;\images&lt;br&gt;&lt;br&gt;2. AVD Manager로 새로운 Android Virtual Device를 생성합니다.&amp;nbsp; 이 때, API Level은 다운받으신 파일에 맞게 선택합니다.&lt;br&gt;&lt;br&gt;3. AVD를 시작합니다.&lt;br&gt;&lt;br&gt;아래 순서대로 따라하시면 됩니다.&amp;nbsp; 캡처 이미지는 1.6 기준입니다.&lt;br&gt;&lt;br&gt;&lt;img src=&quot;file:///C:/DOCUME%7E1/jungsj/LOCALS%7E1/Temp/moz-screenshot.png&quot; alt=&quot;&quot;&gt;&lt;br&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4050/4416690274_f910ec5a4e.jpg&quot; alt=&quot;회원님이 촬영한 android_market03.&quot; title=&quot;&quot; class=&quot;reflect&quot; height=&quot;500&quot; width=&quot;341&quot;&gt;&lt;br&gt;안드로이드 이미지를 클릭하세요&lt;br&gt;&lt;div style=&quot;visibility: visible;&quot; id=&quot;photo_notes&quot; class=&quot;photo_notes&quot;&gt;&lt;div style=&quot;z-index: 1000; display: none; position: relative; width: 220px; margin-top: -5px; padding-top: 5px;&quot; id=&quot;notes_text_div&quot;&gt;&lt;div id=&quot;notes_text_table&quot;&gt;&lt;div class=&quot;td_note_yeller 
td_note_yeller_container&quot;&gt;&lt;span id=&quot;notes_text_span&quot;&gt;&lt;/span&gt;&lt;form id=&quot;notes_text_form&quot;&gt;&lt;input name=&quot;magic_cookie&quot; value=&quot;e0b7e2ee2effe3a2e6379a3cb3723079&quot; type=&quot;hidden&quot;&gt;&lt;textarea style=&quot;height: 58px;&quot; _onkeydown=&quot;_limit_textarea(this, 300); 
_ge(&apos;photo_notes&apos;).check_note_for_prop()&quot; _onkeyup=&quot;place_notes_text_div(); adjust_textarea_height(this); 
_limit_textarea(this, 300); _ge(&apos;photo_notes&apos;).check_note_for_prop()&quot; id=&quot;notes_text_area&quot; rows=&quot;1&quot; wrap=&quot;virtual&quot;&gt;&lt;/textarea&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;form id=&quot;notes_text_buttons_form&quot;&gt;&lt;input class=&quot;Butt&quot; value=&quot;저장&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).save_editing(); this.blur();&quot; type=&quot;button&quot;&gt;&lt;input class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).cancel_editing(); this.blur();&quot; type=&quot;button&quot;&gt;&lt;input class=&quot;DeleteButt&quot; value=&quot;삭제!&quot; id=&quot;delete_note_button&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).delete_note(); 
this.blur();&quot; type=&quot;button&quot;&gt;&lt;/form&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1002; display: none;&quot; id=&quot;comm_div&quot;&gt;&lt;table id=&quot;comm_table&quot; style=&quot;width: 200px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 3px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px 0px 0px;&quot; valign=&quot;top&quot; width=&quot;1&quot;&gt;&lt;img id=&quot;comm_pulser_img&quot; src=&quot;http://l.yimg.com/g/images/pulser2.gif&quot; border=&quot;0&quot; height=&quot;15&quot; width=&quot;32&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px; font-size: 12px;&quot; id=&quot;comm_td&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id=&quot;comm_button_tr&quot;&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px;&quot;&gt;&lt;form&gt;&lt;nobr&gt;&lt;input id=&quot;comm_button_ok&quot; class=&quot;Butt&quot; value=&quot;OK&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;input id=&quot;comm_button_cancel&quot; class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;/nobr&gt;&lt;/form&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1003; display: none;&quot; id=&quot;rotate_div&quot;&gt;&lt;div id=&quot;rotate_table&quot; style=&quot;width: 218px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 1px;&quot;&gt;&lt;div class=&quot;td_note_white&quot; style=&quot;padding: 0px; text-align: center; margin-top: 3px;&quot;&gt;&lt;span id=&quot;rotate_span&quot; style=&quot;font-family: arial; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 999; display: none;&quot; id=&quot;shadow_div&quot;&gt;&lt;table class=&quot;shadow_table&quot; style=&quot;padding: 0px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite shadow_tl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td id=&quot;shadow_width_controller&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_t&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_tr&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td id=&quot;shadow_height_controller&quot; height=&quot;30&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_l&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_r&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_bl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img id=&quot;shadow_width_controller2&quot; src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_b&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_br&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;img src=&quot;http://farm5.static.flickr.com/4025/4415923695_cd925f1397.jpg&quot; alt=&quot;회원님이 촬영한 android_market04.&quot; title=&quot;&quot; class=&quot;reflect&quot; height=&quot;500&quot; width=&quot;341&quot;&gt;&lt;br&gt;Skip을 클릭하세요&lt;br&gt;&lt;br&gt;&lt;div style=&quot;z-index: 1002; display: none;&quot; id=&quot;comm_div&quot;&gt;&lt;table id=&quot;comm_table&quot; style=&quot;width: 200px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 3px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px 0px 0px;&quot; valign=&quot;top&quot; width=&quot;1&quot;&gt;&lt;img id=&quot;comm_pulser_img&quot; src=&quot;http://l.yimg.com/g/images/pulser2.gif&quot; border=&quot;0&quot; height=&quot;15&quot; width=&quot;32&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px; font-size: 12px;&quot; id=&quot;comm_td&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id=&quot;comm_button_tr&quot;&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px;&quot;&gt;&lt;form&gt;&lt;nobr&gt;&lt;input id=&quot;comm_button_ok&quot; class=&quot;Butt&quot; value=&quot;OK&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;input id=&quot;comm_button_cancel&quot; class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;/nobr&gt;&lt;/form&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1003; display: none;&quot; id=&quot;rotate_div&quot;&gt;&lt;div id=&quot;rotate_table&quot; style=&quot;width: 218px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 1px;&quot;&gt;&lt;div class=&quot;td_note_white&quot; style=&quot;padding: 0px; text-align: center; margin-top: 3px;&quot;&gt;&lt;span id=&quot;rotate_span&quot; style=&quot;font-family: arial; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 999; display: none;&quot; id=&quot;shadow_div&quot;&gt;&lt;table class=&quot;shadow_table&quot; style=&quot;padding: 0px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite shadow_tl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td id=&quot;shadow_width_controller&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_t&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_tr&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td id=&quot;shadow_height_controller&quot; height=&quot;30&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_l&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_r&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_bl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img id=&quot;shadow_width_controller2&quot; src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_b&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_br&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;img src=&quot;http://farm3.static.flickr.com/2678/4416690298_f2372e926c.jpg&quot; alt=&quot;회원님이 촬영한 android_market05.&quot; title=&quot;&quot; class=&quot;reflect&quot; height=&quot;500&quot; width=&quot;340&quot;&gt;&lt;br&gt;Skip을 클릭하세요&lt;br&gt;&lt;br&gt;&lt;div style=&quot;visibility: visible;&quot; id=&quot;photo_notes&quot; class=&quot;photo_notes&quot;&gt;&lt;div style=&quot;z-index: 1000; display: none; position: relative; width: 220px; margin-top: -5px; padding-top: 5px;&quot; id=&quot;notes_text_div&quot;&gt;&lt;div id=&quot;notes_text_table&quot;&gt;&lt;div class=&quot;td_note_yeller 
td_note_yeller_container&quot;&gt;&lt;span id=&quot;notes_text_span&quot;&gt;&lt;/span&gt;&lt;form id=&quot;notes_text_form&quot;&gt;&lt;input name=&quot;magic_cookie&quot; value=&quot;e0b7e2ee2effe3a2e6379a3cb3723079&quot; type=&quot;hidden&quot;&gt;&lt;textarea style=&quot;height: 58px;&quot; _onkeydown=&quot;_limit_textarea(this, 300); 
_ge(&apos;photo_notes&apos;).check_note_for_prop()&quot; _onkeyup=&quot;place_notes_text_div(); adjust_textarea_height(this); 
_limit_textarea(this, 300); _ge(&apos;photo_notes&apos;).check_note_for_prop()&quot; id=&quot;notes_text_area&quot; rows=&quot;1&quot; wrap=&quot;virtual&quot;&gt;&lt;/textarea&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;form id=&quot;notes_text_buttons_form&quot;&gt;&lt;input class=&quot;Butt&quot; value=&quot;저장&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).save_editing(); this.blur();&quot; type=&quot;button&quot;&gt;&lt;input class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).cancel_editing(); this.blur();&quot; type=&quot;button&quot;&gt;&lt;input class=&quot;DeleteButt&quot; value=&quot;삭제!&quot; id=&quot;delete_note_button&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).delete_note(); 
this.blur();&quot; type=&quot;button&quot;&gt;&lt;/form&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1002; display: none;&quot; id=&quot;comm_div&quot;&gt;&lt;table id=&quot;comm_table&quot; style=&quot;width: 200px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 3px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px 0px 0px;&quot; valign=&quot;top&quot; width=&quot;1&quot;&gt;&lt;img id=&quot;comm_pulser_img&quot; src=&quot;http://l.yimg.com/g/images/pulser2.gif&quot; border=&quot;0&quot; height=&quot;15&quot; width=&quot;32&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px; font-size: 12px;&quot; id=&quot;comm_td&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id=&quot;comm_button_tr&quot;&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px;&quot;&gt;&lt;form&gt;&lt;nobr&gt;&lt;input id=&quot;comm_button_ok&quot; class=&quot;Butt&quot; value=&quot;OK&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;input id=&quot;comm_button_cancel&quot; class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;/nobr&gt;&lt;/form&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1003; display: none;&quot; id=&quot;rotate_div&quot;&gt;&lt;div id=&quot;rotate_table&quot; style=&quot;width: 218px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 1px;&quot;&gt;&lt;div class=&quot;td_note_white&quot; style=&quot;padding: 0px; text-align: center; margin-top: 3px;&quot;&gt;&lt;span id=&quot;rotate_span&quot; style=&quot;font-family: arial; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 999; display: none;&quot; id=&quot;shadow_div&quot;&gt;&lt;table class=&quot;shadow_table&quot; style=&quot;padding: 0px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite shadow_tl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td id=&quot;shadow_width_controller&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_t&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_tr&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td id=&quot;shadow_height_controller&quot; height=&quot;30&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_l&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_r&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_bl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img id=&quot;shadow_width_controller2&quot; src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_b&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_br&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;img src=&quot;http://farm5.static.flickr.com/4030/4415923735_d23582b26c.jpg&quot; alt=&quot;회원님이 촬영한 android_market06.&quot; title=&quot;&quot; class=&quot;reflect&quot; height=&quot;500&quot; width=&quot;340&quot;&gt;&lt;br&gt;Next를 클릭하세요&lt;br&gt;&lt;br&gt;&lt;div style=&quot;visibility: visible;&quot; id=&quot;photo_notes&quot; class=&quot;photo_notes&quot;&gt;&lt;div style=&quot;z-index: 1000; display: none; position: relative; width: 220px; margin-top: -5px; padding-top: 5px;&quot; id=&quot;notes_text_div&quot;&gt;&lt;div id=&quot;notes_text_table&quot;&gt;&lt;div class=&quot;td_note_yeller 
td_note_yeller_container&quot;&gt;&lt;span id=&quot;notes_text_span&quot;&gt;&lt;/span&gt;&lt;form id=&quot;notes_text_form&quot;&gt;&lt;input name=&quot;magic_cookie&quot; value=&quot;e0b7e2ee2effe3a2e6379a3cb3723079&quot; type=&quot;hidden&quot;&gt;&lt;textarea style=&quot;height: 58px;&quot; _onkeydown=&quot;_limit_textarea(this, 300); 
_ge(&apos;photo_notes&apos;).check_note_for_prop()&quot; _onkeyup=&quot;place_notes_text_div(); adjust_textarea_height(this); 
_limit_textarea(this, 300); _ge(&apos;photo_notes&apos;).check_note_for_prop()&quot; id=&quot;notes_text_area&quot; rows=&quot;1&quot; wrap=&quot;virtual&quot;&gt;&lt;/textarea&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;form id=&quot;notes_text_buttons_form&quot;&gt;&lt;input class=&quot;Butt&quot; value=&quot;저장&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).save_editing(); this.blur();&quot; type=&quot;button&quot;&gt;&lt;input class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).cancel_editing(); this.blur();&quot; type=&quot;button&quot;&gt;&lt;input class=&quot;DeleteButt&quot; value=&quot;삭제!&quot; id=&quot;delete_note_button&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).delete_note(); 
this.blur();&quot; type=&quot;button&quot;&gt;&lt;/form&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1002; display: none;&quot; id=&quot;comm_div&quot;&gt;&lt;table id=&quot;comm_table&quot; style=&quot;width: 200px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 3px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px 0px 0px;&quot; valign=&quot;top&quot; width=&quot;1&quot;&gt;&lt;img id=&quot;comm_pulser_img&quot; src=&quot;http://l.yimg.com/g/images/pulser2.gif&quot; border=&quot;0&quot; height=&quot;15&quot; width=&quot;32&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px; font-size: 12px;&quot; id=&quot;comm_td&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id=&quot;comm_button_tr&quot;&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px;&quot;&gt;&lt;form&gt;&lt;nobr&gt;&lt;input id=&quot;comm_button_ok&quot; class=&quot;Butt&quot; value=&quot;OK&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;input id=&quot;comm_button_cancel&quot; class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;/nobr&gt;&lt;/form&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1003; display: none;&quot; id=&quot;rotate_div&quot;&gt;&lt;div id=&quot;rotate_table&quot; style=&quot;width: 218px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 1px;&quot;&gt;&lt;div class=&quot;td_note_white&quot; style=&quot;padding: 0px; text-align: center; margin-top: 3px;&quot;&gt;&lt;span id=&quot;rotate_span&quot; style=&quot;font-family: arial; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 999; display: none;&quot; id=&quot;shadow_div&quot;&gt;&lt;table class=&quot;shadow_table&quot; style=&quot;padding: 0px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite shadow_tl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td id=&quot;shadow_width_controller&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_t&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_tr&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td id=&quot;shadow_height_controller&quot; height=&quot;30&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_l&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_r&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_bl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img id=&quot;shadow_width_controller2&quot; src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_b&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_br&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;img src=&quot;http://farm5.static.flickr.com/4004/4415923751_86550cf7ac.jpg&quot; alt=&quot;회원님이 촬영한 android_market07.&quot; title=&quot;&quot; class=&quot;reflect&quot; height=&quot;500&quot; width=&quot;341&quot;&gt;&lt;br&gt;하단의 메뉴상자를 클릭하세요&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div style=&quot;z-index: 1002; display: none;&quot; id=&quot;comm_div&quot;&gt;&lt;table id=&quot;comm_table&quot; style=&quot;width: 200px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 3px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px 0px 0px;&quot; valign=&quot;top&quot; width=&quot;1&quot;&gt;&lt;img id=&quot;comm_pulser_img&quot; src=&quot;http://l.yimg.com/g/images/pulser2.gif&quot; border=&quot;0&quot; height=&quot;15&quot; width=&quot;32&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px; font-size: 12px;&quot; id=&quot;comm_td&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id=&quot;comm_button_tr&quot;&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px;&quot;&gt;&lt;form&gt;&lt;nobr&gt;&lt;input id=&quot;comm_button_ok&quot; class=&quot;Butt&quot; value=&quot;OK&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;input id=&quot;comm_button_cancel&quot; class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;/nobr&gt;&lt;/form&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1003; display: none;&quot; id=&quot;rotate_div&quot;&gt;&lt;div id=&quot;rotate_table&quot; style=&quot;width: 218px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 1px;&quot;&gt;&lt;div class=&quot;td_note_white&quot; style=&quot;padding: 0px; text-align: center; margin-top: 3px;&quot;&gt;&lt;span id=&quot;rotate_span&quot; style=&quot;font-family: arial; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 999; display: none;&quot; id=&quot;shadow_div&quot;&gt;&lt;table class=&quot;shadow_table&quot; style=&quot;padding: 0px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite shadow_tl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td id=&quot;shadow_width_controller&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_t&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_tr&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td id=&quot;shadow_height_controller&quot; height=&quot;30&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_l&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_r&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_bl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img id=&quot;shadow_width_controller2&quot; src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_b&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_br&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;img src=&quot;http://farm3.static.flickr.com/2739/4415923679_3cf81f3ee0.jpg&quot; alt=&quot;회원님이 촬영한 android_market01.&quot; title=&quot;&quot; class=&quot;reflect&quot; height=&quot;500&quot; width=&quot;340&quot;&gt;&lt;br&gt;Market을 클릭하세요&lt;br&gt;&lt;br&gt;&lt;div style=&quot;visibility: visible;&quot; id=&quot;photo_notes&quot; class=&quot;photo_notes&quot;&gt;&lt;div style=&quot;z-index: 1000; display: none; position: relative; width: 220px; margin-top: -5px; padding-top: 5px;&quot; id=&quot;notes_text_div&quot;&gt;&lt;div id=&quot;notes_text_table&quot;&gt;&lt;div class=&quot;td_note_yeller 
td_note_yeller_container&quot;&gt;&lt;span id=&quot;notes_text_span&quot;&gt;&lt;/span&gt;&lt;form id=&quot;notes_text_form&quot;&gt;&lt;input name=&quot;magic_cookie&quot; value=&quot;e0b7e2ee2effe3a2e6379a3cb3723079&quot; type=&quot;hidden&quot;&gt;&lt;textarea style=&quot;height: 58px;&quot; _onkeydown=&quot;_limit_textarea(this, 300); 
_ge(&apos;photo_notes&apos;).check_note_for_prop()&quot; _onkeyup=&quot;place_notes_text_div(); adjust_textarea_height(this); 
_limit_textarea(this, 300); _ge(&apos;photo_notes&apos;).check_note_for_prop()&quot; id=&quot;notes_text_area&quot; rows=&quot;1&quot; wrap=&quot;virtual&quot;&gt;&lt;/textarea&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;form id=&quot;notes_text_buttons_form&quot;&gt;&lt;input class=&quot;Butt&quot; value=&quot;저장&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).save_editing(); this.blur();&quot; type=&quot;button&quot;&gt;&lt;input class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).cancel_editing(); this.blur();&quot; type=&quot;button&quot;&gt;&lt;input class=&quot;DeleteButt&quot; value=&quot;삭제!&quot; id=&quot;delete_note_button&quot; _onclick=&quot;_ge(&apos;photo_notes&apos;).delete_note(); 
this.blur();&quot; type=&quot;button&quot;&gt;&lt;/form&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1002; display: none;&quot; id=&quot;comm_div&quot;&gt;&lt;table id=&quot;comm_table&quot; style=&quot;width: 200px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 3px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px 0px 0px;&quot; valign=&quot;top&quot; width=&quot;1&quot;&gt;&lt;img id=&quot;comm_pulser_img&quot; src=&quot;http://l.yimg.com/g/images/pulser2.gif&quot; border=&quot;0&quot; height=&quot;15&quot; width=&quot;32&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px; font-size: 12px;&quot; id=&quot;comm_td&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id=&quot;comm_button_tr&quot;&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot; style=&quot;padding: 3px;&quot;&gt;&lt;form&gt;&lt;nobr&gt;&lt;input id=&quot;comm_button_ok&quot; class=&quot;Butt&quot; value=&quot;OK&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;input id=&quot;comm_button_cancel&quot; class=&quot;CancelButt&quot; value=&quot;취소&quot; _onclick=&quot;this.onclick_func();&quot; style=&quot;margin: 5px 5px 0pt 0pt;&quot; type=&quot;button&quot;&gt;&lt;/nobr&gt;&lt;/form&gt;&lt;/td&gt;&lt;td class=&quot;td_white&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 1003; display: none;&quot; id=&quot;rotate_div&quot;&gt;&lt;div id=&quot;rotate_table&quot; style=&quot;width: 218px; background: none repeat scroll 0% 0% rgb(255, 255, 255); -moz-border-radius: 3px 3px 3px 3px; padding: 1px;&quot;&gt;&lt;div class=&quot;td_note_white&quot; style=&quot;padding: 0px; text-align: center; margin-top: 3px;&quot;&gt;&lt;span id=&quot;rotate_span&quot; style=&quot;font-family: arial; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;z-index: 999; display: none;&quot; id=&quot;shadow_div&quot;&gt;&lt;table class=&quot;shadow_table&quot; style=&quot;padding: 0px;&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite shadow_tl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td id=&quot;shadow_width_controller&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_t&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td width=&quot;11&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_tr&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td id=&quot;shadow_height_controller&quot; height=&quot;30&quot;&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_l&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_r&quot; height=&quot;100%&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_bl&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img id=&quot;shadow_width_controller2&quot; src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_b&quot; height=&quot;11&quot; width=&quot;100%&quot;&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;http://l.yimg.com/g/images/spaceout.gif&quot; class=&quot;shadow_sprite 
shadow_br&quot; height=&quot;11&quot; width=&quot;11&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;img src=&quot;http://farm5.static.flickr.com/4038/4416690256_998f2aff6e.jpg&quot; alt=&quot;회원님이 촬영한 android_market02.&quot; title=&quot;&quot; class=&quot;reflect&quot; height=&quot;500&quot; width=&quot;340&quot;&gt;&lt;br&gt;이제 구글 마켓을 탐험하시면 됩니다~&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;lt;정보출처&amp;gt; 칸드로이드 (www.kandroid.org)&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 08 Mar 2010 18:07:18 +0900</pubDate>
						<category>안드로이드</category>
				<category>마켓</category>
				<category>SDK</category>
							</item>
		<item>
		<title>[DOC번역] 터치 모드</title>
		<dc:creator>순돌이</dc:creator>
		<link>http://www.androidpub.com/180463</link>
				<guid isPermaLink="true">http://www.androidpub.com/180463</guid>
		  
						<comments>http://www.androidpub.com/180463#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;h2 class=&quot;post-title entry-title&quot;&gt;&lt;font size=&quot;2&quot;&gt;제공된 영문문서를 나름대로 번역해 
봤습니다.&amp;nbsp; 전문 번역가가 아니라, 조금 매끄럽지 못한 부분도 많겠지만, 핵심적인 내용을 이해하시는데는 무리가 없을 것으로 
생각됩니다. 안드로이드 어플 개발에 참고할 만한 좋은 정보가 되었으면 좋겠습니다. &lt;br&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br&gt;&lt;h2 class=&quot;post-title entry-title&quot;&gt;&lt;font size=&quot;6&quot;&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://android-developers.blogspot.com/2008/12/touch-mode.html&quot;&gt;터치
 모드&lt;/a&gt;&lt;/font&gt;
&lt;/h2&gt;
&lt;div class=&quot;post-byline&quot;&gt;
                                    작성자: Romain Guy&amp;nbsp; 작성일시: 2008년 12월 1일 
1:15 PM
&lt;/div&gt;

&lt;p&gt;
&lt;/p&gt;안드로이드용 사용자 인터페이스를 디자인하고 개발하는 것은 일반적인 데스크탑 환경에서 하는 것과는 상당한 차이가 있습니다.&amp;nbsp;
 안드로이드는 모바일 장치에서 어플리케이션을 실행하고, 어플리케이션 디자이너와 개발자들은 명확하지 않은 다수의 제약사항을 다뤄야 
하기 때문입니다.&amp;nbsp; 우리는 여러분이 더 나은 어플리케이션을 디자인하고 개발하는 것을 돕기위해 안드로이드 사용자 인터페이스에 관한 
새로운 시리즈의 게시물을 작성하고자 합니다.&amp;nbsp; 이 시리즈에서 우리는 여러분에게 디자인 가이드, 툴, 개발팁을 제공하고 안드로이드 
UI 툴킷의 핵심적인 원리들을 설명할 것입니다.&amp;nbsp; 목표는 간단합니다: 우리는 여러분이 훌륭한 사용자 경험(인터페이스)을 디자인하고
 개발하는 것을 돕고 싶습니다.&amp;nbsp; 이 시리즈를 시작하면서, UI 툴킷의 가장 중요한 원리 중 하나인 &lt;span style=&quot;font-style: italic;&quot;&gt;터치 모드&lt;/span&gt;에 대해 소개하고자 합니다. 터치 모드는 폰과 사용자의 
접촉에 따른 뷰 계층의 상태입니다.&amp;nbsp; 터치 모드는 마지막 사용자 접촉이 터치 스크린에 실행됐는지 간단히 표시하기 때문에, 그 
자체만으로도 아주 이해하기 쉬운 것입니다.&amp;nbsp; 예를 들어, 여러분이 G1 폰을 사용하고 있다면, 틀랙볼로 위젯을 선택하는 것이 
여러분을 터치 모드에서 빠져나오게 할 것입니다; 하지만, 여러분이 스크린의 버튼을 손가락으로 접촉하면, 여러분은 터치 모드로 
들어오게 됩니다. 사용자가 터치 모드가 아닐 때, 우리가 틀랙볼 모드, 네비게이션 모드 혹은 키보드 네비게이션이라고 말할 때 이 
용어들에 놀라지 마시기 바랍니다.&amp;nbsp; 마지막으로, 터치 모드와 직접 관련된 단 하나의 API만이 존재합니다.&lt;br&gt;&lt;br&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/view/View.html#isInTouchMode%28%29&quot;&gt;View.isInTouchMode()&lt;/a&gt;.
쉽죠?&amp;nbsp; 이상하리만큼, 터치 모드는 거짓말처럼 간단하지만 터치 모드에 들어감으로 인해 생기는 결과는 여러분이 생각하는 것보다 훨씬
 큽니다. 몇 가지 이유에 대해 알아봅시다.&lt;br&gt;&lt;h4&gt;&lt;br&gt;&lt;/h4&gt;&lt;h4&gt;터치 모드, 선택, 그리고 Focus&lt;br&gt;&lt;/h4&gt;모
바일 장치용 UI 툴킷을 디자인하는 것은 모바일 장치가 제공하는 다양한 상호작용 메카니즘으로 인해 매우 어렵습니다. 일부 장치들은
 12개의 키만 제공하고, 어떤 장치는 터치 스크린이 있고, 어떤 장치는 스타일러스가 필요하고, 어떤 장치는 터치 스크린과 키보드
 둘 다 가지고 있습니다.&amp;nbsp; 이런 상황에서, 최초의 상용 장치 G1이 터치 스크린, 트랙볼, 키보드를 사용하는 다중 입력폼을 
제공한다는 사실은 안드로이드 개발 커뮤니티에 긍정적인 영향을 줍니다.&amp;nbsp; 사용자가 세 가지의 다른 메카니즘을 통해 어플리케이션과 
소통할 수 있기 때문에, 우리는 가능한 모든 상황을 심각하게 고려해야만 합니다.&amp;nbsp; 우리는 한 가지 문제 때문에 터치 모드를 만들게
 되었습니다.&lt;br&gt;텍스트 아이템 리스트를 보여주는 간단한 어플리케이션(예) &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/samples/index.html&quot;&gt;ApiDemos&lt;/a&gt; )을
 생각해 보세요. 사용자는 틀랙볼을 사용해서 자유롭게 리스트를 볼 수 있고, 또한 스크롤 하거나 손가락을 이용해 화면을 이동할 
수도 있습니다. 이 시나리오에서 선택이 문제가 됩니다.&amp;nbsp; 만약, 제가 리스트에 있는 최상단의 아이템을 선택하고 아래로 쓸어내리면,
 선택의 관점에서는 어떤 일이 일어나야 할까요?&amp;nbsp; 아이템이 그대로 선택되어져 있고 화면만 스크롤 되어야 할까요?&amp;nbsp; 이 상황에서, 
제가 트랙볼을 이용해 선택위치를 옮기기로 결정한다면 무슨 일이 일어날까요?&amp;nbsp; 혹은 더 심하게, 만약 제가 화면에 더 이상 보이지 
않는 현재 선택된 아이템을 실행하기 위해 트랙볼을 누른다면?&amp;nbsp; 신중하게 생각한 후, 우리는 선택을 해젷기로 결정했습니다.&amp;nbsp; &lt;br&gt;&lt;br&gt;터
치 모드에서는 Focus도 선택도 없습니다.&amp;nbsp; 사용자가 터치 모드에 들어서자마자, 그리드 안의 리스트에 있는 선택 아이템은 선택해제 
됩니다. 마찬가지로, 사용자가 터치 모드에 들어서면, 선택된 위젯도 선택해제 됩니다. 아래 이미지는 사용자가 틀랙볼로 아이템을 
선택한 후 리스트를 터치하면 어떻게 되는지 보여줍니다.&lt;br&gt;&lt;br&gt;&lt;img _onclick=&quot;image_window(this)&quot; name=&quot;target_resize_image[]&quot; &amp;#111;&amp;#110;click=&quot;image_window(this)&quot; style=&quot;cursor: pointer;&quot; src=&quot;http://2.bp.blogspot.com/_9l0GmPwgCzk/SSyVEWhud-I/AAAAAAAAAAc/nBJtkfR5GtI/s400/list02.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5272753165743060962&quot; border=&quot;0&quot;&gt;&lt;img _onclick=&quot;image_window(this)&quot; name=&quot;target_resize_image[]&quot; &amp;#111;&amp;#110;click=&quot;image_window(this)&quot; style=&quot;cursor: pointer;&quot; src=&quot;http://4.bp.blogspot.com/_9l0GmPwgCzk/SSyVPgqTlbI/AAAAAAAAAAk/j4R_CQJ6PZI/s400/list01.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5272753357441963442&quot; border=&quot;0&quot;&gt;&lt;br&gt;&lt;br&gt;프레임
워크는 사용자가 좀 더 자연스러움을 느끼게 하기 위해, 터치 모드를 벗어나면 기존의 선택/Focus 상태를 복원할 수 있습니다.&amp;nbsp; 
예를 들어, 위의 예제와 같이, 사용자가 트랙볼을 다시 사용해야 한다면, 이전에 선택된 아이템이 다시 선택되어 집니다. 이것이 왜
 일부 개발자들이 언제 커스텀 뷰를 생성하고 트랙볼을 한번 움직인 다음부터 키 이벤트를 받기 시작하는 것을 혼동하는 이유입니다: 
어플리케이션은 터치 모드에 있고, 터치 모드를 나가 Focus를 복원 하기 위해 트랙볼을 사용해야 합니다.&lt;br&gt;&lt;br&gt;터치 모드, 
선택, Focus의 관계는 여러분이 여러분의 어플리케이션을 빠져나가기 위해 선택과(혹은) Focus에 의존해서는 안된다는 뜻입니다.&amp;nbsp; 
새내기 안드로이드 개발자들이 가지는 일반적인 문제는 &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/widget/AdapterView.html#getSelectedItemPosition%28%29&quot;&gt;ListView.getSelectedItemPosition()&lt;/a&gt;에
 의존하는 것입니다. 터치 모드에서 이 메서드는 &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/widget/AdapterView.html#INVALID_POSITION&quot;&gt;INVALID_POSITION&lt;/a&gt;을
 리턴할 것입니다. 여러분은 &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/widget/AdapterView.html#setOnItemClickListener%28android.widget.AdapterView.OnItemClickListener%29&quot;&gt;click



 listeners&lt;/a&gt; 혹은 &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/widget/ListView.html#setChoiceMode%28int%29&quot;&gt;choice



 mode&lt;/a&gt;를 사용해야 합니다.&lt;br&gt;&lt;h4&gt;&lt;br&gt;&lt;/h4&gt;&lt;h4&gt;터치 모드에서 focusable&lt;br&gt;&lt;/h4&gt;이
제 여러분은 터치 모드에서 Focus가 존재하지 않는다는 것을 압니다. 하지만 저는 이것이 100% 사실은 아니라는 것을 설명해야 
합니다. Focus는 터치 모드에 존재할 수 있지만, 아주 특별한 방법으로만 가능합니다.&amp;nbsp; 우리는 이것을 터치 모드의 focusable이라고 부릅니다. 이 특별한 모드는 &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/widget/EditText.html&quot;&gt;EditText&lt;/a&gt;와
 같은 텍스트 입력을 받는 위젯이나 &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/widget/ListView.html&quot;&gt;ListView&lt;/a&gt;에
서 필터링이 활성화 되었을 때를 위해 만들어졌습니다. 이것이 왜 사용자가 트랙볼이나 손가락으로 먼저 선택하지 않고도 텍스트 필드에
 텍스트를 입력할 수 있는 이유입니다. 사용자가 스크린을 터치할 때, 어플리케이션이 이미 터치 모드가 아니면, 터치 모드로 
들어갑니다. 터치 모드로 들어가는 과정에서 생기는 일은 사용자가 무엇을 터치했는지와 현재 Focus의 상태에 따라 다릅니다. 사용자가
 터치 모드의 focusable 상태인 위젯을 터치하면, 위젯이 Focus가 됩니다.&amp;nbsp; 그 외에 터치 모드의 focusable 상태가 아닌 한, 현재 
Focus된 어떤 위젯도 Focus되지 않습니다.&amp;nbsp; 예를 들어, 아래의 이미지에서, 사용자가 스크린을 터치하면, 입력 텍스트 필드가 Focus가 됩니다.&lt;br&gt;&lt;br&gt;&lt;img _onclick=&quot;image_window(this)&quot; name=&quot;target_resize_image[]&quot; &amp;#111;&amp;#110;click=&quot;image_window(this)&quot; style=&quot;cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_9l0GmPwgCzk/SSyXK0AJyNI/AAAAAAAAAAs/olrz5F3YsVU/s400/text_field.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5272755475757779154&quot; border=&quot;0&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/view/View.html#setFocusableInTouchMode%28boolean%29&quot;&gt;터
치 모드의 focusable&lt;/a&gt;은 여러분이 코드나 XML에서 스스로 설정할 수 있는 속성입니다. 그러나, 이 속성이 안드로이드의 일관된
 일반적인 습성을 훼손하기 때문에, 최소한으로 그리고 아주 특별한 상황에서만 사용되어야 합니다. 터치 모드의 focusable 속성을 잘 
사용할 수 있는 게임은 좋은 어플리케이션 예제입니다. 구글 맵에서처럼, 풀스크린에서 사용되는 MapView는 터치 모드의 focusable을 올바로 사용할 수 있는 또 다른 좋은 예제입니다. &lt;br&gt;&lt;br&gt;아래는 터치 모드의 focusable 위젯을 사용하는 다른 
예입니다.&amp;nbsp; 사용자가 
AutoCompleteTextView의 제안을 손가락으로 선택하면, Focus가 텍스트 입력 필드에 남아있습니다:&lt;br&gt;&lt;br&gt;&lt;img _onclick=&quot;image_window(this)&quot; name=&quot;target_resize_image[]&quot; &amp;#111;&amp;#110;click=&quot;image_window(this)&quot; style=&quot;cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_9l0GmPwgCzk/SSyYRevh8lI/AAAAAAAAAA8/BWRW5T-c1LE/s400/search01.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5272756689821626962&quot; border=&quot;0&quot;&gt;&lt;img _onclick=&quot;image_window(this)&quot; name=&quot;target_resize_image[]&quot; &amp;#111;&amp;#110;click=&quot;image_window(this)&quot; style=&quot;cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_9l0GmPwgCzk/SSyX3pxKmZI/AAAAAAAAAA0/_C8XsM5a50c/s400/search02.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5272756246104676754&quot; border=&quot;0&quot;&gt;&lt;br&gt;&lt;br&gt;새내기
 안드로이드 개발자들은 종종 터치 모드의 focusable이 선택/Focus가 사라지는 문제를 &quot;고치는&quot; 해결책이라고 생각합니다. 우리는 
여러분이 이것을 사용하기 전에 매우 신중히 생각해 보기를 권유드립니다. 만약 잘못 사용되면, 이것은 여러분의 어플리케이션이 
시스템의 나머지 다른 것들과 다르게 행동하게 만들며, 사용자의 습관을 무시하게 됩니다. 안드로이드 프레임워크는 &quot;터치 모드의 focusable&quot;을 사용하지 않고 사용자와의 상호작용을 다룰 수 있는 모든 도구를 포함하고 있습니다. 예를 들어, 선택상태를 유지하는 
ListView를 만드는 대신, 간단히 적당한 &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/android/reference/android/widget/ListView.html#setChoiceMode%28int%29&quot;&gt;choice



 mode&lt;/a&gt;를 사용합니다. 만약 여러분이 프레임워크가 여러분의 필요를 충족시키지 못한다고 느낀다면, &lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/android/issues/list&quot;&gt;우리에게
 알려주시거나&lt;/a&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://source.android.com/&quot;&gt;패치를 제공해
 주시기 바랍니다&lt;/a&gt;.&lt;br&gt;&lt;h4&gt;터치 모드 컨닝 페이퍼&lt;br&gt;&lt;/h4&gt;&lt;p&gt;해야할 것:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;핵심 
어플리케이션과 일관성을 유지하라&lt;br&gt;&lt;/li&gt;&lt;li&gt;지속적인 선택상태가 필요하면, 적절한 기능을 사용하라 (라디오 버튼, 체크 
박스, ListView의 선택 모드 등)&lt;br&gt;&lt;/li&gt;&lt;li&gt;게임을 개발한다면, 터치 모드의 focusable을 사용하라&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;하
지 말아야 할 것:&lt;/p&gt;터치 모드에서 Focus나 선택을 유지하려고 하지 말라&lt;div class=&quot;autosourcing-stub&quot;&gt;&lt;p style=&quot;margin: 11px 0pt 7px; padding: 0pt;&quot;&gt;
 &lt;a href=&quot;http://www.androidside.com/bbs/board.php?bo_table=B46&amp;amp;wr_id=2472&quot; target=&quot;_blank&quot;&gt;&lt;br&gt;&lt;/a&gt;
 &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 08 Mar 2010 10:31:03 +0900</pubDate>
						<category>안드로이드</category>
				<category>터치모드</category>
				<category>개발</category>
								<slash:comments>5</slash:comments>
			</item>
		<item>
		<title>2.1에서만 되는  기능 ?</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/175713</link>
				<guid isPermaLink="true">http://www.androidpub.com/175713</guid>
		  
						<comments>http://www.androidpub.com/175713#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;안녕하세요.&amp;nbsp; &lt;br&gt;&lt;br&gt;안드로이드 OS 2.1에서만 되는 기능이 있네요 . &lt;br&gt;새로운 기능이 아니라&amp;nbsp; 기존에 있던&amp;nbsp; xml 태그 인데요. &lt;br&gt;&lt;br&gt;2.01 까지는&amp;nbsp; 죽고요. &lt;br&gt;2.1 에서는 동작합니다. &lt;br&gt;&lt;br&gt;&lt;br&gt;layout 만들때, &lt;br&gt;&lt;br&gt;&lt;pre class=&quot;brush: xml;&quot;&gt; &amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;fill_parent&quot;
    android:orientation=&quot;vertical&quot;
    android:gravity=&quot;center_vertical&quot; &amp;gt;
    &amp;lt;TabWidget xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:id=&quot;@+id/buttonbar&quot;
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;wrap_content&quot; &amp;gt;
      
   &amp;lt;TextView
        android:id=&quot;@+id/artisttab&quot;
        android:focusable=&quot;true&quot;
        android:background=&quot;@drawable/buttonbarbackground&quot;
        android:drawableTop=&quot;@drawable/ic_tab_artists&quot;
        android:text=&quot;@string/browse_menu&quot;
        android:textAppearance=&quot;?android:attr/textAppearanceSmall&quot;
        android:textColor=&quot;@color/tab_indicator_text&quot;
        android:paddingTop=&quot;7dip&quot;
        android:paddingBottom=&quot;2dip&quot;
        android:gravity=&quot;center&quot;
        android:layout_weight=&quot;1&quot;
        android:layout_marginLeft=&quot;-3dip&quot;
        android:layout_marginRight=&quot;-3dip&quot;
        android:layout_width=&quot;fill_parent&quot;
        android:layout_height=&quot;64dip&quot; /&amp;gt;

  &amp;lt;/TabWidget&amp;gt;
&amp;lt;/LinearLayout&amp;gt;
&lt;/pre&gt;&lt;br&gt;위와 같이 만들어서 실행해 보세요. &lt;br&gt;&lt;br&gt;2.1 에서는 아무 문제 없는데, &lt;br&gt;2.01 까지는 죽는답니다. &lt;br&gt;&lt;br&gt;2.1 에서&amp;nbsp;&amp;nbsp; 위 문제가 수정 되었더군요. &lt;br&gt;&lt;br&gt;수고하세요!&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Fri, 05 Mar 2010 13:18:43 +0900</pubDate>
										<slash:comments>4</slash:comments>
			</item>
		<item>
		<title>안드로이드 차트Chart (Graph)관련</title>
		<dc:creator>cleartext</dc:creator>
		<link>http://www.androidpub.com/175571</link>
				<guid isPermaLink="true">http://www.androidpub.com/175571</guid>
		  
						<comments>http://www.androidpub.com/175571#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;상용&lt;BR&gt;&lt;STRONG&gt;aiCharts&lt;/STRONG&gt; &lt;BR&gt;&lt;A href=&quot;http://www.artfulbits.com/Android/aiCharts.aspx&quot;&gt;http://www.artfulbits.com/Android/aiCharts.aspx&lt;/A&gt;&lt;BR&gt;상용 차트입니다. &lt;BR&gt;갤러리 - &lt;A href=&quot;http://www.artfulbits.com/Android/gallery/galleryCharts.aspx&quot;&gt;http://www.artfulbits.com/Android/gallery/galleryCharts.aspx&lt;/A&gt;&lt;BR&gt;우크라이나 회사 같습니다. 미국에서도 영업합니다.&lt;BR&gt;온라인 결재 299달러 시작&lt;BR&gt;&lt;BR&gt;오픈소스&lt;BR&gt;&lt;A style=&quot;COLOR: #000; TEXT-DECORATION: none&quot; href=&quot;http://code.google.com/p/achartengine/&quot;&gt;&lt;STRONG&gt;achartengine&lt;/STRONG&gt;&lt;/A&gt; &lt;BR&gt;&lt;A href=&quot;http://code.google.com/p/achartengine/&quot;&gt;http://code.google.com/p/achartengine/&lt;/A&gt;&lt;BR&gt;현재도 계속 개발중입니다.&lt;BR&gt;종류&lt;BR&gt;line chart &lt;BR&gt;area chart &lt;BR&gt;scatter chart &lt;BR&gt;time chart &lt;BR&gt;bar chart &lt;BR&gt;pie chart &lt;BR&gt;bubble chart &lt;BR&gt;doughnut chart &lt;BR&gt;&lt;BR&gt;&lt;A style=&quot;COLOR: #000; TEXT-DECORATION: none&quot; href=&quot;http://code.google.com/p/chartdroid/&quot;&gt;&lt;STRONG&gt;chartdroid&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;BR&gt;&lt;/STRONG&gt;&lt;A href=&quot;http://code.google.com/p/chartdroid/&quot;&gt;http://code.google.com/p/chartdroid/&lt;/A&gt;&lt;BR&gt;현재도 계속 개발중입니다.&lt;BR&gt;&lt;BR&gt;&lt;A style=&quot;COLOR: #000; TEXT-DECORATION: none&quot; href=&quot;http://code.google.com/p/androidchart/&quot;&gt;&lt;STRONG&gt;androidchart&lt;/STRONG&gt;&lt;/A&gt; &lt;BR&gt;&lt;A href=&quot;http://code.google.com/p/androidchart/&quot;&gt;http://code.google.com/p/androidchart/&lt;/A&gt;&lt;BR&gt;주식형 차트인데 2008년 이후로 업데이트 되지 않습니다.&lt;BR&gt;&lt;BR&gt;&lt;A href=&quot;http://shaffah.com/droid-analytic-google-analytics-for-android&quot;&gt;http://shaffah.com/droid-analytic-google-analytics-for-android&lt;/A&gt;&lt;BR&gt;이런 비슷한 오픈 소스 프로그램이 있나 해서 찾다가 본건데&lt;BR&gt;개발자가 아니어서 사용성까지는 잘 모르겠습니다. &lt;/P&gt;&lt;/div&gt;</description>
				<pubDate>Fri, 05 Mar 2010 11:57:44 +0900</pubDate>
										<slash:comments>3</slash:comments>
			</item>
		<item>
		<title>LG-KH5200 에서 디버깅 해보신 분 있나요?</title>
		<dc:creator>언언</dc:creator>
		<link>http://www.androidpub.com/165304</link>
				<guid isPermaLink="true">http://www.androidpub.com/165304</guid>
		  
						<comments>http://www.androidpub.com/165304#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;Eclipse + Android SDK + AVD (Full install)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;이렇게 개발환경 세팅해 놓고 있는데요... 모토로이나 HTC G1 폰 등은 USB 디버깅이 잘 되는데, LG-KH5200 은 디버깅이 연결이 안되네요.&lt;BR&gt;(디버깅은... Eclipse+Android Plugin 에서 앱을 인스톨해서 테스트해 보는 것을 말합니다.)&lt;BR&gt;&lt;BR&gt;KH5200의 메뉴중에서 &quot;설정-&amp;gt;응용프로그램-&amp;gt;개발-&amp;gt;USB 디버깅&quot;&amp;nbsp;&amp;nbsp; 이걸 체크하면, &lt;BR&gt;&lt;BR&gt;PC의 장치 관리자에서, &lt;BR&gt;&quot;기타장치-&amp;gt; LG Mobile USB Modem&quot; 이라면서 잡지를 못합니다.&lt;BR&gt;&lt;BR&gt;USB 디라이버는 Cyon 홈피에서도 받아보고, &lt;A href=&quot;http://lg-usb-modem-driver.software.informer.com/&quot;&gt;http://lg-usb-modem-driver.software.informer.com/&lt;/A&gt;&amp;nbsp;에서도 받아보고,&lt;BR&gt;&lt;BR&gt;혹시, KH5200 에서 USB 디버깅에 성공해 보신분 계신가요? .... ㅎㅎ.....&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;(똑같이 했는데도, 저만 안되는거라면, 단말기나 PC문제라고&amp;nbsp; 판단할텐데, .... 원래 안되는건지 어떤건지.......)&lt;BR&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 02 Mar 2010 15:05:28 +0900</pubDate>
										<slash:comments>4</slash:comments>
			</item>
		<item>
		<title>DDMS에서 에뮬레이터로 GPS 좌표전송시 버그해결</title>
		<dc:creator>김다람쥐</dc:creator>
		<link>http://www.androidpub.com/164387</link>
				<guid isPermaLink="true">http://www.androidpub.com/164387</guid>
		  
						<comments>http://www.androidpub.com/164387#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;BR&gt;DDMS에서 에뮬레이터로 GPS 좌표전송시 버그 해결 방법&lt;BR&gt;&lt;BR&gt;1. 문제점 &lt;BR&gt;DDMS 에서 위도,경도 혹은 kml 파일로 좌표를 에뮬레이터에게 전송시 1 ~2회 전송후 전송이 안됨( 콘솔로 전송할&amp;nbsp;경우도 마찬가지)&lt;BR&gt;&lt;BR&gt;2. 해결책&lt;BR&gt;에뮬레이터의 시간정보를 셋팅한다. (-.-이게 다임)&lt;BR&gt;&lt;BR&gt;순서&lt;BR&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;1. 안드로이드를 구동한다.&lt;/SPAN&gt;&lt;BR&gt;&lt;img src=&quot;http://www.kaka.pe.kr/attach/1/1056312860.png&quot; alt=&quot;1056312860.png&quot; title=&quot;1056312860.png&quot; class=&quot;iePngFix&quot; width=&quot;320&quot; height=&quot;480&quot; style=&quot;WIDTH: 240px; HEIGHT: 354px&quot; /&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;2. Setting 으로 들어간다.&lt;/STRONG&gt;&lt;BR&gt;&lt;img src=&quot;http://www.kaka.pe.kr/attach/1/1292840464.png&quot; alt=&quot;1292840464.png&quot; title=&quot;1292840464.png&quot; class=&quot;iePngFix&quot; width=&quot;320&quot; height=&quot;480&quot; style=&quot;WIDTH: 238px; HEIGHT: 405px&quot; /&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;3. Date &amp;amp; Time을 선택한다.&lt;/SPAN&gt;&lt;BR style=&quot;FONT-WEIGHT: bold&quot;&gt;&lt;BR&gt;&lt;img src=&quot;http://www.kaka.pe.kr/attach/1/1341901764.png&quot; alt=&quot;1341901764.png&quot; title=&quot;1341901764.png&quot; class=&quot;iePngFix&quot; width=&quot;320&quot; height=&quot;480&quot; style=&quot;WIDTH: 234px; HEIGHT: 360px&quot; /&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;4. &quot;Automatic&quot;의 체크를 &lt;FONT color=#ee2244&gt;해제&lt;/FONT&gt;한다.&lt;BR&gt;&lt;BR&gt;&lt;img src=&quot;http://www.kaka.pe.kr/attach/1/1178141797.png&quot; alt=&quot;1178141797.png&quot; title=&quot;1178141797.png&quot; class=&quot;iePngFix&quot; width=&quot;320&quot; height=&quot;480&quot; style=&quot;WIDTH: 234px; HEIGHT: 350px&quot; /&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-WEIGHT: bold&quot;&gt;5. 해당 지역에 맞는 Time Zone,&amp;nbsp; 시각, 날짜 등을 설정해주면 된다.&lt;BR&gt;&lt;/SPAN&gt;&lt;img src=&quot;http://www.kaka.pe.kr/attach/1/1148741209.png&quot; alt=&quot;1148741209.png&quot; title=&quot;1148741209.png&quot; class=&quot;iePngFix&quot; width=&quot;320&quot; height=&quot;480&quot; style=&quot;WIDTH: 231px; HEIGHT: 314px&quot; /&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;결론 :&amp;nbsp; &lt;BR&gt;DDMS 와 콘솔에는 이상없다,&lt;BR&gt;에뮬레이터 시간설정이문제였다.&amp;nbsp;&lt;BR&gt;그런데 locale은 시간설정과 관련이 적어보인다.&lt;BR&gt;어쨌던 해결되서 잘 작동만 하면 된다.&lt;BR&gt;&lt;BR&gt;더이상 저처럼 이 문제로 며칠간 삽질하는 개발자가 나오지 않길 바라며...&lt;BR&gt;&lt;BR&gt;출처 : &lt;A href=&quot;http://www.kaka.pe.kr/?page=5&quot;&gt;http://www.kaka.pe.kr/?page=5&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 02 Mar 2010 01:35:34 +0900</pubDate>
										<slash:comments>2</slash:comments>
			</item>
		<item>
		<title>모바일 애플리케이션 스토어 현황</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/151786</link>
				<guid isPermaLink="true">http://www.androidpub.com/151786</guid>
		  
						<comments>http://www.androidpub.com/151786#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;Mobile Application Stores State of Play&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;width:425px;text-align:left&quot; id=&quot;__ss_3215118&quot;&gt;&lt;a style=&quot;font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/distimo/distimo-mobile-world-congress-2010-presentation-mobile-application-stores-state-of-play&quot; title=&quot;Distimo Mobile World Congress 2010 Presentation - Mobile Application Stores State of Play&quot;&gt;Distimo Mobile World Congress 2010 Presentation - Mobile Application Stores State of Play&lt;/a&gt;&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=distimomwcpresentation-100218052650-phpapp02&amp;stripped_title=distimo-mobile-world-congress-2010-presentation-mobile-application-stores-state-of-play&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=distimomwcpresentation-100218052650-phpapp02&amp;stripped_title=distimo-mobile-world-congress-2010-presentation-mobile-application-stores-state-of-play&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;&quot;&gt;View more &lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/distimo&quot;&gt;Distimo&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 23 Feb 2010 18:49:00 +0900</pubDate>
										<slash:comments>5</slash:comments>
			</item>
		<item>
		<title>리스트뷰(List View) 구성하기 - 리스트 아이템에 다양한 레이아웃 적용</title>
		<dc:creator>컨버전스</dc:creator>
		<link>http://www.androidpub.com/140507</link>
				<guid isPermaLink="true">http://www.androidpub.com/140507</guid>
		  
						<comments>http://www.androidpub.com/140507#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;많은 분들이 ListView를 사용하시면서 리스트 아이템에 레이아웃 적용하는 것을 원하시는 것 같습니다.
이 부분은 API Demo에 나와있습니다.
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html

필요한 어댑터를 생성하실 때, getView에서 원하는 레이아웃을 inflate해서 쓰시면 되고,
경우에 따라서 아이템의 속성에 따라 다른 레이아웃도 inflate하시면 됩니다.
ViewHolder 클래스는 사용하는 레이아웃에 따라 달리 바꿔쓰셔야 되며, 
요지는 원하는 레이아웃을 inflate해서 원하는 정보를 세팅하고, view에 Tag로 달아서
재사용하자는 겁니다.&lt;/div&gt;</description>
				<pubDate>Fri, 19 Feb 2010 09:44:37 +0900</pubDate>
										<slash:comments>1</slash:comments>
			</item>
		<item>
		<title>2.1 부터는  SH cpu 디렉토리가 있네요.</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/138172</link>
				<guid isPermaLink="true">http://www.androidpub.com/138172</guid>
		  
						<comments>http://www.androidpub.com/138172#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;2.1 부터는&amp;nbsp; SH cpu 디렉토리가 있네요.&lt;br&gt;&lt;br&gt;http://blog.daum.net/ehddidskrtl/7264243&lt;br&gt;&lt;br&gt;SuperH(SH)프로세서란??
&lt;p&gt;&amp;nbsp;일본 히타치연구소가 지난 94년에 첫개발,출시한이래 그후로 버젼업을 계속하며 비디오게임기를 비롯,pdp,자동차,네비게이션등 폭넓은분야&lt;/p&gt;
&lt;p&gt;&amp;nbsp;에서 다양하게 그 활동을 꾸준히 이어왔군요...&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;새로운 cpu가 추가 된다는 것은&amp;nbsp; 향후 이것을 채용한 제품이 나올 수도 있을 거구요.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;그럼, Jni 사용하는 경우,&amp;nbsp;&amp;nbsp; 호환성에서 문제가 될 듯 합니다.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;^^&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Thu, 18 Feb 2010 15:23:34 +0900</pubDate>
										<slash:comments>2</slash:comments>
			</item>
		<item>
		<title>한글 Android The Developer&apos;s Guide가 나왔네요.</title>
		<dc:creator>BIGo</dc:creator>
		<link>http://www.androidpub.com/137968</link>
				<guid isPermaLink="true">http://www.androidpub.com/137968</guid>
		  
						<comments>http://www.androidpub.com/137968#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;&lt;b&gt;개발자들에게 참조하기 가장 좋았던 구글 Dev Guide 사이트가 한글로 제공되기 시작했습니다.&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;일부 최신 페이지는 아직 영문이지만, 원문과 함께 대부분 번역이 되어 있어 좋네요&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;SKT의 지원을 받아서 칸드로이드에서 번역 사이트를 제공해 주네요.&lt;div&gt;주소:&amp;nbsp;&lt;b&gt;http://j.mp/cQYBeG&lt;/b&gt;&amp;nbsp;&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;참고: 첫화면의 일부 내용&lt;/div&gt;&lt;div&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;&lt;div id=&quot;jd-header&quot; class=&quot;guide-header&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 7px; padding-right: 15px; padding-bottom: 7px; padding-left: 15px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-color: rgb(255, 255, 255); color: rgb(67, 90, 110); height: 50px; &quot;&gt;&lt;h1 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 8px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.7em; &quot;&gt;What is Android?&lt;/h1&gt;&lt;/div&gt;&lt;div id=&quot;jd-content&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 18px; padding-right: 15px; padding-bottom: 18px; padding-left: 15px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;div class=&quot;jd-descr&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The&lt;a kandroid_id=&quot;1668&quot; kandroid_p_id=&quot;1666&quot; kandroid_t_id=&quot;5&quot; href=&quot;http://developer.android.com/sdk/index.html&quot; shape=&quot;rect&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;Android SDK&lt;/a&gt;&amp;nbsp;provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.&lt;/p&gt;&lt;div class=&quot;kandroid_trans_block&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top: 8px; padding-right: 8px; padding-bottom: 8px; padding-left: 8px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(255, 192, 144); border-right-color: rgb(255, 192, 144); border-bottom-color: rgb(255, 192, 144); border-left-color: rgb(255, 192, 144); font-family: Gulim; font-size: 12px; line-height: 19px; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 18px; &quot;&gt;안드로이드는 운영체제와 미들웨어 그리고 핵심 애플리케이션을 포함하고 있는 모바일 디바이스를 위한 소프트웨어 스택Stack이다. 안드로이드 SDK는 Java 프로그래밍 언어를 사용하여 안드로이드 플랫폼 상의 애플리케이션을 개발하기 위해 필요한 도구들과 API를 제공한다.&lt;/p&gt;&lt;/div&gt;&lt;h2 style=&quot;margin-top: 1.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); max-width: 968px; &quot;&gt;&lt;br&gt;&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Thu, 18 Feb 2010 14:38:32 +0900</pubDate>
										<slash:comments>9</slash:comments>
			</item>
		<item>
		<title>안드로이드 OS 소스 master 는 최신이 아니네요</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/135196</link>
				<guid isPermaLink="true">http://www.androidpub.com/135196</guid>
		  
						<comments>http://www.androidpub.com/135196#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;http://www.androidpub.com/80974&lt;br&gt;&lt;br&gt;위 링크의 글 처럼,&amp;nbsp; 안드로이드 최신 소스(2.1)을 가져오기 위해서 &lt;br&gt;&lt;br&gt;&lt;font face=&quot;Courier New&quot;&gt;repo init -u git://android.git.kernel.org/platform/manifest.git&lt;br&gt;&lt;br&gt;이렇게 하였답니다.&lt;br&gt;&lt;br&gt;많은 분들이&amp;nbsp; master 가 최신이라고 해서요.&lt;br&gt;&lt;br&gt;&lt;br&gt;그런데, 이렇게 받으면 다수 디렉토리가&amp;nbsp; 빈 다렉토리더군요.&lt;br&gt;&lt;br&gt;&lt;br&gt;그러다가&amp;nbsp; 우연히 다른글의 댓글을&amp;nbsp; 따라가다가&lt;br&gt;&lt;br&gt;빈 디렉토리였던 것의 소스가 나오더군요.&lt;br&gt;&lt;br&gt;뭐냐 이건......&lt;br&gt;&lt;br&gt;&lt;br&gt;http://android.git.kernel.org/?p=platform/packages/apps/Launcher2.git;a=summary&lt;br&gt;&lt;br&gt;heads&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;2 weeks ago&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eclair&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; shortlog | log | tree&lt;br&gt;&lt;br&gt;3 weeks ago&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eclair-release&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; shortlog | log | tree&lt;br&gt;&lt;br&gt;5 weeks ago&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; master&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; shortlog | log | tree&lt;br&gt;&lt;br&gt;3 months ago&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eclair-sholes-release&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; shortlog | log | tree&lt;br&gt;&lt;br&gt;위 링크의 헤더를 보면,&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face=&quot;Courier New&quot;&gt;eclair 는 2주전에&lt;br&gt;&lt;/font&gt;&lt;font face=&quot;Courier New&quot;&gt;master 는 5주전에&amp;nbsp; 업데이트가 마지막 이더군요.&lt;br&gt;&lt;br&gt;지금 이 시각에도&amp;nbsp; 보면&lt;br&gt;&lt;b&gt;http://android.git.kernel.org/?p=platform/packages/apps/Launcher2.git;a=tree;h=refs/heads/eclair;hb=eclair&lt;br&gt;&lt;br&gt;http://android.git.kernel.org/?p=platform/packages/apps/Launcher2.git;a=tree;h=refs/heads/master;hb=master&lt;br&gt;&lt;br&gt;master는 &lt;br&gt;&lt;br&gt;empty initial commit&lt;br&gt;&lt;br&gt;이게 다 입니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;결론, master는 최신이 아니다 ^^&lt;br&gt;&lt;br&gt;수고하세요.&lt;br&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;</description>
				<pubDate>Wed, 17 Feb 2010 16:48:12 +0900</pubDate>
										<slash:comments>7</slash:comments>
			</item>
		<item>
		<title>Grab a URL Source with ProgressDialog and AsyncTask</title>
		<dc:creator>자바개발자</dc:creator>
		<link>http://www.androidpub.com/132370</link>
				<guid isPermaLink="true">http://www.androidpub.com/132370</guid>
		  
						<comments>http://www.androidpub.com/132370#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;a href=&quot;http://www.androidsnippets.org/snippets/116/&quot; onclick=&quot;window.open(this.href);return false;&quot; class=&quot; editor_blue_text&quot;&gt;http://www.androidsnippets.org/snippets/116/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;span&gt;&lt;span&gt;ProgressDialog의 동그란 막대기(?)가 첨부터 멈춰있는 현상을 해결하려고&lt;br&gt;이너넷을 뒤지다가 발견했습니다.&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 16 Feb 2010 15:45:03 +0900</pubDate>
										<slash:comments>2</slash:comments>
			</item>
		<item>
		<title>터치이벤트를 활용한 작업</title>
		<dc:creator>자바개발자</dc:creator>
		<link>http://www.androidpub.com/121608</link>
				<guid isPermaLink="true">http://www.androidpub.com/121608</guid>
		  
						<comments>http://www.androidpub.com/121608#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;제목이 맞는 건지 모르겠습니다.&lt;br&gt;&lt;br&gt;만약 WebView에서 터치이벤트가 발생했을때&lt;br&gt;그냥 터치를 했는지 아니면 스크롤을 했는지를 캐치해야 합니다.&lt;br&gt;머리를 아무리 굴려도 아래와 같은 방법밖에는 떠오르지 않더군요.&lt;br&gt;더 좋은 방법이 있으면 의견 부탁드립니다.&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;brush: java;&quot;&gt;private int toutchX = 0;
private int toutchY = 0;

@Override
public boolean onTouch(View v, MotionEvent event)
{
    if(this.toutchX == 0 &amp;amp;&amp;amp; this.toutchY == 0)
    {
        this.toutchX = (int)event.getX();
        this.toutchY = (int)event.getY();
    }

    if(event.getAction() == MotionEvent.ACTION_UP)
    {
        int nowToutchX = (int)event.getX();
        int nowToutchY = (int)event.getY();
            
        if(Math.abs(this.toutchX - nowToutchX) &amp;lt;= 20 &amp;amp;&amp;amp; Math.abs(this.toutchY - nowToutchY) &amp;lt;= 20)
        {
            // 터치 이벤트가 발생했습니다.
        }

        this.toutchX = 0;
        this.toutchY = 0;
    }

    return false;
}&lt;/pre&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Thu, 11 Feb 2010 09:38:46 +0900</pubDate>
										<slash:comments>8</slash:comments>
			</item>
		<item>
		<title>탭 관련 UI 가이드라인.</title>
		<dc:creator>크리어스</dc:creator>
		<link>http://www.androidpub.com/118174</link>
				<guid isPermaLink="true">http://www.androidpub.com/118174</guid>
		  
						<comments>http://www.androidpub.com/118174#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;안드로이드 개발자 페이지에 보면 UI 가이드라인이 있죠.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://developer.android.com/guide/practices/ui_guidelines/index.html&quot;&gt;http://developer.android.com/guide/practices/ui_guidelines/index.html&lt;/a&gt;&amp;nbsp;바로 여깁니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;여기서 탭 아이콘 부분을 살펴 보시면 아이콘의 색상및 효과에 대한 부분이 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://developer.android.com/guide/practices/ui_guidelines/icon_design.html&quot;&gt;http://developer.android.com/guide/practices/ui_guidelines/icon_design.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;선택된 아이콘의 색상은 gray, 선택되지 않은 아이콘의 색상은 white 계열로 제시하고 있는데요&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;안드로이드 1.6이후로 탭의 배경색상이 달라졌습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;기존에 선택됐을시 하얀색 배경, 선택되지 않았을 때 짙은 배경에서 선택되었을 시 gray배경, 선택되지 않았을 때 검은 배경입니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;그렇다 보니 기존 가이드라인대로 아이콘을 제작하면 선택되었을 경우엔 아이콘의 음영만 남고, 선택되지 않은 상황에선 아이콘이 Black &amp;amp; White가 됩니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;구글에서 의도한 바인지 아닌지 알수는 없지만, 기존과는 분위기가 완전히 달라진다는 점에서 참고하시라 올려봅니다.&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Wed, 10 Feb 2010 08:27:15 +0900</pubDate>
									</item>
		<item>
		<title>SDK의 ApiDemos에서 App 항목에러 날때</title>
		<dc:creator>suppul</dc:creator>
		<link>http://www.androidpub.com/113628</link>
				<guid isPermaLink="true">http://www.androidpub.com/113628</guid>
		  
						<comments>http://www.androidpub.com/113628#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;안드로이드 일부 폰에서&amp;nbsp;ApiDemos에서 에러가 나는 경우가 있습니다.&lt;BR&gt;드문경우인데요. 코드를 보시면 Apps label이 처음으로 리스트에 나오면&amp;nbsp;볼드 문장에서 걸려서 에러납니다.&lt;BR&gt;빨간부분 추가하시면 에러안나오게 됩니다.&lt;BR&gt;&lt;BR&gt;ApiDemos.java 90 라인 근처입니다.&lt;BR&gt;&lt;BR&gt;별것아닌데&amp;nbsp;가끔 걸리는 경우가 있고, 상황에&amp;nbsp;따라서는 100%걸려서&amp;nbsp;올립니다.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (prefix.length() == 0 || label.startsWith(prefix)) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] labelPath = label.split(&quot;/&quot;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#ee2222&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // To-Debug :&amp;nbsp;추가할것&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(labelPath[0].equals(&quot;Apps label&quot;) &amp;amp;&amp;amp; prefix.equals(&quot;App&quot;) )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;continue;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String nextLabel = (prefixPath == null) ? labelPath[0] : labelPath[prefixPath.length]; // 에러부분&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;즐거운 코딩되세요.&lt;BR&gt;&lt;BR&gt;ps. 이것 ApiDemos 문제가 아니군요. 다른 프로그램때문에 그러네요. &lt;BR&gt;무슨 프로그램인지 모르지만&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mainIntent.addCategory(Intent.CATEGORY_SAMPLE_CODE);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PackageManager pm = getPackageManager();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;ResolveInfo&amp;gt; list = pm.queryIntentActivities(mainIntent, 0);&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;에서 Intent.CATEGORY_SAMPLE_CODE 를 가지는 엑티비티를 불러오는데 개발자가 본인도 이런 엑티비티를 넣은것으로 보이네요.&lt;BR&gt;어쩐지 에뮬레이터랑 순정? 넥서스 원에서는 나오지 않더군요. &lt;BR&gt;&lt;BR&gt;개발하실때&amp;nbsp;여러모로 조심해야 될것 같습니다.~~&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------&lt;BR&gt;&lt;BR&gt;프로그램 찾았습니다. Apps Organizer 네요.&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 08 Feb 2010 17:25:50 +0900</pubDate>
									</item>
		<item>
		<title>안드로이드 인터넷 연결상태 확인</title>
		<dc:creator>자바개발자</dc:creator>
		<link>http://www.androidpub.com/106224</link>
				<guid isPermaLink="true">http://www.androidpub.com/106224</guid>
		  
						<comments>http://www.androidpub.com/106224#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;a href=&quot;http://translate.google.co.kr/translate?hl=ko&amp;amp;langpair=en%7Cko&amp;amp;u=http://www.anddev.org/viewtopic.php%3Fp%3D32088&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;http://translate.google.co.kr/translate?hl=ko&amp;amp;langpair=en|ko&amp;amp;u=http://www.anddev.org/viewtopic.php%3Fp%3D32088&lt;/a&gt;&lt;br&gt;&lt;br&gt;언젠가 필요할지 몰라서......&lt;br&gt;번역이 된건 우연이었음....&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Fri, 05 Feb 2010 12:55:39 +0900</pubDate>
										<slash:comments>1</slash:comments>
			</item>
		<item>
		<title>ODROID 안드로이드 2.1 포팅 소식</title>
		<dc:creator>체육샘</dc:creator>
		<link>http://www.androidpub.com/106091</link>
				<guid isPermaLink="true">http://www.androidpub.com/106091</guid>
		  
						<comments>http://www.androidpub.com/106091#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;원문 소스&lt;/p&gt;&lt;p&gt;http://www.aesop.or.kr/?document_srl=188480&amp;amp;mid=Board_Community_Freeboard&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;얼핏 보기에는 넥서스원 느낌도 나는군요..&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;=======================================================================================================&lt;br  /&gt;&lt;/p&gt;&lt;br  /&gt;&lt;p&gt;안녕하세요?&amp;nbsp;&lt;/p&gt;&lt;p&gt;3주 가깝게 안드로이드 2.1을 오드로이드에 포팅하고 있었습니다.&lt;/p&gt;&lt;p&gt;고도리님도 시작하신다고 하니, 정말 반갑습니다. 웰컴투 삽질 월드 !!!ㅎㅎㅎ&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;커널은 2.6.27에서 2.6.29.4로 올리는데 시간을 대부분 보냈고...&lt;/p&gt;&lt;p&gt;무선랜 드라이버랑 HAL을 새롭게 뜯어 고쳐서, 이제는 대부분의 환경에서 AP에 접속이 잘됩니다.&lt;/p&gt;&lt;p&gt;가속도 센서, USB Composite driver, ALSA 부분도 2.1에 다소 많은 변경이 있었네요... 심한 삽질이었습니다.&lt;/p&gt;&lt;p&gt;정전터치스크린 드라이버나 배터리 전원 관리 드라이버는 다행히 쉽게 넘어갔고요...&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;무선랜으로 위치 파악이 가능한 Network Location API까지 올렸고, 2.1에 새로 추가된 LiveWallPaper도 가능해 졌습니다.&lt;/p&gt;&lt;p&gt;현재는 삼성 BSP를 전혀 사용하지 못하고, 전부 구글 AOSP를 사용하는 바람에 아직 MFC/OPENGL은 초보적인 단계입니다.&lt;/p&gt;&lt;p&gt;HW 3D와 MFC 포함해서 2월 말쯤에는 어느 정도는 완성될것 같네요. 설연휴에 버닝을 좀 한다면.... ㅋㅋㅋ&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;오드로이드를 DDMS에 연결하여 화면 몇장을 캡쳐해 보았습니다. 즐감하시길...&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;라이브 바탕화면을 적용하고 오드로이드를 키면 보이는 화면입니다.&lt;/p&gt;&lt;p&gt;물결이 생기는 모양이 예술입니다.&lt;/p&gt;&lt;p&gt;&lt;img rel=&quot;xe_gallery&quot; src=&quot;http://www.aesop.or.kr/files/attach/images/139/480/188/device1.png&quot; alt=&quot;device1.png&quot; title=&quot;device1.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; height=&quot;480&quot; width=&quot;320&quot; /&gt;
&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;구글 넥서스-원에 적용된 WallPaper로 나름 이쁘게 동작합니다만, 소비전류가 많이 높군요.&lt;/p&gt;&lt;p&gt;
&lt;img rel=&quot;xe_gallery&quot; src=&quot;http://www.aesop.or.kr/files/attach/images/139/480/188/device2.png&quot; alt=&quot;device2.png&quot; title=&quot;device2.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; height=&quot;480&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;아래는 무선랜으로 Network-Location을 읽어내어 구글맵에 뿌리는 모습입니다. 파란색이 제가 있는 위치입니다 ^.^&lt;/p&gt;&lt;p&gt;길찾기 기능에 한국은 포함되어 있지 않지만, 해외 출장갔을때 이 기능을 거의 Navi와 유사하게 사용할수 있겠네요.&lt;/p&gt;&lt;p&gt;
&lt;img rel=&quot;xe_gallery&quot; src=&quot;http://www.aesop.or.kr/files/attach/images/139/480/188/device3.png&quot; alt=&quot;device3.png&quot; title=&quot;device3.png&quot; class=&quot;iePngFix&quot; style=&quot;&quot; height=&quot;480&quot; width=&quot;320&quot; /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;최신 HTML 스펙이 포함되어 있다는 웹브라우저입니다. 가속도 센서를 이용하여 자동 가로 모드로 보입니다.&lt;/p&gt;&lt;p&gt;속도는 컵케익때랑 별 차이는 못느끼겠고, 더블탭으로 줌인-줌아웃을 편하게 할수 있습니다.&lt;/p&gt;&lt;p&gt;주소창은 항상 보이게 할수도 있어 편리하고요..&lt;/p&gt;&lt;img rel=&quot;xe_gallery&quot; src=&quot;http://www.aesop.or.kr/files/attach/images/139/480/188/device4.png&quot; alt=&quot;device4.png&quot; title=&quot;device4.png&quot; class=&quot;iePngFix&quot; style=&quot;cursor: pointer;&quot; height=&quot;320&quot; width=&quot;480&quot; /&gt;&lt;/div&gt;</description>
				<pubDate>Fri, 05 Feb 2010 11:47:36 +0900</pubDate>
										<slash:comments>5</slash:comments>
			</item>
		<item>
		<title>SectionIndexer - 리스트에서 첫 글자 시작되는 곳으로 가기</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/97392</link>
				<guid isPermaLink="true">http://www.androidpub.com/97392</guid>
		  
						<comments>http://www.androidpub.com/97392#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;왼손으로 글 써서 길게 못 씁니다.^^&lt;br&gt;&lt;br&gt;&lt;br&gt;옴니아2에서&amp;nbsp; 음악목록을 스크롤 할 때,&lt;br&gt;&lt;br&gt;A 로 시작...&lt;br&gt;&lt;br&gt;가 로 시작...&lt;br&gt;&lt;br&gt;되는 곳으로 바로 스크롤아 되더군요.&lt;br&gt;&lt;br&gt;&lt;br&gt;안드로이드에는&amp;nbsp; 기본으로 제공 하더군요.&lt;br&gt;&lt;br&gt;&lt;br&gt;SectionIndexer 과 AlphabetIndexer  인데요.&lt;br&gt;&lt;br&gt;Music에서 이 기능을 사용하더군요.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;class MusicAlphabetIndexer extends AlphabetIndexer {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public MusicAlphabetIndexer(Cursor cursor, int sortedColumnIndex, CharSequence alphabet) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(cursor, sortedColumnIndex, alphabet);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected int compare(String word, String letter) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String wordKey = MediaStore.Audio.keyFor(word);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String letterKey = MediaStore.Audio.keyFor(letter);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (wordKey.startsWith(letter)) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return wordKey.compareTo(letterKey);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;br&gt;&lt;br&gt;이렇게 만들고요&lt;br&gt;&lt;br&gt;static class AlbumListAdapter extends SimpleCursorAdapter implements &lt;font color=&quot;#ee2222&quot;&gt;SectionIndexer &lt;/font&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private AlphabetIndexer mIndexer;&lt;br&gt;&lt;br&gt;&lt;br&gt;.......... 중략..............&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mIndexer != null) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mIndexer.setCursor(cursor);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mIndexer = new MusicAlphabetIndexer(cursor, mAlbumIdx, mResources.getString(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.string.fast_scroll_alphabet));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;.......... 중략..............&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; public Object[] getSections() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return mIndexer.getSections();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int getPositionForSection(int section) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return mIndexer.getPositionForSection(section);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int getSectionForPosition(int position) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;-----------------&lt;br&gt;&lt;br&gt;&amp;lt;resources&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;fast_scroll_alphabet&quot;&amp;gt;\u0020ABCDEFGHIJKLMNOPQRSTUVWXYZ가나다라마바사아자차카타파하&amp;lt;/string&amp;gt;&lt;br&gt;&amp;lt;/resources&amp;gt;&lt;br&gt;&lt;br&gt;-----------------&lt;br&gt;&lt;br&gt;이런 식으로 리스트를 만드면&amp;nbsp; 첫글자 위치로 바로 이동이 가능 합니다.&lt;br&gt;&lt;br&gt;^^&lt;br&gt;&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 02 Feb 2010 14:37:18 +0900</pubDate>
										<slash:comments>2</slash:comments>
			</item>
		<item>
		<title>Android Project 생성 시, Build Target 에 아무런 옵션도 나타나지 않을 경우</title>
		<dc:creator>hyeongkyu</dc:creator>
		<link>http://www.androidpub.com/97021</link>
				<guid isPermaLink="true">http://www.androidpub.com/97021</guid>
		  
						<comments>http://www.androidpub.com/97021#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;저와 같은 환경에서 개발하시려는 분이 흔치 않으시겠습니다만, 만약 넷북과 같이 해상도가 낮은 환경이라면, 발생할 수도 있는 문제입니다.&lt;br&gt;&lt;br&gt;일반적으로, 화면 세로 해상도가 800 이하의 경우에서는 Android Project 생성 시, Build Target에 아무런 옵션도 표시되지 않을 수 있습니다.&lt;br&gt;&lt;br&gt;Windows 환경에서는 잘 모르겠습니다만, Linux 환경에서는 그렇더군요.&lt;br&gt;&lt;br&gt;&lt;img src=&quot;http://www.androidpub.com/files/attach/images/319/021/097/eclipse_720.png&quot; alt=&quot;eclipse_720.png&quot; width=&quot;696&quot; height=&quot;391&quot;&gt;
&lt;br&gt;&lt;br&gt;이런 증상입니다.&lt;br&gt;&lt;br&gt;해상도를 올리면 해결할 수 있습니다.&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 02 Feb 2010 11:44:03 +0900</pubDate>
										<slash:comments>3</slash:comments>
			</item>
		<item>
		<title>기존 프로젝트를 임포트했을때 에러가 발생하는 경우</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/96327</link>
				<guid isPermaLink="true">http://www.androidpub.com/96327</guid>
		  
						<comments>http://www.androidpub.com/96327#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;안드로이드 Project Import시에 나타날수 있는 문제와 해결법 정리입니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. 2008년10월 이전에 작성된 소스들은 안드로이드 1.0 이하의 베타환경에서 작성되어 현재 안드로이드 SDK와 호환되지 않습니다. 해당 소스의 작성 시점이 언제인지 확인하시고 오래된 소스라고 생각되시면 일일이 에러를 수정하는 수 밖에 없습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;2. R.java가 있는 경우. 안드로이드 1.5 혹은 1.6에서 부터 R.java 와 AIDL 등에서 자동으로 생성되는 java파일은 모두 gen 디렉토리 밑에서 생성됩니다. gen에 있는 R.java를 남기고 기존의 R.java는 삭제해주세요.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;기타 프로젝트 로딩시 발생되는 문제점을 이 게시물에 정리하겠습니다. 다른 경우가 있으면 댓글로 알려주세요. 댓글에 질문은 남기지 마시기 바랍니다.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 02 Feb 2010 01:31:37 +0900</pubDate>
										<slash:comments>1</slash:comments>
			</item>
		<item>
		<title>오픈소스 라이센스 관련 참고 자료 입니다.</title>
		<dc:creator>컨버전스</dc:creator>
		<link>http://www.androidpub.com/94692</link>
				<guid isPermaLink="true">http://www.androidpub.com/94692</guid>
		  
						<comments>http://www.androidpub.com/94692#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;안녕하세요^^&lt;div&gt;개발자 Q/A에서 놀다가 심심해서 글이나 적어보자고 놀러온 컨버전스 입니다. ㅎㅎ&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;안드로이드 개발자분들이면 오픈소스에 대해 관심이 많으실거라고 생각합니다.&lt;/div&gt;&lt;div&gt;그런데 그런 오픈소스에 어떠한 규칙과 제도가 있으며, 사용상의 확인 사항에 대해서 자세히 알고 계시는 분들은&lt;/div&gt;&lt;div&gt;많지 않은것으로 알고 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;저도 마찬가지구요 ㅎㅎ&lt;/div&gt;&lt;div&gt;^^&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;오픈이다 뭐다 하면서 맘껏 써도 되는것처럼 홍보하지만 실상 잘 모르고 쓰면.GG&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;저도 이런 저런 오픈소스 관련 라이센스 자료를 수집하다 보니.&lt;/div&gt;&lt;div&gt;전부다 영어. 통상적으로 쓰이는 단어가 아닌 업계에서 쓰는 전문적이고 해석의 차이에 따라 미묘한 어감적&lt;/div&gt;&lt;div&gt;차이가 존재하는 단어들이 많이 쓰여서 여간 힘든게 아니더군요.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;그러던중 알게 된곳이 얼마전 공개소프트웨어 공모대전을 치뤄낸 공개 SW 포털이라는 곳.&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.oss.or.kr/oss_main&quot;&gt;http://www.oss.or.kr/oss_main&lt;/a&gt;&lt;/div&gt;&lt;div&gt;정보통신산업진흥원에서 운영하고 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;이곳에&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://oss.or.kr/oss_information3/1887&quot; onclick=&quot;window.open(this.href);return false;&quot; class=&quot; editor_blue_text&quot;&gt;오픈소스SW 라이선스 가이드&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://oss.or.kr/oss_information3/1890&quot; onclick=&quot;window.open(this.href);return false;&quot; class=&quot; editor_blue_text&quot;&gt;오픈소스SW 라이선스 분쟁 대응방안&lt;/a&gt;&lt;/div&gt;&lt;div&gt;이라는 자료가 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;한글이고 깔끔하게 정리가 잘 되어있습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;뭐 관심있으신 분들은 이미 다 알고 계신곳이겠지만.&lt;/div&gt;&lt;div&gt;지금부터 시작하시는 분들에게는 좋은 자료 일것 같습니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;저도 안드로이드 개발자이다 보니 오픈소스에 관심이 많고, 오픈의 주요 핵심은 소통이므로&lt;/div&gt;&lt;div&gt;펍에 꾸준히 글을 올리며 회원님들과 소통하고 싶네요 ^^&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;라이선스 관련 글과 시간이 된다면 안드로이드 개발 이슈에 대해서 글을 올려 보려고 합니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;별 쓰잘데기 없는 글 읽어 주셔서 감사합니다 ^^&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 01 Feb 2010 15:16:52 +0900</pubDate>
						<category>라이센스</category>
				<category>라이선스</category>
				<category>오픈소스</category>
				<category>oss</category>
				<category>공개sw포털</category>
								<slash:comments>4</slash:comments>
			</item>
		<item>
		<title>[안드로이드 개발툴] Monkey 테스트툴</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/92956</link>
				<guid isPermaLink="true">http://www.androidpub.com/92956</guid>
		  
						<comments>http://www.androidpub.com/92956#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;Monkey는 애플리케이션을 테스트하는데 유용한 도구 입니다. 임의의 이벤트들을 애플리케이션에 반복적으로 보내서 애플리케이션이 죽는 경우(Force Closed)나 반응이 없는 경우 (ANR)를 알려줍니다. 애플리케이션을 릴리즈 하기전 간단하면서도 유용한 테스트가 필요하다면 편리하게 사용할 수 있습니다.&amp;nbsp;아무래도 개발자는 자기가 익숙한 방식으로 애플리케이션을 사용하게 되어 UI 를 다르게 이용했을때 발생하는 문제를 발견하기 힘들기 때문에 한번씩 몽키를 이용해 테스트하는 것이 좋습니다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;간단한 사용 예제는 다음과 같습니다. 패키지 이름과 이벤트 반복 회수만 지정해주시면 됩니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;$ adb shell monkey -p your.package.name -v 500&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;더 다양한 사용법은 레퍼런스 문서 참고하세요.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;a href=&quot;http://developer.android.com/guide/developing/tools/monkey.html&quot;&gt;http://developer.android.com/guide/developing/tools/monkey.html&lt;/a&gt;&lt;/div&gt;</description>
				<pubDate>Sun, 31 Jan 2010 10:41:41 +0900</pubDate>
										<slash:comments>4</slash:comments>
			</item>
		<item>
		<title>mp3파일 내에서 앨범사진, 가수이름, 앨범제목, 노래제목 뽑아 내는데 성공해서 자료 올립니다.</title>
		<dc:creator>좋은사람</dc:creator>
		<link>http://www.androidpub.com/91099</link>
				<guid isPermaLink="true">http://www.androidpub.com/91099</guid>
		  
						<comments>http://www.androidpub.com/91099#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;컨버전스님과 볼레노 님의 글을 바탕으로 몇일 삽질 좀 했습니다.&amp;nbsp;&amp;nbsp; ( 두분 감사 드려요 )&lt;BR&gt;&lt;BR&gt;&lt;IMG height=417 alt=K-1.png src=&quot;http://www.androidpub.com/files/attach/images/319/099/091/K-1.png&quot; width=324&gt;&lt;BR&gt;&lt;BR&gt;일단 결과 화면 입니다. 노래 sdcard안에 몇곡 넣었구요 &lt;BR&gt;&lt;IMG height=269 alt=K-2.png src=&quot;http://www.androidpub.com/files/attach/images/319/099/091/K-2.png&quot; width=558&gt;&lt;BR&gt;&lt;BR&gt;리스트 형식으로 정리 하도록 했습니다. &lt;BR&gt;&lt;BR&gt;소스는 여기 &amp;gt;&amp;gt;&amp;gt;&amp;nbsp; &lt;A href=&quot;http://www.androidpub.com/?module=file&amp;amp;act=procFileDownload&amp;amp;file_srl=91101&amp;amp;sid=2e65fb58a9ed8af80f5fd93490a6dfdf&quot;&gt;Music Player.zip&lt;/A&gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;안에&amp;nbsp;보면 MusicUtils.java&amp;nbsp;파일은&amp;nbsp;오픈소스 music 안에서 이리저리 필요하거만 뽑아서 놨습니다.&amp;nbsp;&lt;BR&gt;저도 뭐가 뭔지는&amp;nbsp;모르겠구요..&amp;nbsp;mp3파일 안에서&amp;nbsp;사진 파일만 가져 올 수 있습니다.&amp;nbsp;그냥 파일 통채로 쓰시면 될꺼 같아요&lt;BR&gt;&lt;BR&gt;그냥 main.java 안에서 보시고 필요한 함수만 뽑아서 쓰시면 될꺼 같아요&amp;nbsp;&lt;BR&gt;&lt;BR&gt;위에&amp;nbsp;tellme 노래는 mp3파일 안에&amp;nbsp;사진도 없고 가수이름도&amp;nbsp;없어서 그렇습니다.&amp;nbsp;&lt;BR&gt;저거는 그냥 파일이름 뜨도록 해주면 되겠죠..&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;볼레노님 글 읽고 글씨는 뽑아와도 앨범 사진을 못뽑아와서 고생했는데 성공해서 기쁘네요 ;; ㅎ&lt;/div&gt;</description>
				<pubDate>Fri, 29 Jan 2010 19:41:22 +0900</pubDate>
										<slash:comments>8</slash:comments>
			</item>
		<item>
		<title>안드로이드(Android SDK) 앱 개발 강좌 모음</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/91035</link>
				<guid isPermaLink="true">http://www.androidpub.com/91035</guid>
		  
						<comments>http://www.androidpub.com/91035#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;구글폰 안드로이드 개발을 시작하시는 분들에게 기본 문서에서 제공하는 노트패드 튜터리얼도 있지만 시작하기 먼가 좀 애매해서 설치부터 완전 기초 부분 까지를 정리 해보았습니다. 처음 개발하시는 분은 아래 강좌보시고, &lt;a href=&quot;http://developer.android.com/guide/tutorials/views/index.html&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;Hello View&lt;/a&gt;로 넘어가세요. 그리고 &lt;a href=&quot;http://developer.android.com/guide/tutorials/notepad/index.html&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;노트패드 튜터리얼&lt;/a&gt;로 넘어가는게 좀더 쉽게 시작할 수 있을듯 합니다. 이제서야(2009년 2월) 구글이 튜터리얼도 업데이트해서 이제 좀 웹으로도 공부할만해졌네요. :)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- 회색의 안드로이드 초급 강좌&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/588&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 강좌 1 - 어플리케이션 개발 시작하기. SDK 설치 및 실행&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.androidpub.com/8872&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;- &amp;nbsp;Android Virtual Device(AVD) 사용법&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/641&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 강좌 2 - 이클립스 개발환경 사용법 및 프로젝트 생성&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/764&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 강좌 3 - 프로젝트 실행과 디버깅 그리고 단말 세팅&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.androidpub.com/19665&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;- 프로그램이 죽는 경우 디버깅 방법&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/1050&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 강좌 4 - 액티비티(Activity), 뷰(View), 레이아웃(Layout)&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/2198&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 강좌 5 - XML에서의 TextView, ImageView, LinearLayout&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/2353&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 강좌 6 - Java 코드(Code)에서 뷰(View) &amp;nbsp;다루기&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- 유용한 정보&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/19665&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 애플리케이션 죽을 시 디버깅 방법&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/41231&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 2.0 SDK, 이클립스3.5 개발 환경 설정&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/89895&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 기반 오픈 소스 프로젝트 및 참고 사이트 모음&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/88300&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;윈도우 한글 사용자 이름 사용으로 에뮬레이터가 제대로 뜨지 않는 경우&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- 가이드&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.androidpub.com/80310&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;안드로이드 웹연동 앱 학습 가이드&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- 안드로이드 공식 홈페이지 링크&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;공식 &amp;nbsp; &amp;nbsp;: http://www.android.com&lt;/div&gt;&lt;div&gt;마켓 &amp;nbsp; &amp;nbsp;: http://market.android.com&lt;/div&gt;&lt;div&gt;개발자 : http://developer.android.com&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Fri, 29 Jan 2010 18:37:07 +0900</pubDate>
										<slash:comments>7</slash:comments>
			</item>
		<item>
		<title>음악 스트리밍 소스입니다..</title>
		<dc:creator>좋은사람</dc:creator>
		<link>http://www.androidpub.com/90631</link>
				<guid isPermaLink="true">http://www.androidpub.com/90631</guid>
		  
						<comments>http://www.androidpub.com/90631#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;밑에 있는 자료들 보다 많이 허접 하지만... 조금이나 나마 도움이 될까 해서 올려 봅니다.&lt;BR&gt;&lt;BR&gt;&lt;IMG height=316 alt=K-1.png src=&quot;http://www.androidpub.com/files/attach/images/319/631/090/K-1.png&quot; width=323&gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;음악 스트리밍을 해볼라고 자료를 찾아보니 앱 정보 Q&amp;amp;A 에 글이 몇개 있더라구요.. &lt;BR&gt;그곳에 링크 되어 있는 화면을 찾아서 다운받아 실행해 보니 안되더라구요.. &lt;BR&gt;안되는 영어 읽어보고 이리저리 살펴보다가 삽질좀 하고 해서 &lt;BR&gt;지금은 잘 돌아 가는것? 같습니다. &lt;BR&gt;&lt;BR&gt;소스 필요하신분 받아서 써보세요 &lt;BR&gt;&lt;A href=&quot;http://www.androidpub.com/?module=file&amp;amp;act=procFileDownload&amp;amp;file_srl=90651&amp;amp;sid=7e91ac77e25e9a547f036aea2a5ebe79&quot;&gt;Streaming test.zip&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;톰캣 서버 만들어서 다운받아 볼라 했더니 서버 설정이 잘못인가... 톰캣 사용범을 잘 몰라서 다운이 안되네요ㅡ.ㅡ ;;&lt;/div&gt;</description>
				<pubDate>Fri, 29 Jan 2010 15:33:36 +0900</pubDate>
										<slash:comments>7</slash:comments>
			</item>
		<item>
		<title>안드로이드 기반 오픈 소스 프로젝트 및 참고 사이트 모음</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/89895</link>
				<guid isPermaLink="true">http://www.androidpub.com/89895</guid>
		  
						<comments>http://www.androidpub.com/89895#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: AppleGothic, Dotum, sans-serif; &quot;&gt;&lt;div&gt;안드로이드 개발 참고 사이트 모음입니다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;AndroidPub : 안드로이드펍 한국 안드로이드 사용자 및 개발자 커뮤니티.&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 한국 안드로이드 커뮤니티&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://www.androidpub.com/&quot; target=&quot;_blank&quot;&gt;http://www.androidpub.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;공식 안드로이드 공식 홈페이지들&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개글 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 안드로이드의 전체 소스를 다운받을 수 있음&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 &amp;nbsp; &amp;nbsp; : 소스&amp;nbsp;&lt;a href=&quot;http://source.android.com/&quot; target=&quot;_blank&quot;&gt;http://source.android.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 공식&amp;nbsp;&lt;a href=&quot;http://www.android.com/&quot; target=&quot;_blank&quot;&gt;http://www.android.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 마켓&amp;nbsp;&lt;a href=&quot;http://market.android.com/&quot; target=&quot;_blank&quot;&gt;http://market.android.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 개발자&amp;nbsp;&lt;a href=&quot;http://developer.android.com/&quot; target=&quot;_blank&quot;&gt;http://developer.android.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882244&quot;&gt;- 안드로이드 써드파티 마켓 사이트 모음&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개글 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 안드로이드의 다양한 써드파티 마켓 정보 모음&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 &amp;nbsp; &amp;nbsp; :&amp;nbsp;&lt;a href=&quot;http://www.androidpub.com/22520&quot;&gt;http://www.androidpub.com/22520&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;Android Code Snippets&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 간단한 안드로이드 코드 모음&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://www.androidsnippets.org/&quot; target=&quot;_blank&quot;&gt;http://www.androidsnippets.org&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;StackOverflow Android&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 안드로이드 질문과 답 (영문)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/tagged/android&quot; target=&quot;_blank&quot;&gt;http://stackoverflow.com/questions/tagged/android&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882244&quot;&gt;구글의 안드로이드 개발자들이 만든 애플리케이션 모음 (Apps for Android )&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 주로 구글의 실제 안드로이드 개발자들이 만든 샘플 애플리케이션들로 안드로이드의 구조를 잘 이해하고&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;작성한 애플리케이션들이라서 주옥같은 예제가 많이 들어있음. PhotoStream는 웹서버와의 통신에서&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;참고하기 좋은 애플리케이션.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/apps-for-android/&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/apps-for-android/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;안드로이드 플랫폼 스터디 모임&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 안드로이드 애플리케이션 프로그래밍을 공부하는 것이 아니라, 안드로이드 플랫폼의 자체 이해를 목적으로 합&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 니다. 이를 통해 안드로이드 프레임워크의 설계 및 동작 원리를 이해하고, 나아가 안드로이드의 내부 구조를 파악&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;함으로써 효율적인 안드로이드 프로그램의 설계 및 구현 할 수 있는 지식을 쌓는 것이 저희 스터디의 목표입니다. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://andstudy.springnote.com/&quot; target=&quot;_blank&quot;&gt;http://andstudy.springnote.com&lt;/a&gt;/&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;게시판 &amp;nbsp; &amp;nbsp;:&amp;nbsp;&lt;a href=&quot;http://www.androidpub.com/devstudy_groupb&quot; target=&quot;_blank&quot;&gt;http://www.androidpub.com/devstudy_groupb&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;Eyes Free TTS 텍스트 음성 변환 라이브러리&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 안드로이드 애플리케이션에서 공유해서 사용할 수 있는 TTS 라이브러리 (안드로이드 1.6에 기본 탑재될 것으로&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 알려짐)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/eyes-free/&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/eyes-free/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- &amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;SMALI Dex assembler/disassembler&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : JF 가 작업중인 Dex 어셈블러/디스어셈블러&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/smali/&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/smali/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;The open mob for android&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 안드로이드 개발 관련 위키&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://wiki.andmob.org/&quot; target=&quot;_blank&quot;&gt;http://wiki.andmob.org&lt;/a&gt;/&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;안드로이드 스크립트 환경 (ASE : Android Scripting Environment)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp;&lt;a href=&quot;http://www.androidpub.com/11518&quot; target=&quot;_blank&quot;&gt;http://www.androidpub.com/11518&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/android-scripting/&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/android-scripting/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;Live CD for Android&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : PC에서 안드로이드를 구동시키자? x86 으로 컴파일된 안드로이드 이미지를 CD에 구워서 PC에서 구동.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/live-android/&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/live-android/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;HTC 안드로이드 개발자 폰 지원 사이트.&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 최신 시스템 이미지등을 다운받을 수 있음&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://www.htc.com/www/support/android/adp.html&quot; target=&quot;_blank&quot;&gt;http://www.htc.com/www/support/android/adp.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;MotoDev 모토로라 개발자 사이트&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 모토로라의 개발자 사이트 최근 안드로이드를 중심으로 구성되고 있음. PodCast등 쓸만한 정보가 제법 올라옴&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://developer.motorola.com/&quot; target=&quot;_blank&quot;&gt;http://developer.motorola.com&lt;/a&gt;/&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;차이나모바일 OMS 개발자 사이트&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; : 차이나 모바일 OMS SDK 정체를 드러내다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 &amp;nbsp;:&amp;nbsp;&lt;a href=&quot;http://www.ophonesdn.com/&quot; target=&quot;_blank&quot;&gt;http://www.ophonesdn.com&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&amp;nbsp;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#882222&quot;&gt;일본 안드로이드회 기술자료&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;소개 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 일본의 안드로이드 개발자 협회의 기술자료 다양한 자료가 잘 정리되어있다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://www.android-group.jp/index.php?%B5%BB%BD%D1%BB%F1%CE%C1&quot; target=&quot;_blank&quot;&gt;http://www.android-group.jp/index.php?%B5%BB%BD%D1%BB%F1%CE%C1&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;본 글은 퍼가셔도 좋으나&amp;nbsp;안드로이드펍&amp;nbsp;출처를 정확히 명기해주시기 바랍니다. :) 종종 업데이트 하도록 하겠습니다.&amp;nbsp;쓸만한 링크가 있으면 댓글로 알려주세요 추가시켜놓도록 하겠습니다.&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;</description>
				<pubDate>Fri, 29 Jan 2010 09:53:12 +0900</pubDate>
										<slash:comments>5</slash:comments>
			</item>
		<item>
		<title>[툴] JSON Viewer 소개 - JSON 포맷 문자열을 윈도우창으로 제어 가능하게 표시해줌</title>
		<dc:creator>BIGo</dc:creator>
		<link>http://www.androidpub.com/88854</link>
				<guid isPermaLink="true">http://www.androidpub.com/88854</guid>
		  
						<comments>http://www.androidpub.com/88854#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;각종 서버에서 Query 결과를 XML이나 JSON 등으로 전달해 주고 있습니다.&lt;div&gt;이중 JSON 형식으로 된 문자열의 결과물을 윈도우 툴로 보여주는 뷰어를 소개 합니다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;(약간의 편집 기능도 있구요)&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;결과물에 대한 분석에 필요한 스팩을 알고 있다면 내용 파악이 쉽겠지만&lt;/div&gt;&lt;div&gt;전혀 없이 문자 데이터 만으로 내용을 파악하고 규칙을 찾아 내려면 좀 난감할 때가 있습니다.&lt;/div&gt;&lt;div&gt;이때 이 툴을 사용해서 Object와 Array의 구분을 파악하고 계층의 정도를 파악하고&amp;nbsp;&lt;/div&gt;&lt;div&gt;각 Value의 규칙을 알아 낼 수 있도록 뷰어 기능을 제공합니다.&lt;/div&gt;&lt;div&gt;(뭔가 대단한 것이 있는 것은 아니고요 뷰어 기능이고 위 내용 처럼 활용할 수 있다는 이야기 임)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;툴 소개 화면&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://www.androidpub.com/files/attach/images/319/854/088/JSON%20View3.PNG&quot; alt=&quot;JSON View3.PNG&quot; width=&quot;447&quot; height=&quot;564&quot;&gt;
&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;다운로드 받는 곳&lt;/u&gt;&lt;/div&gt;&lt;div&gt;http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=JsonViewer&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;해당 툴을 설명한 곳&lt;/u&gt;&lt;/div&gt;&lt;div&gt;http://jsonviewer.codeplex.com/&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Thu, 28 Jan 2010 17:42:12 +0900</pubDate>
										<slash:comments>3</slash:comments>
			</item>
		<item>
		<title>NDK 1.6 R1을 이용하여 C/C++로 작성된 고전 3D 게임 포팅하기</title>
		<dc:creator>체육샘</dc:creator>
		<link>http://www.androidpub.com/83227</link>
				<guid isPermaLink="true">http://www.androidpub.com/83227</guid>
		  
						<comments>http://www.androidpub.com/83227#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;지난 토요일 오전에 구형 노트북에 최신 버전인 SDK 2.1과 NDK 1.6을 설치하였습니다.&lt;br&gt;취미로 게임 포팅을 해보려고 시작한 일인데, 토요일/일요일 몽땅 잡아먹더군요..&lt;br&gt;전문가들이 보기에 그 결과는 별거 아닐수도 있지만, 저같은 초보에게는 나름 큰 의미가 있었습니다.&lt;br&gt;제가 삽질했던것들을 정리하는 목적도 있습니다만, 그 과정을 저같은 초보분들과 나누고자 글을 이어갑니다.&lt;br&gt;&lt;br&gt;참고로 1인칭 슈팅 게임(FPS:First Person Shooting)의 원조격인 Wolfenstein 3D는 1992년 PC용으로 발매되어 엄청난 성공을 이루며, id Software라는 회사가 급성장하는데 결정적인 역할을 합니다. 몇년 뒤 id Software의 오픈소스 정책덕분에 수많은 기기에 포팅이 됩니다.&lt;br&gt;&lt;br&gt;오드로이드에 키 매핑은 다음과 같이 해보았습니다.&amp;nbsp; 아래 그림을 클릭하면 좀 더 잘 보이네요.&lt;br&gt;&lt;img alt=&quot;odroidaa.jpg&quot; src=&quot;http://www.androidpub.com/files/attach/images/319/227/083/odroidaa.jpg&quot; height=&quot;395&quot; width=&quot;913&quot;&gt;&amp;nbsp;&lt;br&gt;볼륨키(L-R)로 좌우 난사를 만들수 있을것 같았는데&amp;nbsp;아직 내공이 부족해서 안되네요... 현재 공부중입니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;아래 링크&amp;nbsp;파일은 SDK 2.1과 NDK 1.6 이 설치된 컴퓨터에서 제가 직접 컴파일하고 오드로이드라는 실제 개발용 기기에서 테스트된 소스 코드입니다. 최초 원본은 id Software사에서 릴리즈 된것을 리눅스 커뮤니티에서 X/SDL로 포팅한 것이며, 이후 2004년 즈음 GP32이라는 게임기에 포팅이 되었습니다. 2009년 초반에 Vladimir Silva 씨가 안드로이드에 포팅을 하였습니다. 이 때만해도 NDK가 나오기 전이라, 리눅스 머신에서 C를 컴파일하고 윈도우에서 자바와 링크시키는 구조였습니다. 비교적 최근 NDK가 나오면서 개발환경이 많이 개선된 것입니다.&lt;br&gt;여기서 직접 올리려고 했는데, 파일첨부 제한이 1MB라 링크를 걸었습니다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://dev.odroid.com/wiki/odroid/pds/FrontPage/Wolf3D.zip&quot; onclick=&quot;window.open(this.href);return false;&quot; class=&quot;bold editor_blue_text&quot;&gt;소스코드 &amp;lt;=== 여기 클릭 !!&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;bold editor_blue_text&quot; onclick=&quot;window.open(this.href);return false;&quot; href=&quot;http://dev.odroid.com/projects/odroid/wiki/FrontPage?action=download&amp;amp;value=Wolf3D.zip&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;하여간 이렇게 구한 소스 코드를 분석하여 최신 SDK과 최신 NDK에서 컴파일이 되도록 수정하였고, 여기에 오드로이드의 키맵에 맞게끔 입력 부분을 수정하고, 화면 해상도와 Orientation을 가로 모드에 적합하도록 변경한것이 전부 입니다. 그 다음은 게임을 즐겼을 뿐입니다.&lt;br&gt;이 모든 것이 이틀만에 이루어졌다면 포팅의 의미는 정말 큰것이겠죠?&lt;br&gt;&lt;br&gt;&lt;br&gt;잡소리가 좀 길었습니다. 소스 설치해서 컴파일이나 해보죠... ㅋㅋㅋ&lt;br&gt;파일(Wolf3D.zip)을 받아, 아래 위치에 풀어줍니다. &lt;strong&gt;첫번째 강좌에서 말씀드린 NDK 설치 경로와 같다고 가정합니다.&lt;br&gt;&lt;font size=&quot;2&quot;&gt;D:\android\android-ndk-1.6_r1-windows\android-ndk-1.6_r1\app\&lt;/font&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;아래와 같은 구조로 디렉토리가 생성되어야 합니다.&lt;br&gt;좀 다르더라도 자바는 잘 컴파일 되지만, JNI쪽 C는 컴파일이 쉽지 않습니다. 전 이것때문에 한시간을 삽질했습니다.&lt;br&gt;&lt;br&gt;&lt;img alt=&quot;3dwolf_dir.PNG&quot; src=&quot;http://www.androidpub.com/files/attach/images/319/227/083/3dwolf_dir.PNG&quot; height=&quot;305&quot; width=&quot;240&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;그리고 cygwin을 실행하여 C 코드쪽을 먼저 컴파일 합니다. (물론 나중에 해도 됩니다...)&lt;br&gt;아래 명령으로 설치된 ndk 폴더로 이동하여 컴파일하고 그 결과를 확인합니다.&lt;br&gt;&lt;strong&gt;&lt;font size=&quot;2&quot;&gt;$ cd /cygdrive/d/android/android-ndk-1.6_r1-windows/android-ndk-1.6_r1&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p jquery1264411677062=&quot;9&quot;&gt;&lt;strong&gt;&lt;font size=&quot;2&quot;&gt;$ make APP=Wolf3D&lt;br&gt;Android NDK: Building for application &apos;Wolf3D&apos;&lt;br&gt;Install &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; : libWolf3D.so =&amp;gt; apps/Wolf3D/project/libs/armeabi&lt;/font&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;컴파일이 무사히 끝났다면, apps/Wolf3D/project/libs/armeabi 아래에 방금 생성된 libWolf3D.so 가 설치되었다고 표시됩니다.&lt;br&gt;&lt;br&gt;이 .so 라이브러리의 소스 코드는 apps/Wolf3D/jni 폴더에 들어있습니다. C 코드들과 헤더를 합치면 대략 30,000라인 정도됩니다. &lt;br&gt;대충 한번 훑어 보시길 바랍니다. 그런데 이 jni 폴더 내부에 꼭 알아두어야 할 파일이 두개가 있습니다. &lt;br&gt;바로 Android.mk라는 Makefile과 jni_wolf.c라는 JNI 핵심 코드입니다.&lt;br&gt;&lt;br&gt;위에서 빌드할때 make APP=Wolf3D라고 간단히 입력했지만, 이렇게 실행시킨 빌드 스크립트 과정 중 핵심은&amp;nbsp;apps/Wolf3D/jni/Android.mk에 들어 있습니다. &lt;br&gt;gcc-arm으로 컴파일할 파일들의 목록, 컴파일 옵션, 모듈 이름같은 중요한 정보들이 들어있습니다&lt;br&gt;&lt;br&gt;두번째로 꼭 탐구해야할 파일은 jni_wolf.c 입니다. 게임 화면과 게임 사운드를 렌더링할 수 있는 기능(Method)을 만들어 JAVA쪽으로 밀어낼수 있게 통로를 만들고, 키나 터치 입력 이벤트를 JAVA쪽으로 부터 받을 수 있게 합니다. 이 파일만 잘 이해하면 JNI의 Native쪽은 거의 다 배운 것입니다. &lt;br&gt;&lt;br&gt;&lt;br&gt;이제 Java쪽을 알아보겠습니다. Eclipse를 실행시키고, 새로운 안드로이드 프로젝트를 생성합니다. &lt;br&gt;이때 Create project from existing source를 선택하고 Location은 아래와 같아야 합니다.&lt;/p&gt;
&lt;p jquery1264411677062=&quot;10&quot;&gt;D:\android\android-ndk-1.6_r1-windows\android-ndk-1.6_r1\apps\Wolf3D\project&lt;/p&gt;
&lt;p jquery1264411677062=&quot;11&quot;&gt;Build Target은 Android 1.5로 했습니다.&lt;br&gt;프로젝트 생성이 잘 되었다면, 다음과 같은 디렉터리 구조와 LibWolf3D.so가 포함되어야 합니다.&lt;br&gt;&lt;img alt=&quot;3dwolf_so.PNG&quot; src=&quot;http://www.androidpub.com/files/attach/images/319/227/083/3dwolf_so.PNG&quot; height=&quot;593&quot; width=&quot;272&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;위 그림에서와 같이 11개의 자바 파일이 있습니다. 각 파일에 대해 간단히 설명드리겠습니다. &lt;br&gt;&lt;br&gt;&amp;lt;1&amp;gt;&amp;nbsp;ControllerListener.java 와 &amp;lt;2&amp;gt; SNESController.java 는 가상키보드용 파일입니다. 오드로이드에서는 사용하지 않습니다. 추후 키보드가 없는 모토로이나 N1 같은 제품을 위해서는 필요할 수도 있겠죠.&lt;br&gt;&lt;br&gt;&amp;lt;3&amp;gt; WolfLauncher.java 는 게임의 기동관련 준비를 하며,&amp;nbsp;화면 해상도를 설정하고 키 이벤트 핸들러를 만듦니다. C로 만든 so 라이브러리도 여기서 로딩을 합니다. 결국에는 게임의 Main Activity class로 main thread를 돌립니다.&lt;br&gt;&lt;br&gt;&amp;lt;4&amp;gt; AudioClip.java &amp;lt;5&amp;gt;AudioManager.java &amp;lt;6&amp;gt;SoundNames.java 는 모두 사운드 처리를 위한 파일들입니다. 안드로이드는 Native에서&amp;nbsp;&amp;nbsp;오디오 장치를 직접 제어할수&amp;nbsp;기능이 없기 때문에 JAVA에서 안드로이드 미디어 플레이어를 틀어 놓고,&amp;nbsp;그 곳에&amp;nbsp;믹싱 시키는 구조로 만들어야 합니다. 추후에 OSS/ALSA를 제어할수 있는 기능이 생기면 좋겠습니다. 가능성은 없겠지만..&lt;br&gt;&lt;br&gt;&amp;lt;7&amp;gt; Natives.java은 C로 만든 Native 라이브러리와 양방향으로 데이터를 주고 받는 역할을 합니다. 모든 native 함수를 포함하고, C Native 라이브러리에서 자바로 데이터를 넘겨주는 Callback 기능도 구동합니다.&lt;br&gt;&lt;br&gt;&amp;lt;8&amp;gt; DialogTool.java 는 메뉴/경고 메시지를 뿌리거나 다이얼로그 박스를 만드는데 사용합니다.&lt;br&gt;&lt;br&gt;&amp;lt;9&amp;gt; LibraryLoader.java는 main activity에서 C Native 라이브러리를 로딩할때 사용됩니다.&lt;br&gt;&lt;br&gt;&amp;lt;10&amp;gt; ScanCodes.java 키 입력 스캔 코드값을 적절히 변환하는 컨버터입니다. C 언어 쪽 코드 변경을 최소화 하기 위해 사용하는것 같습니다.&lt;br&gt;&lt;br&gt;&amp;lt;11&amp;gt; WolfTools.java 라이브러리 이름등등 여러 명칭이 선언되어 있으며, 게임 파일 로딩하는&amp;nbsp;기능도 여기에 있습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;3일간 삽질한&amp;nbsp;&amp;nbsp;소감은 다음과 같습니다.&lt;br&gt;1. 아이폰 개발에 비해&amp;nbsp;부족한것은 다소 있지만,&amp;nbsp; NDK 1.6으로 대부분의 기능 구현에는 문제가 없어 보인다&lt;br&gt;2. 게임을 만들려면&amp;nbsp;사운드가 중요한데, Open AL같은 오디오 라이브러리나 스트리밍 기능이 없어 다소 불편합니다. 편법은 편법일뿐...&lt;br&gt;3. 아이폰에는 없는 멀티태스킹때문에 좀 골치아플때가 있다. 여러 프로그램이 동시에 돌아갈때 동영상 재생 프로그램이나&amp;nbsp;비쥬얼이 찬란한 3D게임을 돌릴때 CPU의 MIPS&amp;nbsp;부족으로 동작이 부드럽지 못한 경우가 발생한다. 그렇지만 모바일 장치에서 멀티태스킹은 정말 멋지다.&lt;br&gt;4. Native와 Java 사이를 왔다갔다 하면서 디버깅이 되는것 같은데, 정확히는 잘 모르겠다. 이부분을 좀 공부해 봐야 겠다.&lt;br&gt;&lt;br&gt;&lt;br&gt;사견이지만&amp;nbsp;진정한 프로 개발자들은 NDK를 사용하지 않는것 같습니다. 최신 NDK 1.6 이라도 컴파일러 버전이 4.2.1으로 낮은 편입니다. &lt;br&gt;오드로이드나 넥서스원에 탑재된 최신 프로세서인 Cortex-A8의 주요 장점인 Thumb-2, VFP나 NEON SIMD를 제대로 사용하기 위해서는 가능하면 4.4 이상을 사용해야 합니다. 그래서 리눅스를 깔고 그 위에 복잡한 개발환경을&amp;nbsp;구축하는것 같네요.&amp;nbsp; 구닥다리(벌써?) ARM11 폰에대한 호환성은 좀 문제가 되겟지만요.&lt;br&gt;&lt;br&gt;다음 번에는 이쪽으로 한번 도전해보고 그 결과를 공유하도록 하겠습니다. 얼마나 걸릴지는 모르겠지만.. ㅎㅎㅎ&lt;br&gt;&lt;br&gt;즐거운&amp;nbsp;앤드로이드&amp;nbsp;개발 되소서...&lt;/p&gt;&lt;p jquery1264411677062=&quot;11&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p jquery1264411677062=&quot;11&quot;&gt;추신: 아래 동영상은 비교적 최근 Wolfenstein 3D 가 PlayStation3 에도 포팅된것을 촬영한 것입니다.&lt;/p&gt;&lt;p jquery1264411677062=&quot;11&quot;&gt;&lt;div style=&quot;width: 400px; height: 400px;&quot;&gt;&lt;span style=&quot;position:relative; top:184px;left:169&quot;&gt;&lt;img src=&quot;http://www.androidpub.com/./modules/editor/components/multimedia_link/tpl/multimedia_link_component.gif&quot; /&gt;&lt;br /&gt;Attached Multimedia&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/SQP69-OG4Is&amp;amp;hl=ko_KR&amp;amp;fs=1&amp;amp;&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/SQP69-OG4Is&amp;amp;hl=ko_KR&amp;amp;fs=1&amp;amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;340&quot; width=&quot;560&quot;&gt;&quot; width=&quot;560&quot; height=&quot;340&quot; wmode=&quot;transparent&quot; style=&quot;display:block;width:560px;height:340px;border:2px dotted #4371B9;background:url(./modules/editor/components/multimedia_link/tpl/multimedia_link_component.gif) no-repeat center;&quot; auto_start=&quot;true&quot; alt=&quot;3d&quot; /&amp;gt;&lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 25 Jan 2010 21:09:17 +0900</pubDate>
										<slash:comments>15</slash:comments>
			</item>
		<item>
		<title>NDK 1.6 R1 설치 및 Native programing 예제</title>
		<dc:creator>체육샘</dc:creator>
		<link>http://www.androidpub.com/82637</link>
				<guid isPermaLink="true">http://www.androidpub.com/82637</guid>
		  
						<comments>http://www.androidpub.com/82637#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;C/C++ 작성된 프로그램을 NDK를 이용하여 안드로이드에 포팅하는 과정을 2회에 거쳐 설명드리겠습니다.&lt;br&gt;오늘은 기본적인 환경 설정에 대해서 이야기 해보겠습니다.&lt;br&gt;&lt;br&gt;저는 JAVA초보라 SDK 설치 후 Hello Android 및 예제 몇개 실행시켜 보는게 전부였는데, &lt;br&gt;제가 좀 할 수 있는 C/C++ 언어로 뭔가 해낼수도 있겠다는 기대감에 NDK를 시작해 보았습니다.&lt;br&gt;JNI는 Java Native Interface의 약자로 Java와 Native object&amp;nbsp;가 상호작용하는 인터페이스 입니다. &lt;br&gt;Native는 C/C++/ASM 등등의 언어로 작성된 코드를 컴파일한 Object 결과물을 말합니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Windows-XP 환경 기준으로 설명 드립니다.&lt;br&gt;우선 Eclipse와 Android SDK/ADT가 설치되어 잘 동작하고 있다고 가정합니다.&lt;/p&gt;
&lt;p&gt;아래 링크에서 windows용 NDK 1.6_R1을 받아 적당한 폴더에 풀어놓습니다.&lt;br&gt;&lt;a href=&quot;http://developer.android.com/sdk/ndk/1.6_r1/index.html&quot;&gt;http://developer.android.com/sdk/ndk/1.6_r1/index.html&lt;/a&gt;&lt;br&gt;여기서는 D:\android\android-ndk-1.6_r1-windows\android-ndk-1.6_r1\ 에 압축이 풀렸다고 가정합니다.&lt;br&gt;그리고 docs 폴더 아래에 있는 OVERVIEW.TXT 를 한번 천천히 읽어 봅니다.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;br&gt;이제는 cygwin을 설치해야 합니다.&lt;br&gt;NDK에 포함된 C/C++ 컴파일러(툴체인)는 원래 리눅스용이지만, Windows사용자를 위해 가상머신 보다는 훨씬 속도가 빠르고 간단한 간이 리눅스의 일종인 Cygwin을 설치해 그 위해서 동작시킵니다.&lt;/p&gt;
&lt;p&gt;아래 링크를 열고&amp;nbsp;우측 상단 구석의 &quot;Install Cygwin now&quot;라는 모양을 누르면 setup.exe가 실행되면서 설치 작업을 합니다.&lt;br&gt;&lt;a href=&quot;http://www.cygwin.com/&quot;&gt;http://www.cygwin.com/&lt;/a&gt;&lt;br&gt;이때 주의할것이 두가지 정도 있습니다.&lt;br&gt;다운로드 서버를 선택할때 국내 daum을 이용하는것이 좋습니다. 다른곳은 전송 속도가 많이 느립니다.&lt;br&gt;그리고, 좀 더 주의할것은 &quot;Select Packages&quot; 화면에서 devel 항목의 make (The GNU version of the &apos;make&apos; utility)를 꼭 추가해 주고 나머지 설치과정을 마무리 합니다.&lt;br&gt;이 게시판에 보면 예전에 회색님이 NDK1.5 기준으로&amp;nbsp;올려놓은 글이 있는데, 그 곳을 보면 gcc도 설치하라고 나와 있습니다. &lt;br&gt;그런데, NDK1.6 에서는 설치가 필요없는것 같습니다. 하지만 GNU make는 꼭 있어야 합니다.&lt;br&gt;cygwin기동후 prompt가 나오면&amp;nbsp;make -v 라고 입력하여 make 유틸이 잘 설치되었는지 확인합니다&lt;br&gt;&lt;br&gt;이제 환경설정 마지막 단계입니다. 다음과 같이 입력합니다.&lt;br&gt;$ cd /cygdrive/d/android/android-ndk-1.6_r1-windows/android-ndk-1.6_r1&lt;br&gt;다음 툴체인등을 설정하는 셋업 명령을 입력합니다.&lt;br&gt;$ build/host-setup.sh&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;br&gt;설치가 끝났으면 제대로 되었는지 확인합니다.&lt;br&gt;NDK의 가장 간단한 예제를 컴파일하고 실행시켜 봅니다. 예상대로 Hello JNI 입니다.&lt;br&gt;C언어에서 간단한 문자열을 자바로 보내고, 받은 결과를 자바가 화면에 출력시키는 예제입니다.&lt;br&gt;&lt;br&gt;cygwin을 실행시키고 다음과 같이 C언어쪽을 먼저 컴파일해서 동적 라이브러리(so) 파일로 만들게 됩니다.&lt;br&gt;&lt;br&gt;아래 명령으로 설치된 ndk 폴더로 이동합니다.&lt;br&gt;$ cd /cygdrive/d/android/android-ndk-1.6_r1-windows/android-ndk-1.6_r1&lt;/p&gt;
&lt;p&gt;아래 명령으로 hello-jni를 컴파일 합니다.&lt;br&gt;$ make APP=hello-jni&lt;br&gt;&lt;br&gt;컴파일이 무사히 끝났다면, apps/hello-jni/project/libs/armeabi 아래에 방금 생성된 libhello-jni.so 가 설치되었다고 표시됩니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;이제는 Java쪽을 컴파일할 차례입니다.&lt;br&gt;Eclipse를 실행시키고, 새로운 안드로이드 프로젝트를 생성합니다.&lt;br&gt;이때 Create project from existing source를 선택하고 Location은 아래와 같아야 합니다.&lt;/p&gt;
&lt;p&gt;D:\android\android-ndk-1.6_r1-windows\android-ndk-1.6_r1\apps\hello-jni\project&lt;/p&gt;
&lt;p&gt;이때 Build Target은 Android 1.5로 선택합니다.&lt;/p&gt;
&lt;p&gt;프로젝트가 잘 생성되었다면, 아래와 같이 libs/armeabi/libhello-jni.so 파일이 보여야 합니다.&lt;br&gt;&lt;img height=&quot;292&quot; alt=&quot;hello_jni.PNG&quot; src=&quot;http://www.androidpub.com/files/attach/images/319/637/082/hello_jni.PNG&quot; width=&quot;269&quot;&gt;&amp;nbsp;&lt;br&gt;이렇게 프로젝트를 만들어 Build하고 실행시켜 테스트 해봅니다.&lt;br&gt;jni 폴더에 있는 hello-jni.c와 src/com/example/hellojni 폴더의 HelloJni.java의 소스코드를&amp;nbsp;잘 살펴 보시길 바랍니다.&lt;br&gt;&lt;br&gt;한가지 주의하셔야 할것은 안드로이드 프로그래밍을 어느 정도는 할 줄 알아야 C언어로 작성한 라이브러리와 원활한 인터페이스가 가능하다는 것입니다. 키입력/터치입력/화면출력/소리출력등 기본적인 이벤트나&amp;nbsp;리소스 사용은 가능하면 안드로이드 플랫폼으로 돌려야 하기 때문입니다.&lt;br&gt;&lt;br&gt;아래는 C언어 게임 엔진&amp;nbsp;기반의 FPS게임인 Woflenstein 3D를 오드로이드에 이식하여 플레이하는 사진입니다. &lt;br&gt;서든어택의 할아버지격인 고전 게임입니다. 다음에는 이 게임의 소스 코드를&amp;nbsp;공개하고 그&amp;nbsp;이식 과정을 설명드리겠습니다.&lt;br&gt;&lt;img height=&quot;600&quot; alt=&quot;s_IMG_1943.JPG&quot; src=&quot;http://www.androidpub.com/files/attach/images/319/637/082/s_IMG_1943.JPG&quot; width=&quot;900&quot;&gt;&amp;nbsp;&lt;img height=&quot;600&quot; alt=&quot;s_IMG_1947.JPG&quot; src=&quot;http://www.androidpub.com/files/attach/images/319/637/082/s_IMG_1947.JPG&quot; width=&quot;900&quot;&gt; &lt;br&gt;&lt;br&gt;끝으로 Apress 출판사에서 나온 &quot;Pro Android Games - Vladimir Silva 저&quot; 책을 참고하였음을 밝힙니다.&lt;/p&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 25 Jan 2010 15:55:31 +0900</pubDate>
										<slash:comments>14</slash:comments>
			</item>
		<item>
		<title>모서리가 둥근 ImageView 만들기</title>
		<dc:creator>안드롱</dc:creator>
		<link>http://www.androidpub.com/82480</link>
				<guid isPermaLink="true">http://www.androidpub.com/82480</guid>
		  
						<comments>http://www.androidpub.com/82480#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;ImageView 를 roundRec 으로 처리한 클래스 입니다.&lt;BR&gt;roundRec 형태의 띠 를 이미지위에 덮어씌우는 방법으로 처리했습니다..&lt;BR&gt;이방법 외에 여러가지 방법이 있을수 있습니다.&lt;BR&gt;정석은 아니오니 참고만 하시길 바랍니다..&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;pre class=&quot;brush: php;&quot;&gt;public class ProfileImageView extends ImageView {
 private int n = 5;
 
 private int rWidth = 0;
 private int rHeight = 0;
 
 public ProfileImageView(Context context) {
  super(context);
  
 }
 
 public void setHeight(int h){
  rHeight = h;
 }
 
 public void setWidth(int w){
  rWidth = w;
 }&lt;/pre&gt;
&lt;pre class=&quot;brush: php;&quot;&gt; @Override
 protected void onDraw(Canvas canvas) { 
  super.onDraw(canvas);
  float[] outerR = new float[] { n,n,n,n,n,n,n,n };
  RectF   inset = new RectF(5, 5, 5, 5); // 모서리 둥근 사각형 띠의 두께.
        float[] innerR = new float[] { n,n,n,n,n,n,n,n };
  ShapeDrawable mDrawables = new ShapeDrawable(new RoundRectShape(outerR, inset, innerR));
  mDrawables.getPaint().setColor(Color.WHITE);
  mDrawables.getPaint().setAntiAlias(true);
  mDrawables.setBounds(-2,-2,rWidth+1, rHeight+1);
  mDrawables.draw(canvas);
 }
}&lt;/pre&gt;
&lt;P&gt;&lt;BR&gt;&lt;IMG height=480 alt=device.png src=&quot;http://www.androidpub.com/files/attach/images/319/480/082/device.png&quot; width=320&gt;&amp;nbsp;&lt;/P&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 25 Jan 2010 13:23:18 +0900</pubDate>
										<slash:comments>4</slash:comments>
			</item>
		<item>
		<title>안드로이드 2.1 소스 업데이트</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/80974</link>
				<guid isPermaLink="true">http://www.androidpub.com/80974</guid>
		  
						<comments>http://www.androidpub.com/80974#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://android.git.kernel.org/&quot;&gt;http://android.git.kernel.org/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;안드로이드 2.1 소스들이 안드로이드 오픈소스에 업데이트 되었네요. 엘클레어 브랜치에 올라갔다고 합니다. 흠 2.1이 마이너 업데이트이기도 해서 별도의 브랜치는 아니었군요. 그렇다면 Froyo는 2.5 인가 보내요.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;새로운 갤러리 쿨아이리스필난다고 생각 했는데, 쿨아이리스에서 만들었군요. 이건좀 쇼킹? 찾아보니 보도자료도 내고 했었는데. 묻혔었나보군요. =+=&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://android.git.kernel.org/&quot;&gt;&lt;/a&gt;


&lt;/p&gt;&lt;/div&gt;</description>
				<pubDate>Sat, 23 Jan 2010 14:12:46 +0900</pubDate>
										<slash:comments>12</slash:comments>
			</item>
		<item>
		<title>웹서버 연동 앱 작성을 공부 과정</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/80310</link>
				<guid isPermaLink="true">http://www.androidpub.com/80310</guid>
		  
						<comments>http://www.androidpub.com/80310#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;예전에 안드로이드 인터넷 앱 강의를 한 경험이 있어서 그 목차를 적어봅니다.&amp;nbsp;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. 안드로이드 애플리케이션 개발&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;* 안드로이드 애플리케이션의 기본적인 개발방법 습득&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2. 웹서비스 API와 XML에 대한 이해&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;* REST API란?&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;* Twitter API의 구성 (&lt;a href=&quot;http://apiwiki.twitter.com/Twitter-API-Documentation&quot;&gt;http://apiwiki.twitter.com/Twitter-API-Documentation&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;* Flicker API의 구성 (&lt;a href=&quot;http://www.flickr.com/services/api/&quot;&gt;http://www.flickr.com/services/api/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;3. XML에 대한 이해&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;* XML 파서 사용법&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; * XmlPullParser (&lt;a href=&quot;http://www.xmlpull.org/&quot;&gt;http://www.xmlpull.org/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; * SaxParser&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;4. HttpClient 의 사용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;* Apache Http Client를 이용한 HTTP 프로토콜 사용 (&lt;a href=&quot;http://hc.apache.org/httpcomponents-client/httpclient/index.html&quot;&gt;http://hc.apache.org/httpcomponents-client/httpclient/index.html&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;5. 안드로이드 클라이언트 작성 예제&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;* 플리커 사진 앱 예제 : 포토스트림 (&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: AppleGothic, Dotum, sans-serif; &quot;&gt;&lt;a href=&quot;http://code.google.com/p/apps-for-android/&quot; onclick=&quot;window.open(this.href);return false;&quot;&gt;http://code.google.com/p/apps-for-android/&lt;/a&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Q&amp;amp;A게시판에 검색조차 않으시고 무작정 모르겠어요 라고 질문하시는 분들이 많네요. 위에것들을 직접 찾아가며 공부하신 후에 상세한 부분 모르는 것들을 질문하시는것이 좋습니다.펍커뮤니티상에서도 각 부분부분에 관련된 질의 응답이 많으니 위의 검색창을 이용해보세요.&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Fri, 22 Jan 2010 17:27:57 +0900</pubDate>
										<slash:comments>4</slash:comments>
			</item>
		<item>
		<title>모바일 메가 트렌드 2010</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/78368</link>
				<guid isPermaLink="true">http://www.androidpub.com/78368</guid>
		  
						<comments>http://www.androidpub.com/78368#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;모바일 메가 트렌드 2010 맘에드는 자료라 올려놓습니다.&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div style=&quot;width:425px;text-align:left&quot; id=&quot;__ss_2899240&quot;&gt;&lt;a style=&quot;font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/andreasc/mobile-megatrends-2010-vision-mobile-research&quot; title=&quot;Mobile Megatrends 2010 (VisionMobile)&quot;&gt;Mobile Megatrends 2010 (VisionMobile)&lt;/a&gt;&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mobilemegatrends2010visionmobileresearch-100112163016-phpapp02&amp;amp;stripped_title=mobile-megatrends-2010-vision-mobile-research&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mobilemegatrends2010visionmobileresearch-100112163016-phpapp02&amp;amp;stripped_title=mobile-megatrends-2010-vision-mobile-research&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/object&gt;&lt;div style=&quot;font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;&quot;&gt;View more &lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/&quot;&gt;documents&lt;/a&gt; from &lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/andreasc&quot;&gt;andreasc&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Thu, 21 Jan 2010 15:55:25 +0900</pubDate>
									</item>
		<item>
		<title>회색의 안드로이드 개발 관련 인터뷰 동영상</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/78288</link>
				<guid isPermaLink="true">http://www.androidpub.com/78288</guid>
		  
						<comments>http://www.androidpub.com/78288#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;데브멘토와 찍고나서 부끄러워서 절대 안볼거라 생각했지만 보고나서 여기다가 올려놓기 까지 하게 되는군요. 제가 생각하는 올해의 안드로이드, 초급, 중급개발자를 위한 조언, 올해 안드로이드펍의 커뮤니티 방향등으로 구성되어 있습니다.&lt;div&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0&quot; width=&quot;500&quot; height=&quot;402&quot; id=&quot;movie&quot; align=&quot;middle&quot;&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://flvr.pandora.tv/flv2pan/flvmovie.dll/userid=mosaicnet&amp;amp;url=20100120192534800c1g5j9zf7yljy&amp;amp;prgid=36941300&amp;amp;lang=ko&quot;&gt;&lt;param name=&quot;wmode&quot; value=&quot;window&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://flvr.pandora.tv/flv2pan/flvmovie.dll/userid=mosaicnet&amp;amp;url=20100120192534800c1g5j9zf7yljy&amp;amp;prgid=36941300&amp;amp;lang=ko&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;window&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; width=&quot;500&quot; height=&quot;402&quot;&gt;&lt;/object&gt;&lt;/div&gt;</description>
				<pubDate>Thu, 21 Jan 2010 15:08:10 +0900</pubDate>
						<category>안드로이드</category>
				<category>개발</category>
				<category>전망</category>
				<category>안드로이드펍</category>
								<slash:comments>8</slash:comments>
			</item>
		<item>
		<title>오드로이드 어플리케이션 개발자 버전 출시 소식</title>
		<dc:creator>체육샘</dc:creator>
		<link>http://www.androidpub.com/76882</link>
				<guid isPermaLink="true">http://www.androidpub.com/76882</guid>
		  
						<comments>http://www.androidpub.com/76882#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;휴대폰은 아니지만, 안드로이드 어플리케이션 개발 입문용으로 적당해 보입니다.&lt;BR&gt;GPS/카메라의 부재로&amp;nbsp;다소 제약은 있지만, 25만원도 안되는 가격이라면&amp;nbsp;충분히 그 값어치는 하는것 같습니다.&lt;BR&gt;기존에 OS나 기기 개발을 위한 플랫폼 개발자 버전은&amp;nbsp;여전히 38만원이 넘는데,&lt;BR&gt;이번에 나온 247,000원 짜리는 주머니가 가벼운 개인이나 학생 개발자에게 도움이 될것 같습니다.&lt;BR&gt;&lt;BR&gt;지금은 1.5&amp;nbsp;CupCake&amp;nbsp;버전이 깔려있지만,&amp;nbsp;&amp;nbsp;Eclair로 업데이트가 가능할것 같네요.&lt;BR&gt;관련 사이트에 보면&amp;nbsp;Google API와 APP를 사용하는 예도 보입니다.&lt;BR&gt;&lt;BR&gt;그리고 해외에서도 나름 인지도가 올라가고 있습니다. 아래 링크를 참고하세요.&lt;BR&gt;&lt;A href=&quot;http://www.linuxfordevices.com/c/a/News/HardKernel-Odroid/&quot;&gt;http://www.linuxfordevices.com/c/a/News/HardKernel-Odroid/&lt;/A&gt;&lt;BR&gt;&lt;A href=&quot;http://www.youtube.com/results?search_query=odroid&amp;amp;search_type=&amp;amp;aq=f&quot;&gt;http://www.youtube.com/results?search_query=odroid&amp;amp;search_type=&amp;amp;aq=f&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;모토로이같은 안드로이드 폰을 사서 개발하는것도 좋겠지만, 매월 요금도 내야하고 기기값도 100만원에 가까워 부담스럽습니다.&lt;BR&gt;무엇보다도 지금 쓰는 핸드폰 약정이 아직 1년 반이나 남아서 옮겨 가기도 어렵지요.&lt;BR&gt;&lt;IMG height=543 alt=odroid7.JPG src=&quot;http://www.androidpub.com/files/attach/images/319/882/076/odroid7.JPG&quot; width=575&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.hardkernel.com/storeko.php&quot;&gt;http://www.hardkernel.com/storeko.php&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/div&gt;</description>
				<pubDate>Wed, 20 Jan 2010 16:10:24 +0900</pubDate>
										<slash:comments>7</slash:comments>
			</item>
		<item>
		<title>개발용 폰트 Bitstream Vera Sans Mono</title>
		<dc:creator>netdiver</dc:creator>
		<link>http://www.androidpub.com/76890</link>
				<guid isPermaLink="true">http://www.androidpub.com/76890</guid>
		  
						<comments>http://www.androidpub.com/76890#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;font style=&quot;line-height: 120%;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot; id=&quot;writeContents&quot;&gt;Java 입문할 때는 Courier New가 편했는데 이제는 이게 제일 보기 편하네요.&lt;br&gt;&lt;br&gt;&lt;br&gt;이클립스 설정 방법은&lt;br&gt;&lt;br&gt;Window -&amp;gt; Preferences -&amp;gt; General -&amp;gt; Appearance -&amp;gt; Colors and Fonts 에서&lt;br&gt;&lt;br&gt;Java - Java Editor Text Font를 더블 클릭 (또는 포커싱하고 Edit 버튼)하여 설정하시면 됩니다.&lt;br&gt;&lt;br&gt;(XML과 기타 텍스트파일에도 적용시키고 싶으시면 Basic - Text Font를 더블클릭 하여 설정하시면 됩니다.)&lt;br&gt;&lt;br&gt;&lt;br&gt;크기 10으로 해서 쓰다가 라인수가 아쉬워서 8로 해놓고 쓰는데 한글도 잘 보이고 만족합니다.&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;font style=&quot;line-height: 120%;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot; id=&quot;writeContents&quot;&gt;(단점이라면 크기를 8 이상으로 하면 한글이 불편하게 보입니다.)&lt;/span&gt;&lt;/font&gt;&lt;br&gt;&lt;font style=&quot;line-height: 120%;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot; id=&quot;writeContents&quot;&gt;이젠 IDE 깔면 폰트부터 바꿉니다. 다른 건 못 보겠어요.&lt;br&gt;&lt;br&gt;&lt;br&gt;공식 사이트&amp;nbsp; &lt;a href=&quot;http://www.gnome.org/fonts/&quot;&gt;http://www.gnome.org/fonts/&lt;/a&gt; (아마도;;;)&lt;br&gt;&lt;br&gt;폰트 미리보기&amp;nbsp; &lt;a href=&quot;http://en.wikipedia.org/wiki/Bitstream_Vera&quot;&gt;http://en.wikipedia.org/wiki/Bitstream_Vera&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;</description>
				<pubDate>Wed, 20 Jan 2010 15:39:26 +0900</pubDate>
						<category>bitstream vera sans mono</category>
				<category>개발용 폰트</category>
								<slash:comments>4</slash:comments>
			</item>
		<item>
		<title>ODROID ADB 디바이스 드라이버 설치</title>
		<dc:creator>DynamicLink</dc:creator>
		<link>http://www.androidpub.com/76569</link>
				<guid isPermaLink="true">http://www.androidpub.com/76569</guid>
		  
						<comments>http://www.androidpub.com/76569#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;드라이버는 아래 링크에서 받아 먼저 압축을 풀어 놓습니다.&lt;BR&gt;&lt;A href=&quot;http://dev.odroid.com/projects/odroid/download/note/11&quot;&gt;http://dev.odroid.com/projects/odroid/download/note/11&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;ODROID를 처음 개발용 PC에 연결하면&amp;nbsp;아래 화면처럼 드라이버 설치를 요구합니다.&lt;BR&gt;그럼 &lt;FONT color=#2266ee&gt;&lt;STRONG&gt;&quot;목록 또는 특정 위치에서 설치(고급)&quot;&lt;/STRONG&gt;&lt;/FONT&gt;를 선택합니다.&lt;BR&gt;&lt;IMG height=384 alt=j_DriverInstall1.jpg src=&quot;http://www.androidpub.com/files/attach/images/319/569/076/j_DriverInstall1.jpg&quot; width=588&gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;그 다음 &lt;STRONG&gt;&lt;FONT color=#2266ee&gt;&quot;검색 안함. 설치할 드라이버를 직접 선택&quot;&lt;/FONT&gt;&lt;/STRONG&gt; 을 누르고 다음으로 진행합니다.&lt;BR&gt;&lt;IMG height=384 alt=j_DriverInstall2.jpg src=&quot;http://www.androidpub.com/files/attach/images/319/569/076/j_DriverInstall2.jpg&quot; width=588&gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;아래 화면에서는 &lt;FONT color=#2266ee&gt;&lt;STRONG&gt;&quot;디스크 있음&quot;&lt;/STRONG&gt;&lt;/FONT&gt; 선택합니다.&lt;BR&gt;&lt;IMG height=384 alt=j_DriverInstall3.jpg src=&quot;http://www.androidpub.com/files/attach/images/319/569/076/j_DriverInstall3.jpg&quot; width=588&gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;이제 드라이버 파일을 풀어놓은 폴더에 가서 &lt;STRONG&gt;&lt;FONT color=#2266ee&gt;&quot;android_usb.inf&quot;&lt;/FONT&gt;&lt;/STRONG&gt; 를 선택합니다.&lt;BR&gt;&lt;IMG height=390 alt=j_DriverInstall4.jpg src=&quot;http://www.androidpub.com/files/attach/images/319/569/076/j_DriverInstall4.jpg&quot; width=656&gt;&amp;nbsp;&lt;BR&gt;* 호스트 OS가&amp;nbsp;AMD-64 전용이면 x86대신에 AMD64 폴더에 있는 inf를 선택합니다.&lt;BR&gt;&lt;BR&gt;나머지 설치를 마무리하고 장치 관리자에 가보면 아래와 같이 두 개의 새로운 장치가 보입니다.&lt;BR&gt;디스크 드라이브 --- HKDKC100 Odroid Disk USB Device&lt;BR&gt;ADB Interface --- &lt;STRONG&gt;&lt;FONT color=#2266ee&gt;HardKernel Android Composite ADB Interface&lt;/FONT&gt;&lt;/STRONG&gt; &lt;BR&gt;&lt;IMG height=610 alt=j_DeviceManager.jpg src=&quot;http://www.androidpub.com/files/attach/images/319/569/076/j_DeviceManager.jpg&quot; width=390&gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;이제 느릿느릿한 에물레이터 대신 오드로이드로 어플을 개발할 수 있습니다.&lt;BR&gt;APK 전송도 가능하고 DDMS로 원격 디버깅도 할수 있습니다.&lt;BR&gt;Command Line에서 adb devices 로 보면 다음과 같습니다.&lt;BR&gt;&lt;FONT face=Tahoma&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;List of devices attached&lt;BR&gt;BABABEEFBABABEEF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; device&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;이클립스에서 디버깅시 위 장치를 선택하면 에물레이터 대신에 오드로이드가 기동합니다.&lt;BR&gt;&lt;BR&gt;조만간에 Eclair로 업데이트가 있을것 같습니다만....&lt;BR&gt;지금은 1.5 CupCake이 깔려 있으므로, 프로젝트 생성할때 API - LEVEL을 4로 설정하세요.&lt;BR&gt;&lt;BR&gt;&lt;/div&gt;</description>
				<pubDate>Wed, 20 Jan 2010 12:45:53 +0900</pubDate>
										<slash:comments>2</slash:comments>
			</item>
		<item>
		<title>How To: Set Up ADB/USB Drivers for Android Devices</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/75477</link>
				<guid isPermaLink="true">http://www.androidpub.com/75477</guid>
		  
						<comments>http://www.androidpub.com/75477#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;ins style=&quot;border: medium none ; margin: 0pt; padding: 0pt; display: inline-table; height: 15px; position: relative; visibility: visible; width: 728px;&quot;&gt;adb usb 드라이버가&amp;nbsp; 설치 안되는 경우 시도해 볼 수 있는 것을 잘 정리한&amp;nbsp; 문서가 있어서 퍼 왔습니다. &lt;br&gt;&lt;br&gt;수고하세요!&lt;br&gt;&lt;br&gt;원본 링크 : http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&lt;br&gt;&lt;br&gt;&lt;ins style=&quot;border: medium none ; margin: 0pt; padding: 0pt; display: block; height: 15px; position: relative; visibility: visible; width: 728px;&quot;&gt;&lt;iframe allowtransparency=&quot;true&quot; hspace=&quot;0&quot; id=&quot;google_ads_frame2&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; name=&quot;google_ads_frame&quot; src=&quot;http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-1629266318970068&amp;amp;output=html&amp;amp;h=15&amp;amp;slotname=6312522932&amp;amp;w=728&amp;amp;lmt=1263881618&amp;amp;flash=10.0.42&amp;amp;url=http%3A%2F%2Ftheunlockr.com%2F2009%2F10%2F06%2Fhow-to-set-up-adb-usb-drivers-for-android-devices%2F&amp;amp;dt=1263881619598&amp;amp;prev_slotnames=7560658903&amp;amp;correlator=1263881618880&amp;amp;frm=0&amp;amp;ga_vid=1877620873.1263881054&amp;amp;ga_sid=1263881054&amp;amp;ga_hid=764314596&amp;amp;ga_fc=1&amp;amp;u_tz=540&amp;amp;u_his=1&amp;amp;u_java=0&amp;amp;u_h=1024&amp;amp;u_w=1280&amp;amp;u_ah=1024&amp;amp;u_aw=1280&amp;amp;u_cd=32&amp;amp;u_nplug=16&amp;amp;u_nmime=70&amp;amp;biw=991&amp;amp;bih=747&amp;amp;fu=0&amp;amp;ifi=2&amp;amp;dtd=34&amp;amp;xpc=o9FXelPBux&amp;amp;p=http%3A//theunlockr.com&quot; style=&quot;left: 0pt; position: absolute; top: 0pt;&quot; vspace=&quot;0&quot; width=&quot;728&quot; frameborder=&quot;0&quot; height=&quot;15&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;           
                
					&lt;div id=&quot;videodets&quot;&gt;
                    	&lt;div id=&quot;postinfo&quot;&gt;
                            &lt;h2&gt;&lt;a href=&quot;http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; title=&quot;How To: Set Up ADB/USB Drivers for Android Devices&quot;&gt;How To: Set Up ADB/USB Drivers for Android Devices&lt;/a&gt;&lt;/h2&gt;
                            
                            &lt;p class=&quot;itemlinks&quot;&gt;Posted on: &lt;a href=&quot;http://theunlockr.com/2010/01/19/&quot;&gt;October 6, 2009&lt;/a&gt;&lt;/p&gt;
                            &lt;p class=&quot;itemlinks&quot;&gt;Posted in: &lt;a href=&quot;http://theunlockr.com/category/howto/android_how_tos/&quot; title=&quot;View all posts in Android How To&apos;s&quot; rel=&quot;category tag&quot;&gt;Android How To&apos;s&lt;/a&gt;,  &lt;a href=&quot;http://theunlockr.com/category/featured/&quot; title=&quot;View all posts in Featured&quot; rel=&quot;category tag&quot;&gt;Featured&lt;/a&gt;,  &lt;a href=&quot;http://theunlockr.com/category/howto/android_how_tos/htc-g1-dream/&quot; title=&quot;View all posts in HTC G1/Dream&quot; rel=&quot;category tag&quot;&gt;HTC G1/Dream&lt;/a&gt;,  &lt;a href=&quot;http://theunlockr.com/category/howto/android_how_tos/htc-hero-g2-android_how_tos-howto/&quot; title=&quot;View all posts in HTC Hero/G2&quot; rel=&quot;category tag&quot;&gt;HTC Hero/G2&lt;/a&gt;,  &lt;a href=&quot;http://theunlockr.com/category/howto/android_how_tos/htc-mytouch-3g-magic/&quot; title=&quot;View all posts in HTC MyTouch 3G/Magic&quot; rel=&quot;category tag&quot;&gt;HTC MyTouch 3G/Magic&lt;/a&gt;,  &lt;a href=&quot;http://theunlockr.com/category/howto/&quot; title=&quot;View all posts in How To&apos;s&quot; rel=&quot;category tag&quot;&gt;How To&apos;s&lt;/a&gt;,  &lt;a href=&quot;http://theunlockr.com/category/video/&quot; title=&quot;View all posts in Video&quot; rel=&quot;category tag&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;
                            &lt;p class=&quot;itemlinks&quot;&gt;&lt;a href=&quot;http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/#comments&quot; title=&quot;Comment on This Video&quot;&gt;Comment on This Video&lt;/a&gt;&lt;/p&gt;
                            &lt;p class=&quot;itemlinks&quot;&gt;&lt;a href=&quot;_javascript:;&quot; _onmousedown=&quot;toggleSlide(&apos;sharearea&apos;);&quot; title=&quot;Share this episode with others&quot;&gt;Share This Video&lt;/a&gt;&lt;/p&gt;
                            
                            &lt;div id=&quot;sharearea&quot; style=&quot;padding: 0pt 0pt 10px; display: none; width: 640px; float: left; height: 100px;&quot;&gt;
                            &lt;div id=&quot;socialize&quot;&gt;
                                &lt;div style=&quot;float: left; width: 150px;&quot;&gt;
                                    &lt;ul style=&quot;list-style-type: none; line-height: 20px; padding-top: 5px;&quot;&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/delicious.gif&quot; alt=&quot;del&quot;&gt; &lt;a href=&quot;http://del.icio.us/post?url=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;del.icio.us&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/blinklist.gif&quot; alt=&quot;blink&quot;&gt; &lt;a href=&quot;http://blinklist.com/index.php?Action=Blink/addblink.php&amp;amp;Url=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;blinklist&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/digg.gif&quot; alt=&quot;digg&quot;&gt; &lt;a href=&quot;http://digg.com/submit?url=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;digg&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/facebook.gif&quot; alt=&quot;face&quot;&gt; &lt;a href=&quot;http://www.facebook.com/share.php?u=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;Facebook&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; 
                                &lt;/div&gt;
                                
                                &lt;div style=&quot;float: left; width: 150px;&quot;&gt;     
                                    &lt;ul style=&quot;list-style-type: none; line-height: 20px; padding-top: 5px;&quot;&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/furl.gif&quot; alt=&quot;furl&quot;&gt; &lt;a href=&quot;http://furl.net/storeIt.jsp?u=&amp;amp;t=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;Furl&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/magnolia.gif&quot; alt=&quot;magnol&quot;&gt; &lt;a href=&quot;http://ma.gnolia.com/bookmarklet/add?url=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;ma.gnolia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/newsvine.gif&quot; alt=&quot;newsv&quot;&gt; &lt;a href=&quot;http://www.newsvine.com/_wine/save?u=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;Newsvine&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/pownce.gif&quot; alt=&quot;pownce&quot;&gt; &lt;a href=&quot;http://pownce.com/send/link/?url=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;Pownce&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
                                &lt;/div&gt;
                                
                                &lt;div style=&quot;float: left; width: 150px;&quot;&gt;     
                                    &lt;ul style=&quot;list-style-type: none; line-height: 20px; padding-top: 5px;&quot;&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/reddit.gif&quot; alt=&quot;reddit&quot;&gt; &lt;a href=&quot;http://reddit.com/submit?url=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;reddit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/stumbleupon.gif&quot; alt=&quot;stumble&quot;&gt; &lt;a href=&quot;http://www.stumbleupon.com/submit?url=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;StumbleUpon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/technorati.gif&quot; alt=&quot;tech&quot;&gt; &lt;a href=&quot;http://www.technorati.com/faves?add=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;Technorati&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;img src=&quot;http://theunlockr.com/wp-content/themes/ondemand/images/share/twitter.gif&quot; alt=&quot;twit&quot;&gt; &lt;a href=&quot;http://twitthis.com/twit?url=http://theunlockr.com/2009/10/06/how-to-set-up-adb-usb-drivers-for-android-devices/&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
                                &lt;/div&gt;     
                            &lt;/div&gt;
                            &lt;/div&gt;
                            
                            &lt;p class=&quot;itemlinks&quot;&gt;&lt;a href=&quot;_javascript:;&quot; _onmousedown=&quot;toggleSlide(&apos;embedarea&apos;);&quot; title=&quot;Embed episode on your website&quot;&gt;Embed This Video&lt;/a&gt;&lt;/p&gt;
    
                            &lt;div id=&quot;embedarea&quot; style=&quot;padding: 0pt 0pt 10px; display: none; width: 640px; float: left; height: 100px;&quot;&gt;
                                &lt;textarea name=&quot;thoughts&quot; rows=&quot;4&quot; style=&quot;border: 1px solid rgb(184, 184, 184); padding: 5px; background: transparent none repeat scroll 0% 0%; overflow: hidden; width: 642px; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(86, 80, 80); font-family: Arial,Helvetica,sans-serif; font-size: 12px; margin-top: 10px;&quot;&gt;&amp;lt;object
width=&quot;640&quot; height=&quot;505&quot;&amp;gt;&amp;lt;param name=&quot;movie&quot;
value=&quot;http://www.youtube.com/v/1UF5w1dKe2U&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;param
name=&quot;allowFullScreen&quot; value=&quot;true&quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;param
name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&amp;gt;&amp;lt;/param&amp;gt;&amp;lt;embed
src=&quot;http://www.youtube.com/v/1UF5w1dKe2U&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&quot;
type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot;
allowfullscreen=&quot;true&quot; width=&quot;640&quot;
height=&quot;505&quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&lt;/textarea&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        
                        &lt;div id=&quot;singlethumb&quot;&gt;
                        	&lt;div id=&quot;singlethumbnail&quot;&gt;
                        		&lt;img src=&quot;http://theunlockr.com/wp-content/uploads/2009/10/Android-ADB-Thumb.jpg&quot; alt=&quot;How To: Set Up ADB/USB Drivers for Android Devices&quot;&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
&lt;!-- google_ad_section_start --&gt;
                    
&lt;center&gt;&amp;lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-1629266318970068&quot;;
/* 468x15, created 11/18/09 */
google_ad_slot = &quot;7322598819&quot;;
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&amp;lt;/script&gt;
&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&amp;lt;/script&gt;&amp;lt;script&gt;google_protectAndRun(&quot;ads_core.google_render_ad&quot;, google_handleError, google_render_ad);&amp;lt;/script&gt;&lt;ins style=&quot;border: medium none ; margin: 0pt; padding: 0pt; display: inline-table; height: 15px; position: relative; visibility: visible; width: 468px;&quot;&gt;&lt;ins style=&quot;border: medium none ; margin: 0pt; padding: 0pt; display: block; height: 15px; position: relative; visibility: visible; width: 468px;&quot;&gt;&lt;iframe allowtransparency=&quot;true&quot; hspace=&quot;0&quot; id=&quot;google_ads_frame3&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; name=&quot;google_ads_frame&quot; src=&quot;http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-1629266318970068&amp;amp;output=html&amp;amp;h=15&amp;amp;slotname=7322598819&amp;amp;w=468&amp;amp;lmt=1263881618&amp;amp;flash=10.0.42&amp;amp;url=http%3A%2F%2Ftheunlockr.com%2F2009%2F10%2F06%2Fhow-to-set-up-adb-usb-drivers-for-android-devices%2F&amp;amp;dt=1263881619646&amp;amp;prev_slotnames=7560658903%2C6312522932&amp;amp;correlator=1263881618880&amp;amp;frm=0&amp;amp;ga_vid=1877620873.1263881054&amp;amp;ga_sid=1263881054&amp;amp;ga_hid=764314596&amp;amp;ga_fc=1&amp;amp;u_tz=540&amp;amp;u_his=1&amp;amp;u_java=0&amp;amp;u_h=1024&amp;amp;u_w=1280&amp;amp;u_ah=1024&amp;amp;u_aw=1280&amp;amp;u_cd=32&amp;amp;u_nplug=16&amp;amp;u_nmime=70&amp;amp;biw=991&amp;amp;bih=747&amp;amp;fu=0&amp;amp;ifi=3&amp;amp;dtd=10&amp;amp;xpc=kuz8bRmK9o&amp;amp;p=http%3A//theunlockr.com&quot; style=&quot;left: 0pt; position: absolute; top: 0pt;&quot; vspace=&quot;0&quot; width=&quot;468&quot; frameborder=&quot;0&quot; height=&quot;15&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/center&gt;
                    	&lt;p style=&quot;text-align: left;&quot;&gt;So
most people won’t have to use ADB (Android Debug Bridge) ever, but if
you want to learn how or want to get a little more technical with your
Android phone, here’s how to get it set up.&lt;/p&gt;
&lt;h3&gt;I. Setting Up The SDK&lt;/h3&gt;
&lt;p&gt;1. Download the Latest Android SDK from Google&lt;/p&gt;
&lt;p&gt;&lt;a _onclick=&quot;javascript:pageTracker._trackPageview(&apos;/outgoing/developer.android.com/sdk/1.6_r1/index.html&apos;);&quot; href=&quot;http://developer.android.com/sdk/1.6_r1/index.html&quot; target=&quot;_blank&quot;&gt;Android SDK&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Extract the Android SDK .Zip file to C:\AndroidSDK (this should name the new folder created AndroidSDK in the C directory.&lt;/p&gt;
&lt;p&gt;3. On your phone, click Settings &amp;gt; Applications &amp;gt; Development and make sure USB Debugging is on.&lt;/p&gt;
&lt;p&gt;4. Plug your phone into your computer via USB cable (it needs to be on). It should say installing drivers if using Windows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;!UPDATE 12.01.09&lt;/strong&gt; – If using Windows 7 skip steps 4 and 5 and use &lt;a _onclick=&quot;javascript:pageTracker._trackPageview(&apos;/outgoing/www.mydigitallife.info/2009/08/24/workaround-for-htc-hero-sync-problem-in-windows-7/&apos;);&quot; href=&quot;http://www.mydigitallife.info/2009/08/24/workaround-for-htc-hero-sync-problem-in-windows-7/&quot; target=&quot;_blank&quot;&gt;this procedure&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;5. After it installs the drivers, goto the Start menu and type cmd
into the search bar (Vista or higher) or click Run then type in cmd
(XP) to open the command prompt.&lt;/p&gt;
&lt;p&gt;6. Type the following into the command prompt window (hitting enter at the end of every line):&lt;/p&gt;
&lt;p&gt;cd\&lt;br&gt;
cd AndroidSDK\tools\&lt;br&gt;
adb devices&lt;/p&gt;
&lt;p&gt;You should see a serial number pop up, it’s the serial number of your phone. This means you are all set.&lt;/p&gt;
&lt;p&gt;If you do NOT see a serial number, then we need to reinstall the drivers.&lt;/p&gt;
&lt;h3&gt;II. Reinstall Drivers (If they did not install properly in Section I)&lt;/h3&gt;
&lt;p&gt;1. Download USBDeview&lt;/p&gt;
&lt;p&gt;&lt;a _onclick=&quot;javascript:pageTracker._trackPageview(&apos;/outgoing/download.cnet.com/USBDeview/3000-2094_4-10614190.html&apos;);&quot; href=&quot;http://download.cnet.com/USBDeview/3000-2094_4-10614190.html&quot; target=&quot;_blank&quot;&gt;USBDeview&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. While the phone is still plugged in, open USBDeview and sort by manufacturer. Find all the HTC drivers and delete them all.&lt;/p&gt;
&lt;p&gt;3. Once all have been deleted, unplug the phone from the USB cable and plug it back in.&lt;/p&gt;
&lt;p&gt;4. The correct drivers should reinstall automatically (check the
drivers as they are installing, one should say ADB Device driver).&lt;/p&gt;
&lt;p&gt;5. To check, goto Devices (or Device Manager for older versions of
Windows) in your Start menu then click on the “Android Phone”. Click on
the Hardware tab, and check the list of drivers for ADB Interface under
Type.&lt;/p&gt;
&lt;p&gt;*Otherwise, if you don’t see an ADB driver for your phone then install the drivers for your specific phone manually.&lt;br&gt;
Download your phone’s driver’s below then click Update Driver &amp;gt;
Browse &amp;gt; Let me pick &amp;gt; Computer &amp;gt; Have Disk &amp;gt; Browse &amp;gt;
Then select the driver you downloaded below:&lt;/p&gt;
&lt;p&gt;&lt;a _onclick=&quot;javascript:pageTracker._trackPageview(&apos;/outgoing/www.4shared.com/file/176972457/71b70419/usb_driver.html&apos;);&quot; href=&quot;http://www.4shared.com/file/176972457/71b70419/usb_driver.html&quot; target=&quot;_blank&quot;&gt;Motorola Droid Drivers&lt;/a&gt; (unzip the file once you download it).&lt;/p&gt;
&lt;p&gt;&lt;a _onclick=&quot;javascript:pageTracker._trackPageview(&apos;/outgoing/developer.motorola.com/docstools/library/Installing_Motorola_Handset_Drivers/&apos;);&quot; href=&quot;http://developer.motorola.com/docstools/library/Installing_Motorola_Handset_Drivers/&quot; target=&quot;_blank&quot;&gt;Motorola CLIQ Drivers&lt;/a&gt; (follow the instructions on the page).&lt;/p&gt;
&lt;p&gt;5. Done! Now you can use ADB to alter your phone from your computer.&lt;/p&gt;
&lt;h3&gt;III. Some Common ADB/Fastboot Commands&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ADB Commands&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;overflow: hidden; position: absolute; left: -10000px; top: 501px; width: 1px; height: 1px;&quot;&gt;adb devices – lists which devices are currently attached to your computer&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;overflow: hidden; position: absolute; left: -10000px; top: 501px; width: 1px; height: 1px;&quot;&gt;adb install &amp;lt;packagename.apk&amp;gt; – lets you install an Android application on your phone&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;overflow: hidden; position: absolute; left: -10000px; top: 501px; width: 1px; height: 1px;&quot;&gt;adb remount – Remounts your system in write mode – this lets you alter system files on your phone using ADB&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;overflow: hidden; position: absolute; left: -10000px; top: 501px; width: 1px; height: 1px;&quot;&gt;adb push &amp;lt;localfile&amp;gt; &amp;lt;location on your phone&amp;gt; – lets you upload files to your phones filesystem&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;overflow: hidden; position: absolute; left: -10000px; top: 501px; width: 1px; height: 1px;&quot;&gt;adb pull &amp;lt;location on your phone&amp;gt; &amp;lt;localfile&amp;gt; – lets you download files off your phones filesystem&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;overflow: hidden; position: absolute; left: -10000px; top: 501px; width: 1px; height: 1px;&quot;&gt;adb logcat – starts dumping debugging information from your handset to the console – useful for debugging your apps&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;overflow: hidden; position: absolute; left: -10000px; top: 501px; width: 1px; height: 1px;&quot;&gt;adb
shell &amp;lt;command&amp;gt; – drops you into a basic linux command shell on
your phone with no parameters, or lets you run commands directly&lt;/div&gt;
&lt;p&gt;adb devices – lists which devices are currently attached to your computer&lt;/p&gt;
&lt;p&gt;adb install &amp;lt;packagename.apk&amp;gt; – lets you install an Android application on your phone&lt;/p&gt;
&lt;p&gt;adb remount – Remounts your system in write mode – this lets you alter system files on your phone using ADB&lt;/p&gt;
&lt;p&gt;adb push &amp;lt;localfile&amp;gt; &amp;lt;location on your phone&amp;gt; – lets you upload files to your phones filesystem&lt;/p&gt;
&lt;p&gt;adb pull &amp;lt;location on your phone&amp;gt; &amp;lt;localfile&amp;gt; – lets you download files off your phones filesystem&lt;/p&gt;
&lt;p&gt;adb logcat – starts dumping debugging information from your handset to the console – useful for debugging your apps&lt;/p&gt;
&lt;p&gt;adb shell &amp;lt;command&amp;gt; – drops you into a basic linux command
shell on your phone with no parameters, or lets you run commands
directly&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fastboot Commands&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;fastboot devices – lists which devices in fastboot mode are currently attached to your computer&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;fastboot boot &amp;lt;filename&amp;gt; – boots a rom stored on your pc specified by the filename &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;fastboot flash
&amp;lt;partition&amp;gt; &amp;lt;filename&amp;gt; – flashes a rom stored on your pc,
partition can be one of {boot, recovery, system, userdata}&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 19 Jan 2010 15:16:48 +0900</pubDate>
									</item>
		<item>
		<title>SDK에서는  정상인 것이   플랫폼 빌드 쪽에서는  에러인 경우</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/73710</link>
				<guid isPermaLink="true">http://www.androidpub.com/73710</guid>
		  
						<comments>http://www.androidpub.com/73710#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&amp;nbsp;안녕하세요.&amp;nbsp; &lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;안드로이드가&amp;nbsp;&amp;nbsp;&amp;nbsp; OS 단하고&amp;nbsp; SDK 단하고&amp;nbsp; 서로 사용할 수 있는&amp;nbsp; API 가 다르단 것을&amp;nbsp; 전에도 이야기 했었는데요. &lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;이것말고도,&amp;nbsp;&amp;nbsp; SDK 단에서는&amp;nbsp; 정상적으로 컴파일도 되고,&amp;nbsp; 실행도 되는 것이&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;OS 단으로&amp;nbsp; 내려서 컴파일 하면&amp;nbsp; 에러처리 하는 것도 있더군요. &lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;list_item.xml:35: ERROR Error: This attribute must be localized. (at &apos;text&apos; with value &apos;Title&apos;).&lt;br  /&gt;list_item.xml:44: ERROR Error: This attribute must be localized. (at &apos;text&apos; with value &apos;Desc&apos;).&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;이 에러는&amp;nbsp;&amp;nbsp;&amp;nbsp; layout 파일에&amp;nbsp;&amp;nbsp; text 값을&amp;nbsp; 그냥 넣어 주었더니&amp;nbsp;&amp;nbsp; 에러 랍니다. &lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;값을 꼭 values 를 통해서 넣도록 강제 하네요. &lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;MovieList.java:454: method does not override a method from its superclass&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;이클립스에서는&amp;nbsp; @Override를&amp;nbsp; 자동으로 붙이고&amp;nbsp; 잘 컴파일 된것인데요. &lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;OS 단에서&amp;nbsp; 이거 아니랍니다.&amp;nbsp;&amp;nbsp; 삭제하면&amp;nbsp; 컴파일 잘 됩니다. &lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;&lt;br  /&gt;&lt;/p&gt;&lt;p&gt;수고하세요!&lt;br  /&gt;&lt;/p&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 18 Jan 2010 15:54:42 +0900</pubDate>
									</item>
		<item>
		<title>Sensor Simulator Example</title>
		<dc:creator>정조</dc:creator>
		<link>http://www.androidpub.com/72437</link>
				<guid isPermaLink="true">http://www.androidpub.com/72437</guid>
		  
						<comments>http://www.androidpub.com/72437#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;센서에 관심이 많아 여기저기 구글링 하다가 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;괜찮은것 같아 올립니다...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;단말기 없이 자바 Applet과 Emulate 간 I/F 를 통하여&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;값을 주고 받는듯 합니다&amp;nbsp;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;0. 첨부한 zip 파일 내려받음&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. 이클립스에서 File-&amp;gt;Import-&amp;gt;Existing Project into Worspace&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. Import 되면 아래와 같이 프로젝트가 생성 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; OISensorDemo (안드로이드 프로젝트 : Emulate에서 테스트 결과 만 Display)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; Release (Ant)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;SensorSimulator (자바 프로젝트 : 폰 모양의 그래픽을 Drag하여 accelerometer , magnetic , orientation 값을 발생)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; SensorSimulatorSettings(안드로이드 프로젝트 : IP &amp;amp; Port 셋팅&amp;nbsp;및 결과 Display, Disconnect)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3.Run&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - SensorSimulator Applet을 실행 후 &quot;애플릿&quot;-&amp;gt;&quot;복제&quot; 한 후 소켓을 설정 (예:8030)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - SensorSimulatorSettings 실행 후 Settings Tab에서 IP &amp;amp; Socket을 설정&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*) IP : SensorSimulator Applet화면에서Possible IP addresses: 가운데 하나를 골라서 입력 (예:192.168.123.186)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*) Socket :&amp;nbsp;&amp;nbsp;SensorSimulator Applet화면에서 설정한 Socket 값과 동일&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - SensorSimulatorSettings 의 Testing Tab 선택 -&amp;gt; Connect 버튼 클릭&amp;nbsp; -&amp;gt; 실행하고자 하는 센서 종류를 Check 한 후 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 화면 우측의&amp;nbsp; 핸드폰 모양을 드래깅 한다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Disconnect&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;LInk Site : &lt;a href=&quot;http://code.google.com/p/openintents/wiki/SensorSimulator&quot;&gt;http://code.google.com/p/openintents/wiki/SensorSimulator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이상입니다.&lt;/p&gt;&lt;/div&gt;</description>
				<pubDate>Sun, 17 Jan 2010 21:41:03 +0900</pubDate>
										<slash:comments>3</slash:comments>
			</item>
		<item>
		<title>WebView에서 YouTube 플러그인 동작시키기</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/71946</link>
				<guid isPermaLink="true">http://www.androidpub.com/71946</guid>
		  
						<comments>http://www.androidpub.com/71946#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;먼저 플러그인을 Enable시키면 유튜브를 포함한 플러그인들이 정상 동작합니다.&lt;/div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#EE2222&quot;&gt;mWebView.getSettings().setPluginsEnabled(true);&lt;/font&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;다만&amp;nbsp;WebViewClient 에서 shouldOverrideUrlLoading을 오버라이드하게 되면 정상적으로 YouTube플러그인이 동작하지 않는 경우가 있습니다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#EE2244&quot;&gt;The Web page at file:///android_asset/webkit/ &amp;nbsp;could not be loaded as:&lt;/font&gt; 라는 에러가 뜹니다.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;shouldOverrideUrlLoading 에서 대부분의 경우 http만 처리하시면 될테니 http에서만 작업을 처리하고 나머지 작업은 기본적으로 작동하게 되어있는 방식 그대로 동작하게 만들어주면 플러그인이 제대로 동작합니다&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;mWebView.setWebViewClient(new WebViewClient() {&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;@Override&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public boolean shouldOverrideUrlLoading(WebView view, String overrideUrl) {&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		if(overrideUrl.startsWith(&quot;http://&quot;)) {
			&lt;/span&gt;doSomething&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;
			return true;				
		} else {
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#2222CC&quot;&gt;	        	boolean override = false;
	            	Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(overrideUrl));
	            	intent.addCategory(Intent.CATEGORY_BROWSABLE);
	            	intent.putExtra(Browser.EXTRA_APPLICATION_ID, getPackageName());
	            	try {
	                	startActivity(intent);
	                	override = true;
	           	 } catch (ActivityNotFoundException ex) {
	            	}
	            	return override;&lt;/font&gt;
		}		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Sat, 16 Jan 2010 21:56:01 +0900</pubDate>
						<category>안드로이드</category>
				<category>WebView</category>
				<category>PlugIn</category>
								<slash:comments>2</slash:comments>
			</item>
		<item>
		<title>윈도우 7에 안드로이드 폰 드라이버 설치법. (x86) *단말기가 Adb 에 잡히지 않을때*</title>
		<dc:creator>Dr.K</dc:creator>
		<link>http://www.androidpub.com/70437</link>
				<guid isPermaLink="true">http://www.androidpub.com/70437</guid>
		  
						<comments>http://www.androidpub.com/70437#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;참고: x64 윈도우7은 아래 링크를 참고하세요.&lt;BR&gt;&amp;nbsp;&lt;A href=&quot;./23072&quot;&gt;&lt;FONT color=#bbbbbb&gt;http://www.androidpub.com/23072&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;이 문서에서&amp;nbsp; Windows XP 설치하는 법도 가르켜드리겠습니다.&amp;nbsp;&lt;BR&gt;&lt;BR&gt;오늘 윈도우 7에 안드로이드 드라이버잡는데 안걸려서 q/a에 글도올리고 했는데요. 다행이 하루만의 삽질끝에 해결법을 찾았습니다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;U&gt;증상&lt;BR&gt;&lt;/U&gt;&lt;/STRONG&gt;-cmd 에 &quot;adb devices&quot; 라고 쳐도 리스트에는 하나도 안나오고요.&lt;BR&gt;-DDMS 에도 역시 아무것도 나오지가 않더라구요.&lt;BR&gt;&lt;BR&gt;하지만 단말기에있는 miniSd 에 파일을 옮기수는 있었습니다.&lt;BR&gt;&lt;BR&gt;알고보니, 새로나온 윈도우7/비스타에서는 자동적으로 안드로이드 폰을 Mass storage(저장소) 로 알아 보고, 저장소 usb&amp;nbsp; 드라이버를 설치하기시작한겁니다. (절대로 자동적으로 깔리면 안됩니다)&lt;BR&gt;&lt;BR&gt;그렇게되면 단말기를 usb로 연결해도, 단말기라고 읽지 못하고, 저장소 로 읽게 되겠죠? &lt;BR&gt;&lt;BR&gt;그러면 방법을 가르켜드리겠습니다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;첫번째.&lt;BR&gt;&lt;/STRONG&gt;아래 링크를 클릭하셔서 단말기 USB드라이버를 받으세요.&lt;BR&gt;&lt;U&gt;&lt;FONT color=#3d81ee&gt;&lt;A onclick=&quot;window.open(this.href);return false;&quot; href=&quot;http://code.google.com/p/android-roms/downloads/detail?name=android_usb_windows.zip&amp;amp;can=2&amp;amp;q=&quot;&gt;android_usb_windows &lt;/A&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;STRONG&gt;윈도우 XP&lt;/STRONG&gt; 사용자분들은.&lt;BR&gt;&lt;BR&gt;단말기를 컴퓨터와 연결시키면,&amp;nbsp; 드라이버를 설치하라는 경고창이 나올껍니다.&amp;nbsp;&quot;browse my computer to install driver software&quot;을 클릭하셔서&amp;nbsp;방금 다운로드 받은 파일 폴더를 선택하시고&amp;nbsp;설치하시면 됩니다.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;윈도우 Vista&lt;/STRONG&gt; 그리고 &lt;STRONG&gt;윈도우 7&lt;/STRONG&gt; 사용자분들은,&lt;BR&gt;위에서 설명한것 처럼 단말기를 연결하는즉시,&amp;nbsp;자동적으로 mass storage device driver 을 설치를 할껍니다.&lt;BR&gt;그러면 다시 드라이버를&amp;nbsp;삭제하고 안드로이드 단말기&amp;nbsp;드라이버를 설치해야되는데요,&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;STRONG&gt;&lt;U&gt;방법&lt;/U&gt;&lt;/STRONG&gt;은 이렇게 됩니다.&lt;BR&gt;&lt;BR&gt;1.USB에서 연결되있는 저장&amp;nbsp;장치들은 다빼주세요.(예:Sdcard 아니면 flash drive 등등)&lt;BR&gt;2.제어판에있는 device manager를 클릭하세요&lt;BR&gt;3. Universal Serial bus controllers를 클릭하시고 USB mass storage device 를 언인스톨&amp;nbsp;하세요&lt;BR&gt;4.그리고 Refresh를 해주세요.&amp;nbsp;&amp;nbsp;&lt;BR&gt;5.Unknown USB 라는 문장에 작은 경고아이콘이 같이나올텐데요. 오른쪽 클릭하셔서 update driver를 클릭해주세요&lt;BR&gt;6.아까 받으신 드라이버 폴더클릭하셔서 설치하시기바랍니다.&lt;BR&gt;7.설치가 잘 되었다면 아래와 같이 단말기가 잡혀진게 보이실겁니다.&lt;BR&gt;&lt;BR&gt;&lt;IMG alt=and.jpg src=&quot;http://www.androidpub.com/files/attach/images/319/437/070/and.jpg&quot; width=799 height=580&gt;&amp;nbsp;&lt;BR&gt;이상 Dr.K 였습니다&lt;BR&gt;그럼 즐플 하세요!&lt;/div&gt;</description>
				<pubDate>Fri, 15 Jan 2010 11:36:11 +0900</pubDate>
										<slash:comments>2</slash:comments>
			</item>
		<item>
		<title>안드로이드 2.1 SDK 릴리즈</title>
		<dc:creator>회색</dc:creator>
		<link>http://www.androidpub.com/66905</link>
				<guid isPermaLink="true">http://www.androidpub.com/66905</guid>
		  
						<comments>http://www.androidpub.com/66905#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;신경쓸만큼 크게 바뀐거는 없네요. 라이브월페이퍼를 제작할수 있다는 것과 웹킷쪽에 수정된 것들이 좀 있군요.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://developer.android.com/sdk/android-2.1.html&quot;&gt;http://developer.android.com/sdk/android-2.1.html&lt;/a&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; font-size: 13px; line-height: normal; color: rgb(51, 51, 51); &quot;&gt;&lt;h4 style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.1em; color: rgb(34, 34, 34); &quot;&gt;Live Wallpapers&lt;/h4&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The following additions provide APIs for you to develop animated wallpapers:&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/service/wallpaper/package-summary.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;android.service.wallpaper&lt;/a&gt;&lt;/code&gt;&amp;nbsp;package.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/WallpaperInfo.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;WallpaperInfo&lt;/a&gt;&lt;/code&gt;&amp;nbsp;class.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Updated&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/WallpaperManager.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;WallpaperManager&lt;/a&gt;&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.1em; color: rgb(34, 34, 34); &quot;&gt;Telephony&lt;/h4&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/telephony/SignalStrength.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;SignalStrength&lt;/a&gt;&lt;/code&gt;&amp;nbsp;class provides information about the device&apos;s current network signal. This can be acquired from the new&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/telephony/PhoneStateListener.html#onSignalStrengthsChanged(android.telephony.SignalStrength)&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;onSignalStrengthsChanged(SignalStrength)&lt;/a&gt;&lt;/code&gt;&amp;nbsp;callback.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/telephony/PhoneStateListener.html#onDataConnectionStateChanged(int, int)&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;onDataConnectionStateChanged(int, int)&lt;/a&gt;&lt;/code&gt;&amp;nbsp;callback.&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.1em; color: rgb(34, 34, 34); &quot;&gt;Views&lt;/h4&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/View.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;View&lt;/a&gt;&lt;/code&gt;&amp;nbsp;methods&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/View.html#isOpaque()&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;isOpaque()&lt;/a&gt;&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/View.html#onDrawScrollBars(android.graphics.Canvas)&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;onDrawScrollBars(Canvas)&lt;/a&gt;&lt;/code&gt;.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/widget/RemoteViews.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;RemoteViews&lt;/a&gt;&lt;/code&gt;&amp;nbsp;methods&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/widget/RemoteViews.html#addView(int, android.widget.RemoteViews)&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;addView(int, RemoteViews)&lt;/a&gt;&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/widget/RemoteViews.html#removeAllViews(int)&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;removeAllViews(int)&lt;/a&gt;&lt;/code&gt;.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/ViewGroup.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;ViewGroup&lt;/a&gt;&lt;/code&gt;&amp;nbsp;methods&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/ViewGroup.html#isChildrenDrawingOrderEnabled()&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;isChildrenDrawingOrderEnabled()&lt;/a&gt;&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/ViewGroup.html#setChildrenDrawingOrderEnabled(boolean)&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;setChildrenDrawingOrderEnabled(boolean)&lt;/a&gt;&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.1em; color: rgb(34, 34, 34); &quot;&gt;WebKit&lt;/h4&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/webkit/WebStorage.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;WebStorage&lt;/a&gt;&lt;/code&gt;&amp;nbsp;methods to manipulate web storage databases.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/webkit/GeolocationPermissions.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;GeolocationPermissions&lt;/a&gt;&lt;/code&gt;&amp;nbsp;methods to get Geolocation permissions from, and set them on the WebView.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/webkit/WebSettings.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;WebSettings&lt;/a&gt;&lt;/code&gt;&amp;nbsp;methods to manage settings for app cache, web storage, and zooming based on screen density.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New&amp;nbsp;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/webkit/WebChromeClient.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;WebChromeClient&lt;/a&gt;&lt;/code&gt;&amp;nbsp;methods for handling video, browsing history, custom Views, app cache limits, and more.&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 12 Jan 2010 09:12:20 +0900</pubDate>
										<slash:comments>1</slash:comments>
			</item>
		<item>
		<title>안드로이드에서 WiFi를 이용한 Location 기능</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/66408</link>
				<guid isPermaLink="true">http://www.androidpub.com/66408</guid>
		  
						<comments>http://www.androidpub.com/66408#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;안녕하세요. &lt;br  /&gt;&lt;/p&gt;&lt;p&gt; &lt;br  /&gt;&lt;/p&gt;&lt;pre&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;안드로이드에서 Wifi를 이용해서  Location 서비스가 되는가? &lt;/span&gt;&lt;br  /&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;검색을 해 보면 된다고 되어 있습니다.&lt;br  /&gt;&lt;br  /&gt;그러면,  내가 만든(빌드한) 안드로이드 OS에서도 되나? &lt;br  /&gt;&lt;br  /&gt;검색해 보면 안되다는 글이 좀 볼 수 있습니다. &lt;br  /&gt;제가 찾은 글 중에는  드로이드 폰이  구매할 때는 되었는데,  이미지 만들어서 올려 보았더니 안되더라... &lt;br  /&gt;이런 내용도 있었습니다. &lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;아무튼, 이쪽 정보를 찾아보아야 할 필요가 생겨서 찾아본 것입니다. &lt;br  /&gt;&lt;br  /&gt;&lt;/span&gt;&lt;br  /&gt;http://www.netmite.com/android/mydroid/frameworks/base/location/java/com/android/internal/location/NetworkLocationProvider.java&lt;br  /&gt;&lt;br  /&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;위 링크에 보면, NetworkLocationProvider.java의 소스가 있습니다. &lt;br  /&gt;&lt;br  /&gt;그런데, 안드로이드 1.6 OS의 소스를 보면, &lt;br  /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;br  /&gt;frameworks/base/location/java/com/android/internal/location/&lt;br  /&gt;&lt;br  /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;이 위치를 보면 위 파일이 없습니다. &lt;br  /&gt;어디 다른 위치로 바뀐 것인지는 모르지만,  저 파일이 없으므로  지원이 안되는 것이 아닌가 추측해 봅니다. &lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;아무튼 소스를 보면, &lt;br  /&gt;&lt;/span&gt;&lt;br  /&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;NetworkLocationProvider&lt;/font&gt; &lt;strong&gt;extends&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;LocationProviderImpl&lt;/font&gt; &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br  /&gt;    &lt;strong&gt;private&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;final&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;String&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;TAG&lt;/font&gt; &lt;font color=&quot;#4444ff&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#008000&quot;&gt;&quot;NetworkLocationProvider&quot;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;;&lt;/font&gt;&lt;br  /&gt;&lt;br  /&gt;   .. 중략 ...&lt;br  /&gt;&lt;br  /&gt; &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;boolean&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;isSupported&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br  /&gt;        &lt;font color=&quot;#444444&quot;&gt;// This class provides a Google-specific location feature, so it&apos;s enabled only&lt;/font&gt;&lt;br  /&gt;        &lt;font color=&quot;#444444&quot;&gt;// when the system property ro.com.google.enable_google_location_features  is set.&lt;/font&gt;&lt;br  /&gt;        &lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;SystemProperties&lt;/font&gt;.&lt;font color=&quot;#2040a0&quot;&gt;get&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&quot;ro.com.google.enable_google_location_features&quot;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;.&lt;font color=&quot;#2040a0&quot;&gt;equals&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&quot;1&quot;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br  /&gt;            &lt;strong&gt;return&lt;/strong&gt; &lt;strong&gt;false&lt;/strong&gt;&lt;font color=&quot;#4444ff&quot;&gt;;&lt;/font&gt;&lt;br  /&gt;        &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br  /&gt;&lt;br  /&gt;        &lt;font color=&quot;#444444&quot;&gt;// Otherwise, assume cell location should work if we are not running in the emulator&lt;/font&gt;&lt;br  /&gt;        &lt;strong&gt;return&lt;/strong&gt; &lt;font color=&quot;#4444ff&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;SystemProperties&lt;/font&gt;.&lt;font color=&quot;#2040a0&quot;&gt;get&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&quot;ro.kernel.qemu&quot;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;.&lt;font color=&quot;#2040a0&quot;&gt;equals&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&quot;1&quot;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;;&lt;/font&gt;&lt;br  /&gt;    &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br  /&gt;&lt;br  /&gt;isSupported 함수에서  &lt;font color=&quot;#008000&quot;&gt;&quot;ro.com.google.enable_google_location_features&quot;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt; 를 체크하고 있습니다.&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;http://nextinnovation.org/doku.php?id=android_starting&lt;br  /&gt;&lt;br  /&gt;에 보면, &lt;br  /&gt;&lt;br  /&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; name=&quot;the_init.goldfish.rc_file&quot; id=&quot;the_init.goldfish.rc_file&quot;&gt;The init.goldfish.rc file&lt;/a&gt;&lt;/h2&gt;&lt;pre&gt;# enable &lt;span class=&quot;search_hit&quot;&gt;Google&lt;/span&gt;-specific location features,&lt;br  /&gt;# like NetworkLocationP&lt;span class=&quot;search_hit&quot;&gt;ro&lt;/span&gt;vider and LocationCollector&lt;br  /&gt;    setp&lt;span class=&quot;search_hit&quot;&gt;ro&lt;/span&gt;p &lt;span class=&quot;search_hit&quot;&gt;ro&lt;/span&gt;.&lt;span class=&quot;search_hit&quot;&gt;com&lt;/span&gt;.&lt;span class=&quot;search_hit&quot;&gt;google&lt;/span&gt;.&lt;span class=&quot;search_hit&quot;&gt;enable_google_location_features&lt;/span&gt; 1&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;로 들어가 있다고 합니다. &lt;br  /&gt;확인해 보니까  제대로 들어가 있습니다. &lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&quot;ro.kernel.qemu&quot;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt; 이 값은 에뮬레이터 인지를 확인 하는것으로 보입니다. &lt;br  /&gt;&lt;br  /&gt;http://www.anddev.org/advanced_networking_with_android-linux-t155.html&lt;br  /&gt;&lt;br  /&gt;링크에보면  sh 파일에서  설정해거나 이 값에 따라 다르게 동작 시키는 것을 볼 수가 있습니다. &lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;그런데,   다운로드한 공개 OS 소스에는   NetworkLocationProvider 부분에 대한 소스가 없고 &lt;br  /&gt;&lt;br  /&gt;http://www.mobilespeedia.com/sony-ericsson-xperia-x10-with-android-donut-1-6-launched-today/&lt;br  /&gt;소니에릭슨의  Xperia X10 의 스팩을 보면, &lt;br  /&gt;&lt;br  /&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Preloaded applications&lt;/strong&gt;&lt;/p&gt;
&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;Sony Ericsson Timescape™&lt;/li&gt;&lt;li&gt;Sony Ericsson Mediascape&lt;/li&gt;&lt;li&gt;Sony Ericsson Home with clock widget&lt;/li&gt;&lt;li&gt;Sony Ericsson Sync&lt;/li&gt;&lt;li&gt;Android Market™ Client&lt;/li&gt;&lt;li&gt;Gmail™&lt;/li&gt;&lt;li&gt;Google Calendar™&lt;/li&gt;&lt;li&gt;Google Maps™ with Street View&lt;/li&gt;&lt;li&gt;Google Media Uploader&lt;/li&gt;&lt;li&gt;Google phone-top search&lt;/li&gt;&lt;li&gt;Google search widget&lt;/li&gt;&lt;li&gt;Google Talk™&lt;/li&gt;&lt;li&gt;Google Voice Search™&lt;/li&gt;&lt;li style=&quot;font-weight: bold; color: rgb(255, 0, 0);&quot;&gt;Network Location Provider&lt;/li&gt;&lt;li&gt;Set-up Wizard&lt;/li&gt;&lt;li&gt;YouTube™&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;br  /&gt;이렇게 나오고, &lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;http://www.brighthand.com/assets/11404.pdf&lt;br  /&gt;모토롤라의 드로이드 폰 스팩을 보아도 &lt;br  /&gt;&lt;br  /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;GOOGLE MOBILE SERVICES&lt;/span&gt;&lt;br  /&gt;&lt;br  /&gt;ANDROID MARKET™&lt;br  /&gt;GMAIL™&lt;br  /&gt;GOOGLE CALENDAR SYNC™&lt;br  /&gt;GOOGLE CONTACT SYNC™&lt;br  /&gt;GOOGLE MAPS WITH STREET VIEW™&lt;br  /&gt;GOOGLE MAPS™&lt;br  /&gt;GOOGLE QUICK SEARCH BOX™&lt;br  /&gt;GOOGLE SEARCH BY VOICE™&lt;br  /&gt;GOOGLE TALK™&lt;br  /&gt;GOOGLE TURN-BY-TURN DIRECTIONS&lt;br  /&gt;GOOGLE™ SET-UP&lt;br  /&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;NETWORK LOCATION PROVIDER&lt;/span&gt;&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;이렇게  명시적으로 구글의  서비스를 사용하는 것으로 나와 있습니다. &lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;그리고,  처음의 링크의 소스를  쫒아가다 보면,  &lt;br  /&gt;내부 소스에서도 &lt;br  /&gt;&lt;br  /&gt;http://www.google.com/loc/m/api&lt;br  /&gt;&lt;br  /&gt;이 쪽으로  데이타를 주고받고 해서  NetworkLocationProvider 가 동작하더군요. &lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;즉,  Network Location Provider를  사용하기 위해서  구글의 Maps 처럼 별도 라이센스가 필요한 것으로 보입니다. &lt;br  /&gt;&lt;br  /&gt;감사합니다. &lt;/pre&gt;&lt;/div&gt;</description>
				<pubDate>Mon, 11 Jan 2010 18:31:44 +0900</pubDate>
										<slash:comments>5</slash:comments>
			</item>
		<item>
		<title>MediaScannerConnection 을 이용하여  Media scanning 하기</title>
		<dc:creator>볼레로</dc:creator>
		<link>http://www.androidpub.com/61238</link>
				<guid isPermaLink="true">http://www.androidpub.com/61238</guid>
		  
						<comments>http://www.androidpub.com/61238#comment</comments>
		  
		
				<description>&lt;div class=&quot;xe_content&quot;&gt;안녕하세요. &lt;br&gt;&lt;br&gt;앞의 글에서&amp;nbsp; MediaScanner 서비스를 실행하는 것이구요. &lt;br&gt;&lt;br&gt;이글은&amp;nbsp; 조금 더 복잡하지만&amp;nbsp;&amp;nbsp; 수동으로 Media Scanning을 하는 것입니다. &lt;br&gt;&lt;br&gt;http://developer.android.com/reference/android/media/MediaScannerConnection.html&lt;br&gt;&lt;br&gt;위 링크에&amp;nbsp; 설명이 있는데요.&amp;nbsp; &lt;br&gt;&lt;br&gt;생성자를 보면,&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;table id=&quot;pubctors&quot; class=&quot;jd-sumtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;alt-color api apilevel-1&quot;&gt;&lt;td class=&quot;jd-linkcol&quot; width=&quot;100%&quot;&gt;&lt;nobr&gt;
        &lt;span class=&quot;sympad&quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.html#MediaScannerConnection%28android.content.Context,%20android.media.MediaScannerConnection.MediaScannerConnectionClient%29&quot;&gt;MediaScannerConnection&lt;/a&gt;&lt;/span&gt;(&lt;a href=&quot;http://developer.android.com/reference/android/content/Context.html&quot;&gt;Context&lt;/a&gt; context, &lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.MediaScannerConnectionClient.html&quot;&gt;MediaScannerConnection.MediaScannerConnectionClient&lt;/a&gt; client)&lt;/nobr&gt;
        
        &lt;div class=&quot;jd-descrdiv&quot;&gt;Constructs a new MediaScannerConnection object.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;이렇게 되어 있습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;생성자가&amp;nbsp; &lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.MediaScannerConnectionClient.html&quot;&gt;MediaScannerConnection.MediaScannerConnectionClient&lt;/a&gt; 를 필요로 하므로,&amp;nbsp; &lt;br&gt;이것을 먼저 만들어 줍니다. &lt;br&gt;&lt;br&gt;private MediaScannerConnectionClient mScanClient = new MediaScannerConnectionClient(){&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onMediaScannerConnected() {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onScanCompleted(String path, Uri uri) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;};&lt;br&gt;&lt;br&gt;이 클립스가&amp;nbsp; 이렇게&amp;nbsp; 코드를 생성해 줄텐데요.&amp;nbsp; &lt;br&gt;위 두 함수를 채워 주면 됩니다. &lt;br&gt;&lt;br&gt;onMediaScannerConnected()&amp;nbsp; 이 함수는&amp;nbsp;&amp;nbsp; MediaScanner&amp;nbsp; 서비스가 연결이 된 경우 호출이 되고, &lt;br&gt;onScanCompleted()&amp;nbsp;&amp;nbsp;&amp;nbsp; 이 함수는&amp;nbsp; 스캔이 성공한&amp;nbsp; 파일에 대한&amp;nbsp; 정보를&amp;nbsp; 전달해 줍니다. &lt;br&gt;&lt;br&gt;우선&amp;nbsp; 내용을 채우는 것은&amp;nbsp;&amp;nbsp; 아래 설명을 본 후에&amp;nbsp; 채워 넣겠습니다. &lt;br&gt;&lt;br&gt;&lt;br&gt;이제 &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; private MediaScannerConnection msc&amp;nbsp; = new MediaScannerConnection(this, mScanClient);&lt;br&gt;&lt;br&gt;이렇게&amp;nbsp; MediaScannerConnection&amp;nbsp;&amp;nbsp; 변수를 만들어 줍니다. &lt;br&gt;&lt;br&gt;MediaScannerConnection&amp;nbsp; 의&amp;nbsp; 함수들을 보면&amp;nbsp; 아래와 같이 있습니다. &lt;br&gt;&lt;br&gt;&lt;table id=&quot;pubmethods&quot; class=&quot;jd-sumtable&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan=&quot;12&quot;&gt;Public Methods&lt;/th&gt;&lt;/tr&gt;



	 
    &lt;tr class=&quot;alt-color api apilevel-1&quot;&gt;
        &lt;td class=&quot;jd-typecol&quot;&gt;&lt;nobr&gt;
            
            
            
            
            
            void&lt;/nobr&gt;
        &lt;/td&gt;
        &lt;td class=&quot;jd-linkcol&quot; width=&quot;100%&quot;&gt;&lt;nobr&gt;
        &lt;span class=&quot;sympad&quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.html#connect%28%29&quot;&gt;connect&lt;/a&gt;&lt;/span&gt;()&lt;/nobr&gt;
        
        &lt;div class=&quot;jd-descrdiv&quot;&gt;Initiates a connection to the media scanner service.&lt;/div&gt;
  
  &lt;/td&gt;&lt;/tr&gt;


	 
    &lt;tr class=&quot; api apilevel-1&quot;&gt;
        &lt;td class=&quot;jd-typecol&quot;&gt;&lt;nobr&gt;
            
            
            
            
            
            void&lt;/nobr&gt;
        &lt;/td&gt;
        &lt;td class=&quot;jd-linkcol&quot; width=&quot;100%&quot;&gt;&lt;nobr&gt;
        &lt;span class=&quot;sympad&quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.html#disconnect%28%29&quot;&gt;disconnect&lt;/a&gt;&lt;/span&gt;()&lt;/nobr&gt;
        
        &lt;div class=&quot;jd-descrdiv&quot;&gt;Releases the connection to the media scanner service.&lt;/div&gt;
  
  &lt;/td&gt;&lt;/tr&gt;


	 
    &lt;tr class=&quot;alt-color api apilevel-1&quot;&gt;
        &lt;td class=&quot;jd-typecol&quot;&gt;&lt;nobr&gt;
            
            synchronized
            
            
            
            boolean&lt;/nobr&gt;
        &lt;/td&gt;
        &lt;td class=&quot;jd-linkcol&quot; width=&quot;100%&quot;&gt;&lt;nobr&gt;
        &lt;span class=&quot;sympad&quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.html#isConnected%28%29&quot;&gt;isConnected&lt;/a&gt;&lt;/span&gt;()&lt;/nobr&gt;
        
        &lt;div class=&quot;jd-descrdiv&quot;&gt;Returns whether we are connected to the media scanner service&lt;/div&gt;
  
  &lt;/td&gt;&lt;/tr&gt;


	 
    &lt;tr class=&quot; api apilevel-1&quot;&gt;
        &lt;td class=&quot;jd-typecol&quot;&gt;&lt;nobr&gt;
            
            
            
            
            
            void&lt;/nobr&gt;
        &lt;/td&gt;
        &lt;td class=&quot;jd-linkcol&quot; width=&quot;100%&quot;&gt;&lt;nobr&gt;
        &lt;span class=&quot;sympad&quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.html#onServiceConnected%28android.content.ComponentName,%20android.os.IBinder%29&quot;&gt;onServiceConnected&lt;/a&gt;&lt;/span&gt;(&lt;a href=&quot;http://developer.android.com/reference/android/content/ComponentName.html&quot;&gt;ComponentName&lt;/a&gt; className, &lt;a href=&quot;http://developer.android.com/reference/android/os/IBinder.html&quot;&gt;IBinder&lt;/a&gt; service)&lt;/nobr&gt;
        
        &lt;div class=&quot;jd-descrdiv&quot;&gt;Part of the ServiceConnection interface.&lt;/div&gt;
  
  &lt;/td&gt;&lt;/tr&gt;


	 
    &lt;tr class=&quot;alt-color api apilevel-1&quot;&gt;
        &lt;td class=&quot;jd-typecol&quot;&gt;&lt;nobr&gt;
            
            
            
            
            
            void&lt;/nobr&gt;
        &lt;/td&gt;
        &lt;td class=&quot;jd-linkcol&quot; width=&quot;100%&quot;&gt;&lt;nobr&gt;
        &lt;span class=&quot;sympad&quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.html#onServiceDisconnected%28android.content.ComponentName%29&quot;&gt;onServiceDisconnected&lt;/a&gt;&lt;/span&gt;(&lt;a href=&quot;http://developer.android.com/reference/android/content/ComponentName.html&quot;&gt;ComponentName&lt;/a&gt; className)&lt;/nobr&gt;
        
        &lt;div class=&quot;jd-descrdiv&quot;&gt;Part of the ServiceConnection interface.&lt;/div&gt;
  
  &lt;/td&gt;&lt;/tr&gt;


	 
    &lt;tr class=&quot; api apilevel-1&quot;&gt;
        &lt;td class=&quot;jd-typecol&quot;&gt;&lt;nobr&gt;
            
            
            
            
            
            void&lt;/nobr&gt;
        &lt;/td&gt;
        &lt;td class=&quot;jd-linkcol&quot; width=&quot;100%&quot;&gt;&lt;nobr&gt;
        &lt;span class=&quot;sympad&quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.html#scanFile%28java.lang.String,%20java.lang.String%29&quot;&gt;scanFile&lt;/a&gt;&lt;/span&gt;(&lt;a href=&quot;http://developer.android.com/reference/java/lang/String.html&quot;&gt;String&lt;/a&gt; path, &lt;a href=&quot;http://developer.android.com/reference/java/lang/String.html&quot;&gt;String&lt;/a&gt; mimeType)&lt;/nobr&gt;
        
        &lt;div class=&quot;jd-descrdiv&quot;&gt;Requests the media scanner to scan&lt;font color=&quot;#ee2222&quot;&gt;&lt;b&gt; a file&lt;/b&gt;&lt;/font&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;버튼이나&amp;nbsp; 어느곳이나&amp;nbsp; Media Scan을&amp;nbsp; 시작하고 싶은 곳에서&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msc.connect();&lt;br&gt;&lt;br&gt;을 호출합니다. &lt;br&gt;&lt;br&gt;그럼,&amp;nbsp; MediaScanner 서비스와 연결이 되면,&amp;nbsp;&amp;nbsp; MediaScannerConnectionClient 의&amp;nbsp; onMediaScannerConnected() 가 호출이 된답니다.&lt;br&gt;&lt;br&gt;그러므로, 실제&amp;nbsp; scanFile을&amp;nbsp; 할 수 있는 곳이&amp;nbsp;&amp;nbsp; onMediaScannerConnected() 함수 안 이랍니다. &lt;br&gt;&lt;br&gt;그리고,&amp;nbsp; scanFile의 설명을 보면,&amp;nbsp;&amp;nbsp; &apos;a file&apos; 이라고 명시하고 있습니다. &lt;br&gt;scanFile의&amp;nbsp; path 값에는&amp;nbsp;&amp;nbsp;&amp;nbsp; /sdcard/*&amp;nbsp;&amp;nbsp; 이런 값은 들어가지 않는답니다. &lt;br&gt;넣어도 되지만&amp;nbsp; 스캐닝이 안되지요. &lt;br&gt;&lt;br&gt;&lt;br&gt;이말은&amp;nbsp; 스캐닝할 파일들을&amp;nbsp; 알아서 찾아서&amp;nbsp; 정확한 파일명으로 넣어주어야 된다는 것입니다. &lt;br&gt;&lt;br&gt;&lt;br&gt;이제&amp;nbsp; onMediaScannerConnected() 함수를 채워 보겠습니다. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;private MediaScannerConnectionClient mScanClient = new MediaScannerConnectionClient(){&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onMediaScannerConnected() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Log.i(TAG, &quot;onMediaScannerConnected&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; File file = Environment.getExternalStorageDirectory();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 외장 디렉토리 가져옴 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; File[] fileNames = file.listFiles(new FilenameFilter(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 특정 확장자만 가진 파일들을 필터링함 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean accept(File dir, String name){&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return name.endsWith(&quot;.mp4&quot;) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; || name.endsWith(&quot;.avi&quot;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; || name.endsWith(&quot;.wmv&quot;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (fileNames != null)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; fileNames.length ; i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; 파일 갯수 만큼&amp;nbsp;&amp;nbsp; scanFile을 호출함 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; msc.scanFile(fileNames[i].getAbsolutePath(), null);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onScanCompleted(String path, Uri uri) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Log.i(TAG, &quot;onScanCompleted(&quot; + path + &quot;, &quot; + uri.toString() + &quot;)&quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 스캐닝한 정보를 출력해봄 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
};&lt;br&gt;&lt;br&gt;&lt;br&gt;위 코드에서는&amp;nbsp; 하위 디렉토리에&amp;nbsp; 대한 처리는 없습니다.&amp;nbsp;&amp;nbsp; (예제이기 때문이죠 ^^)&lt;br&gt;&lt;br&gt;이렇게 해서&amp;nbsp; LogCat에 찍히는 정보를 보면,&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;br&gt;01-05 13:57:16.918: INFO/TextTest(520): onMediaScannerConnected&lt;br&gt;01-05 13:57:17.039: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/SolB.mp4 mimeType: null&lt;br&gt;01-05 13:57:17.088: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/2008SA-Lp(Ì±Æ®).mp4 mimeType: null&lt;br&gt;01-05 13:57:17.117: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/Ú°Ã¶ .mp4 mimeType: null&lt;br&gt;01-05 13:57:17.168: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/2007_1215 GPF Yu-Na Kim SP.mp4 mimeType: null&lt;br&gt;01-05 13:57:17.209: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/2009 Skate America - Ladies&apos; Short Program - Yu-na Kim.mp4 mimeType: null&lt;br&gt;01-05 13:57:17.239: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/2009.1017.TEB.Yu-Na Kim SP.[6Audio.4Sub].720p.60fps.x264.6000K-Kimini.mp4 mimeType: null&lt;br&gt;01-05 13:57:17.278: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/2009.ISU.Skate.America.Interview.Yu-Na.Kim.810p.TVAsahi.X264-.mp4 mimeType: null&lt;br&gt;01-05 13:57:17.319: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/Ç¹î·¯Ã¾Æ¹.mp4 mimeType: null&lt;br&gt;&lt;font color=&quot;#ee2222&quot;&gt;01-05 13:57:17.358: DEBUG/MediaScannerService(163): IMediaScannerService.scanFile: /sdcard/Í¹Ì³2-1991.EE.XviD.AC3.CD2.avi mimeType: null&lt;/font&gt;&lt;br&gt;01-05 13:57:17.537: INFO/TextTest(520): onScanCompleted(/sdcard/SolB.mp4, content://media/external/video/media/3)&lt;br&gt;01-05 13:57:17.729: INFO/TextTest(520): onScanCompleted(/sdcard/2008SA-Lp(Ì±Æ®).mp4, content://media/external/video/media/4)&lt;br&gt;01-05 13:57:17.928: INFO/TextTest(520): onScanCompleted(/sdcard/Ú°Ã¶ .mp4, content://media/external/video/media/5)&lt;br&gt;01-05 13:57:18.118: INFO/TextTest(520): onScanCompleted(/sdcard/2007_1215 GPF Yu-Na Kim SP.mp4, content://media/external/video/media/6)&lt;br&gt;01-05 13:57:18.327: INFO/TextTest(520): onScanCompleted(/sdcard/2009 Skate America - Ladies&apos; Short Program - Yu-na Kim.mp4, content://media/external/video/media/7)&lt;br&gt;01-05 13:57:18.538: INFO/TextTest(520): onScanCompleted(/sdcard/2009.1017.TEB.Yu-Na Kim SP.[6Audio.4Sub].720p.60fps.x264.6000K-Kimini.mp4, content://media/external/video/media/8)&lt;br&gt;01-05 13:57:18.739: INFO/TextTest(520): onScanCompleted(/sdcard/2009.ISU.Skate.America.Interview.Yu-Na.Kim.810p.TVAsahi.X264-.mp4, content://media/external/video/media/9)&lt;br&gt;01-05 13:57:18.928: INFO/TextTest(520): onScanCompleted(/sdcard/Ç¹î·¯Ã¾Æ¹.mp4, content://media/external/video/media/10)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;이런식으로&amp;nbsp; 스캔이 되는 상황을 볼 수가 있습니다. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;그런데,&amp;nbsp;&amp;nbsp;&amp;nbsp; 여기서&amp;nbsp; 알수 없는 정보가 있더군요. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;스캔이 완료 되었는지&amp;nbsp; 확인할 방법이 없더군요 ㅡ.ㅡ &lt;br&gt;&lt;br&gt;&lt;br&gt;제가&amp;nbsp; SDCARD에서&amp;nbsp; 8개의&amp;nbsp; 진짜 동영상 파일과 &amp;nbsp; 1개의 가짜 동영상 파일을 넣었답니다. &lt;br&gt;가짜 파일은&amp;nbsp; text 파일인데 ,&amp;nbsp; 확장자만 avi로&amp;nbsp; 바꾸어 놓았지요. &lt;br&gt;&lt;br&gt;위에서&amp;nbsp; 빨간색으로 표시한 부분이랍니다. &lt;br&gt;&lt;br&gt;그런데,&amp;nbsp; 이 파일은&amp;nbsp; onScanCompleted() 함수에서&amp;nbsp; 불려지지가 않더군요. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;실제 디렉토리를 전부 읽어서 파일명을&amp;nbsp; 다 알고&amp;nbsp;&amp;nbsp; scanFile을 다 호출해도&amp;nbsp; &lt;br&gt;마지막 까지 진행이 되고&amp;nbsp;&amp;nbsp; 아니면 아직도 스캔중인지&amp;nbsp; 알 수가 없겠더라구요. &lt;br&gt;&lt;br&gt;스캐닝 중이면을&amp;nbsp; 대화상자로 표시하였다고 하면,&amp;nbsp; 언제 닫아야 하는지 알수 가 없다는 것입니다. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;아무튼&amp;nbsp; 사용법은&amp;nbsp; 위와 같구요.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (msc != null)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (msc.isConnected())&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; msc.disconnect();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; msc.connect();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;스캐닝을 시작하는 버튼을 위와 같이 만들어 주었답니다. &lt;br&gt;&lt;br&gt;스캐닝 중간이라도&amp;nbsp; msc.disconnect(); 호출하면 중간에&amp;nbsp; 스캐닝을 멈추기는 하더군요. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;혹시&amp;nbsp; 스캐닝이&amp;nbsp; 완료된&amp;nbsp; 시점을 알 수 있는 방법을 아시는 분 좀 알려주십시오. ^^&lt;br&gt;&lt;br&gt;감사합니다. &lt;br&gt;&lt;/div&gt;</description>
				<pubDate>Tue, 05 Jan 2010 23:01:14 +0900</pubDate>
										<slash:comments>6</slash:comments>
			</item>
	</channel>
</rss>
