(116,-116,'',116,0,0,'','','html1','[Linux/Ubuntu] USB에 우분투 설치하여 사용하기','<p><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"font-size: 15.6px; color: #ffffff;\">&lt;부제&gt;</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">USB메모리에&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">우분투(Ubuntu)</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 설치하되 기존의 이동식 디스크로의 기능을 죽이지 않고 윈도우와 리눅스 계열에서도 인식이 가능하며 U3 기능 역시 그대로 활용하는 동시에 이동식 디스크에 할당되는&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">파티션</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">을 개인 취향대로 마구마구 나눌 수 있도록&nbsp;</span><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">USB메모리를 삷고 튀기며 북치고 장구치기.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><strong style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"font-size: 15.6px; color: #ffffff;\">&lt;들어가며&gt;</span></strong><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">이번 메뉴얼은 크게는 USB메모리에 부팅이 가능한 우분투(Ubuntu)를 설치하는 과정이며, 세부적으로는 각 개인의 입맛에 맞게(사실 필자의 입맛에 맞게) USB메모리를 여러가지로 설정하는 방법을 담고있다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">인터넷 바다에서 길을 잃은 어린양이 아니고서는 이 포스팅을 찾았다는 것은 당신이 이미&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">\"우분투가 무엇인가?\"</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">에 대해 알고있다고 생각하기에 우분투에 대한 설명은 생략하도록 하겠다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">(필자가 자세히 모르기에 넘어가는 것은 아니다. 우분투가 무엇인가에 대해서 찾아 포스팅하기가 귀찮아서도 아니고, 기껏 인터넷 여기저기서 복사+붙여넣기 신공으로 열심히 작성한 글이 홀라당 날아가서 넘어가는 것은 더더욱 아니다.)</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds11.egloos.com/pds/200811/03/95/c0054495_490efa3ca2da3.jpg\" width=\"588\" height=\"441\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">이번에&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Sandisk Cruzer micro 16G U3</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 구입하고 필자 개인적으로 파티션을 여러개로 나눠서 하나에는 우분투를 설치하고 나머지는 이동식 디스크와 U3로 활용하고 싶었는데, 이게 생각대로 간단한 문제가 아니였다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">일단 예전에 썼던 Memorive 같은 경우는 파티션을 나눌 수 있는 프로그램이 따로 제공되어 2개의 파티션으로 쉽게 분할이 가능했었는데, 이번 Cruzer는 파티션 분할 기능이 아예 없다.&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">물론 단순히 파티션을 나누는 것이 문제라면&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">USB메모리를 하드디스크로 인식하게 끔 드라이버 파일을 바꾼 후 Gdisk를 이용하여 분할하는 방법</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">도 있지만, 이 방법은 컴퓨터를 옮길 때 마다 해당 하드 디스크 드라이버를 설정해 줘야 한다는 문제점이 있고, 무엇보다도 U3를 사용할 수 없게 되버린다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">그러니 이동식 디스크로서의 기능은 고스란히 살리면서 파티션을 나누는 것이 관건이라 할 수 있겠다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">그래서 한 3일 동안 끙끙 앓으며 USB메모리와 씨름한 결과 드디어 성공, 개인적인 이유로는 스스로 나중에 또 까먹지 않기 위해서 이렇게 포스팅을 하게 되었다.&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">아, 물론 이 조잡한 메뉴얼이 누군가에게 도움이 된다면 당연히 그것 만큼 보람 있는 일도 없을 것 이다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">이 메뉴얼의 본론은 크게 3가지로 나누어져 있다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">1. 강제로 USB메모리 파티션 나누기.</span><br /><br /><span style=\"color: #ffffff;\">2. 나눠진 파티션에 우분투 설치하기.</span><br /><br /><span style=\"color: #ffffff;\">3. 부팅이 가능하도록 설정하기.</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><a name=\"4709980_1\" style=\"border-bottom: 1px dotted rgb(230, 209, 169); color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\"></a><strong style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"font-size: 15.6px; color: #ffffff;\">&lt;서론&gt;</span></strong><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">모든 작업을 위해서는 아래와 같은 준비물이 필요하다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">1. 우분투 CD</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://thumbnail.egloos.net/620x0/http://pds12.egloos.com/pds/200811/03/95/c0054495_490efb53b9d36.jpg\" width=\"620\" height=\"414.984025559\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">우분투 이미지는 http://www.ubuntu.com/getubuntu/download 에서 무료로 다운로드 받을 수 있으며, 이번에 사용된 버전은 현재 최신 버전인 8.10버전을 사용하였다. Nero등의 CD버닝 툴을 이용하여 우분투 CD를 만들도록 하자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">2. 4G 이상의 USB메모리</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds10.egloos.com/pds/200811/03/95/c0054495_490efcd33f1dc.jpg\" width=\"485\" height=\"55\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">사실상 4G도 굉장히 벅찬 용량이다. 우분투와 swap을 설치하는 것만 최소 3.5G 정도이니 이동식 디스크로 500M를 사용할 생각이 아니라면 최소 8G이상의 메모리를 추천한다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">파티션분할이 지원되든 안되든 상관 없다. 앞으로 설명하겠지만 까짓껏 강제로 찢어놓면 그만인 것이다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">U3를 지원하는 메모리라면 그 기능 그대로 사용이 가능하다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">필자의 경우는 U3는 지원, 파티션 분할은 미지원되는 USB메모리이다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">3. CD-ROM과 USB부팅이 가능한 컴퓨터.</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">당연한 얘기겠지만 위에서 얘기했든 필자는 그 당연한 사람들 축에 못끼는 터라 상당히 고생했다.&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">결국 CD-ROM이 안되는 넷북과 USB 부팅이 안되는 데스크탑을 가지고 이리저리 뛰어다녀야 했다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">그리고 데스크탑 바이오스는 왜 USB부팅이 되도록 업데이트가 안되는지 궁금하다.&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">4. 근성과 인내.</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">우분투의 설치 시간이 생각보다 길다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">윈도우가 30분 걸린다면 이건 1시간 반 정도 걸리는 것 같다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">데스크탑의 성능도 있겠지만, 특성상 USB메모리에 설치하다보니 상대적으로 읽기/쓰기 속도가 느릴 수 밖에 없을 듯 싶다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">그러니 중간에 점심이나 저녁을 먹고 올 시간을 잡는 것이 보다 수월하게 진행 하는데 도움이 될 것니다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">그럼 준비물이 모두 준비되어 있다고 생각하고 본론으로 들어가 보자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><strong style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"font-size: 15.6px; color: #ffffff;\">&lt;본론 1 - 파티션 나누기&gt;</span></strong><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">1. 우분투 CD를 넣고 CD-ROM으로 부팅을 한다. 이 때 USB메모리도 함께 꼽아 놓도록 하자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">2. 부팅이 마무리 되면 아래와 같은 화면이 나온다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://thumbnail.egloos.net/620x0/http://pds10.egloos.com/pds/200811/03/95/c0054495_490efeaf558b4.jpg\" width=\"620\" height=\"492.919254658\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">3. 아랍어에 자신이 있다면 아랍어를 선택하자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">4. 이어 나오는 화면에&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">설치하지 않고 우분투를 사용해보기(T)</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 선택한다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">우분투를 설치하기 전 파티션과 관련한 작업을 사전에 해 두어야 하기 때문이다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds12.egloos.com/pds/200811/03/95/c0054495_490eff1d0d844.jpg\" width=\"522\" height=\"392\" style=\"margin: 15px 0px;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">5. 로딩이 좀 길다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://thumbnail.egloos.net/620x0/http://pds10.egloos.com/pds/200811/03/95/c0054495_490eff9797d03.jpg\" width=\"620\" height=\"324.325323475\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">6. 우분투의 X윈도우가 나타나면 상단 최우측의&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Applications -&gt; System Tools -&gt;Terminal</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">을 선택한다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds10.egloos.com/pds/200811/03/95/c0054495_490f01228f454.jpg\" width=\"383\" height=\"467\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">7. Terminal이 뜨면&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">sudo gparted</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">라고 입력한 후 엔터를 누른다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://thumbnail.egloos.net/620x0/http://pds12.egloos.com/pds/200811/03/95/c0054495_490f02a686d2f.jpg\" width=\"620\" height=\"430.81570997\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">8. 새창이 뜨면서 우분투 파티션 분할 프로그램인 gparted가 실행된다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds10.egloos.com/pds/200811/03/95/c0054495_490f031a26d8f.jpg\" width=\"548\" height=\"526\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">9. 처음 기본적으로 로딩되는 것은 컴퓨터에 장착된 HDD의 데이터이기에 USB메모리의 데이터를 불러오도록&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">상단 우측 메뉴에서</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Gparted -&gt; Devices -&gt; 자신의 USB메모리를 찾아서 선택</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">(필자의 경우는 \"/dev/sdb\")</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">하도록 하자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">장치 이름 우측의 용량이 표시되니 참고하여 선택하면 된다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds12.egloos.com/pds/200811/03/95/c0054495_490f040d188ea.jpg\" width=\"456\" height=\"396\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">10. 자신의 USB메모리를 선택했으면 프로그램 메인에 USB메모리에 관한 정보가 뜬다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">상단 메뉴의&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Device -&gt; Creat Partition Table...</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">을 선택하여 USB메모리의 파티션을 초기화 시키도록 하자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds12.egloos.com/pds/200811/03/95/c0054495_490f0504365b9.jpg\" width=\"390\" height=\"278\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">##사진의 표시되는 메모리 용량은 1G 메모리를 사용하면서 실험한 것이기에 사진에 표시되는 용량에는 신경쓰지 말도록 하자. ##</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">11. USB메모리안에 데이터를 모두 날리는 과정이니 백업해둘 데이터가 있으면 미리미리 백업해 두자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">경고창이 뜨면 Creat를 눌러 진행한다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds13.egloos.com/pds/200811/03/95/c0054495_490f0620a20fe.jpg\" width=\"604\" height=\"254\" style=\"margin: 15px 0px; cursor: pointer;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">Partition 과 Filesystem은&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">unallocated</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">로 초기화 되었을 것이다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">12. 여기서 USB메모리를 컴퓨터에서 뽑았다가 다시 끼우자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">예전 파티션 정보가 컴퓨터에 남아있다면 파티션 분할 마지막 과정에 가서 에러가 발생할 수 있기 때문이다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">혹여 뽑았을 때 gparted 프로그램이 종료가 되거나 하면 6번~9번까지 과정을 반복하도록 하자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds12.egloos.com/pds/200811/03/95/c0054495_490f067b3d8b9.jpg\" width=\"196\" height=\"61\" style=\"margin: 15px 0px;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">13.&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">이동식 디스크로 활용할 공간</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">&nbsp;부터 설정해 보도록 하자.&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">unallocated을 한번 클릭하고 상단 메뉴의&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">New</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 누르면 아래와 같은 창이 뜬다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://thumbnail.egloos.net/620x0/http://pds13.egloos.com/pds/200811/04/95/c0054495_490fa53158856.jpg\" width=\"620\" height=\"284.086687307\" style=\"margin: 15px 0px;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">지금부터 파티션을 나누게 되는데 반드시&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">이동식 디스크로 활용할 공간 -&gt; 우분투 설치 공간 -&gt; Swap 공간</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">순으로 설정해야 한다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">그렇지 않고 \"우분투 설치 공간 -&gt; Swap 공간 -&gt; 이동식 디스크로 활용할 공간\" 같이 순서를 뒤바꾸면 나중에 이동식 디스크가 인식을 하지 못하게 되거나 RAW 디스크로&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">펑~</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">하고 변신할 수 있으니 위 순서는 꼭 지키도록 하자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">창이 뜨면 아래 3가지만 변경하고&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Add</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 누른다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Create as 는 Primary Partition&nbsp;</span><br /><span style=\"color: #ffffff;\">Filesystem 은 ntfs</span><br /><span style=\"color: #ffffff;\">New Size (Mib) 은 \"이동식 디스크로 활용할 용량\"을 기재.</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">&nbsp;예) 1기가 = 1024, 2기가 = 2048</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">14. 그러면 다음과 같이 나누어져 있을 것이다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">##다시 말하지만 아래 사진에 보여지는 용량은 무시하자.##</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds12.egloos.com/pds/200811/03/95/c0054495_490f0869afd1a.jpg\" width=\"508\" height=\"106\" style=\"margin: 15px 0px;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">15. 다시 unallocated을 한번 클릭하고 상단 메뉴의&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">New</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 누른다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">그리고&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">우분투 설치 공간</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">을 아래와 같이 설정한 후&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Add</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 누른다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Create as 는 Primary Partition&nbsp;</span><br /><span style=\"color: #ffffff;\">Filesystem 은 ext3</span><br /><span style=\"color: #ffffff;\">New Size (Mib) 은 \"우분투를 설치에 필요한 용량\"을 기재.</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">설치에 최소 3G는 필요하니 형편에 맞게 4~5G 정도로 잡아준다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">USB 전체용량 - (이동식 디스크로 활용할 용량 + 우분투 설치 공간) = swap 용량</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">이 될 것인데, swap용량은 보통 512M~1G정도로 잡아두니 용량이 남는 다면&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">우분투 설치 공간</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">에 더 투자하도록 하자.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://thumbnail.egloos.net/620x0/http://pds11.egloos.com/pds/200811/03/95/c0054495_490f099f073e1.jpg\" width=\"620\" height=\"284.086687307\" style=\"margin: 15px 0px;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">16. 이제는 아래와 같이 파티션이 나누어 졌을 것이다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">##용량이 왜 이래요? 라고 묻는 사람들은 제발 아래 사진의 용량 나온건 무시하길 바란다. 중요한건 어떤 파일시스템으로 파티션이 나누어 졌는가이다.##</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds10.egloos.com/pds/200811/03/95/c0054495_490f0a7d49ddc.jpg\" width=\"406\" height=\"108\" style=\"margin: 15px 0px;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">17. 마지막으로 맨 아래 unallocated을 한번 클릭하고 상단 메뉴의&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">New</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 누른다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">그리고&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">swap 공간</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">에 대한 정보를 아래와 같이 설정한 후&nbsp;</span><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Add</span></b><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">를 누른다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">Create as 는 Primary Partition&nbsp;</span><br /><span style=\"color: #ffffff;\">Filesystem 은 linux-swap</span><br /><span style=\"color: #ffffff;\">New Size (Mib) 은 건들지 않는다.</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">자세히 말해서 그냥 나머지 용량을 다 쓰는 것이니 굳이 기재를 하지 않아도 된다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">보통 자신의 컴퓨터 메모리의 두배의 용량을 swap 파티션 용량으로 설정하니 정확하지 않아도 대충 512M~1G 정도면 무난하다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://thumbnail.egloos.net/620x0/http://pds10.egloos.com/pds/200811/03/95/c0054495_490f0b83c886f.jpg\" width=\"620\" height=\"284.086687307\" style=\"margin: 15px 0px;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">18. 이렇게 설정하면 이젠 파티션이 아래와 같이 완벽하게 나누어 졌다.</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29;\"><span style=\"color: #ffffff;\">ntfs : 이동식 디스크로 사용할 용량</span><br /><span style=\"color: #ffffff;\">ext3 : 우분투가 설치될 용량</span><br /><span style=\"color: #ffffff;\">linux-swap : 우분투 운용에 필요한 swap 용량</span></b><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /></p>\r\n<div style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; text-align: center;\"><img class=\"image_mid\" border=\"0\" alt=\"\" src=\"http://pds10.egloos.com/pds/200811/03/95/c0054495_490f0bc7eb4af.jpg\" width=\"370\" height=\"108\" style=\"margin: 15px 0px;\" /></div>\r\n<p><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><span style=\"font-family: gulim, 굴림, verdana, applegothic, helvetica, sans-serif; background-color: #342f29; color: #ffffff;\">19. 이젠 상단 메뉴의&nbsp;</span><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><br style=\"color: #9c886f; font-family: gulim, 굴림, verdana, AppleGothic, helvetica, sans-serif; background-color: #342f29;\" /><b style=\"font-family: gulim, 굴림, verdana, applegothic, helvetic','http://carroll.egloos.com/4709980','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:30:09',0,'2019-04-15 16:30:09','210.101.103.92','','','','','','','','','','','',''),(117,-117,'',117,0,0,'','','html1','[Linux/Ubuntu] ntfs 파일시스템 마운트','<span style=\"color: #404040; font-family: 굴림;\">/dev/sda2&nbsp; &nbsp; &nbsp; /media/win-c&nbsp; &nbsp; ntfs rw,auto&nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; 0</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:30:36',0,'2019-04-15 16:30:36','210.101.103.92','','','','','','','','','','','',''),(118,-118,'',118,0,0,'','','html1','[Linux/Ubuntu] gnome-commander에서 기본영상 플레이어 바꾸기','<p><span style=\"color: #404040; font-family: 굴림;\">/etc/gnome/defaults.list&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">에서 totem 으로 되어 있는 부분을 smplayer 로 변경.</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:30:50',0,'2019-04-15 16:30:50','210.101.103.92','','','','','','','','','','','',''),(119,-119,'',119,0,0,'','','html1','[Android] 기존 소스에서 앱 이름 수정','<p><span style=\"color: #404040; font-family: 굴림;\">manifest 파일에서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&gt;&gt; android:label=\"@string/app_name\" 부분 수정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&gt;&gt; ndk-build&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">이클립스 프로젝트 생성 -&gt; Run&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-----------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">res/strings.xml&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;resources&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;string name=\"hello\"&gt;Hello World, MapViewActivity!&lt;/string&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &lt;string name=\"app_name\"&gt;구글지도&lt;/string&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/resources&gt;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:30:58',0,'2019-04-15 16:30:58','210.101.103.92','','','','','','','','','','','',''),(120,-120,'',120,0,0,'','','html1','[AR] QCAR 정보...','<p><span style=\"color: #404040; font-family: 굴림;\">일단 Unity 3D 부터 말씀드리겠습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Unity 3D를 조사해보셨는지 모르겠지만, 다양한 플랫폼에 쓰이는 3D툴이죠.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">기본 버전을 깔면 안드로이드 포팅이 막혀있는데요. 밑에 주소로(영문으로 보내셔야겠죠. 나 컬컴의 QCAR쓸려고 하는데 30일간 쓸수 있는 안드로이드 시리얼 넘버 좀 보내줄 수 없겠니? 이런식으로 쓰면 시리얼 넘버를 보내줍니다.) 글을 씁니다. Unity3d만 조금 익힌다면 뭐 할려고 하시는 카드에 메세지를 띄울 수 있을겁니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">다음으로, OpenGL을 이용하는 방법입니다. 리플로 달긴 했지만 다시 상세히 설명 드리면 여러가지 방법이 있을수가 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">우선 3D 툴을 이용해서 객체를 그리든 다운을 받던, 작업을 하신 후에 obj로 export합니다. 그런후에 구글에서 검색해 보시면 obj to opengl PERL 스크립터가 있을겁니다. 그걸 이용하면 객체를 그릴때 필요한 좌표를 얻을 수가 있습니다. 헌데 아직까지 제가 해 본 방법은 텍스쳐매핑이 하나 뿐이 안 된다는 것입니다. 조만간 공부를 더 해야될듯 싶습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">그리고 사운드는 뭐 배경음악으로 하실꺼면, 안드로이드에서 MediaPlayer 클래스만 사용하면 쉽게 하실수가 있습니다. 그리고 증강되는 객체에 따라서도 다른 사운드를 넣을 수가 있는데, 이건 C소스에서 값을 받아서 자바에서 처리할 수가 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">QCAR을 이용해서 재미난 어플을 만드는 것도 관심이 있지만, 어서 전 기본적인 컴퓨터비전 공부와 JNI 열심히 해서 와그너에 버금가는 툴을 만드는게 꿈인데... 제가 마지막에 헛소리만 했군요. 자주 모바일 증강현실 포럼에서 봤으면 합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[출처] QCAR 질문좀 드릴께요... (OpenCV KOREA 대한민국 최고의 컴퓨터비젼 커뮤니티) |작성자 ohsoa</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:31:09',0,'2019-04-15 16:31:09','210.101.103.92','','','','','','','','','','','',''),(121,-121,'',121,0,0,'','','html1','[AR] obj to opengl perl script','<p><span style=\"color: #404040; font-family: 굴림;\">#! /usr/bin/perl&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\"># Purpose:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; obj2opengl.pl converts an OBJ file to an OpenGL .H file.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Discussion:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; The script reads the vertices and faces from the OBJ file,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; and computes vertex normals averaged from the faces.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; To use the resulting .h file requires a companion file&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; called graphicDefs.h.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Modified:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; 12 January 2003&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Author:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; Margaret Geroch&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( $#ARGV != 0 )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; print \"usage: obj2opengl.pl &lt;fname&gt;.obj\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; exit;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Assign the name of the input file.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$inFilename = $ARGV[0];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( $inFilename =~ /(\\w+)\\.obj/)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $object = $1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Open the input file.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">open ( INFILE, \"&lt;$inFilename\" )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; || die \"Can\'t find file $inFilename...exiting \\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Set the output file name.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$outFilename = $object.\".h\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Report on the conversion to take place.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print \"\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print \"&nbsp; Input:&nbsp; the obj file: $inFilename\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print \"&nbsp; Output: the C/C++ header file $outFilename with vertex normals\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$numVerts = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$numFaces = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Read in each line.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; Count the vertices and faces.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; &nbsp; Find the sum, max and min for each component.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while ( $line = &lt;INFILE&gt; )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; chop $line;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; if ($line =~ /v\\s+.*/)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $numVerts++;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; @tokens = split(\' \', $line);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $xsum += $tokens[1];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $ysum += $tokens[2];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $zsum += $tokens[3];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; if ( $numVerts == 1 )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $xmin = $tokens[1];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $xmax = $tokens[1];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $ymin = $tokens[2];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $ymax = $tokens[2];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $zmin = $tokens[3];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $zmax = $tokens[3];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; else&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; {&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; if ($tokens[1] &lt; $xmin)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $xmin = $tokens[1];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; elsif ($tokens[1] &gt; $xmax)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $xmax = $tokens[1];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; if ($tokens[2] &lt; $ymin)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $ymin = $tokens[2];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; elsif ($tokens[2] &gt; $ymax)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $ymax = $tokens[2];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; if ($tokens[3] &lt; $zmin)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $zmin = $tokens[3];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; elsif ($tokens[3] &gt; $zmax)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; $zmax = $tokens[3];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; elsif ($line =~ /f\\s+.*/)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $numFaces++;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">close INFILE;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Calculate the center and the scale factor&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$xcen = $xsum / $numVerts;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$ycen = $ysum / $numVerts;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$zcen = $zsum / $numVerts;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$xdiff = ($xmax - $xmin);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$ydiff = ($ymax - $ymin);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$zdiff = ($zmax - $zmin);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( ( $xdiff &gt;= $ydiff ) &amp;&amp; ( $xdiff &gt;= $zdiff ) )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $scalefac = $xdiff;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">elsif ( ( $ydiff &gt;= $xdiff ) &amp;&amp; ( $ydiff &gt;= $zdiff ) )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $scalefac = $ydiff;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">else&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $scalefac = $zdiff;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$scalefac = 1.0 / $scalefac;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Create variable names for the information.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if ( $object =~ /(\\w)(\\w*)/)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $let = $1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $morelets = $2;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $let = \"\\u$let\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$object = $let.$morelets;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Open the output file and put in some preliminary information.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">open ( OUTFILE, \"&gt;$outFilename\" )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; || die \"Can\'t create file $outFilename ... exiting\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$str = \"#include QgraphicsDefs.hQ\\n\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$str =~ s/Q/\\\"/;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$str =~ s/Q/\\\"/;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE $str;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$str = \"int num\".$object.\"Verts = \".$numVerts.\";\\n\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE $str;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$str = \"point3 \".$object.\"Verts \\[\\] = {\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE $str;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Open the input file,&nbsp; and get the points and move&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; them so that the object is centered at the origin, and then scale&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; them so the object fits in the unit block (-0.5...0.5)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; before printing them to the output file&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">open ( INFILE, \"&lt;$inFilename\" )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; || die \"Can\'t find file $inFilename...exiting \\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$j = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while ( $j &lt; $numVerts )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $line = &lt;INFILE&gt;;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; chop $line;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; if ($line =~ /v\\s+.*/)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; @tokens= split(\' \', $line);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $x = ( $tokens[1] - $xcen ) * $scalefac;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $y = ( $tokens[2] - $ycen ) * $scalefac;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $z = ( $tokens[3] - $zcen ) * $scalefac;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; printf(OUTFILE \"&nbsp; &nbsp; {%.5f, %.5f, %.5f},\\n\", $x, $y, $z);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Save the vertex coordinates.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $xcoords[$j] = $x;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $ycoords[$j] = $y;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $zcoords[$j] = $z;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Zero out the normal information.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nx[$j] = $ny[$j] = $nz[$j] = $nj[$j] = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $j = $j + 1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">close INFILE;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Open the input file to get information for the normal vectors.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE \" };\\n\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE \"int num\".$object.\"Faces = \".$numFaces.\";\\n\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE \"int \".$object.\"Faces \\[\\]\\[3\\] = {\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">open ( INFILE, \"&lt;$inFilename\" )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; || die \"Can\'t find file $inFilename...exiting \\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$j = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while ( $j &lt; $numFaces )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; $line = &lt;INFILE&gt;;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; chop $line;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; if ($line =~ /f (\\d+) (\\d+) (\\d+)/)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $index0 = $1-1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $index1 = $2-1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $index2 = $3-1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; print OUTFILE \"&nbsp; &nbsp; {$index0, $index1, $index2},\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Calculate the normal for this face and add it&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; to the running sum of normals for each of the&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; three vertices involved&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $dx1 = $xcoords[$index1] - $xcoords[$index0];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $dy1 = $ycoords[$index1] - $ycoords[$index0];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $dz1 = $zcoords[$index1] - $zcoords[$index0];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $dx2 = $xcoords[$index2] - $xcoords[$index0];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $dy2 = $ycoords[$index2] - $ycoords[$index0];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $dz2 = $zcoords[$index2] - $zcoords[$index0];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $vx = $dy1*$dz2 - $dz1*$dy2;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $vy = $dz1*$dx2 - $dx1*$dz2;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $vz = $dx1*$dy2 - $dy1*$dx2;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $d = sqrt ( $vx*$vx + $vy*$vy + $vz*$vz );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; if ( $d == 0 )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $vx = 1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $vy = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $vz = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; else&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $vx /= $d;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $vy /= $d;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; $vz /= $d;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nx[$index0] += $vx;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $ny[$index0] += $vy;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nz[$index0] += $vz;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nj[$index0] += 1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nx[$index1] += $vx;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $ny[$index1] += $vy;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nz[$index1] += $vz;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nj[$index1] += 1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nx[$index2] += $vx;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $ny[$index2] += $vy;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nz[$index2] += $vz;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nj[$index2] += 1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $j = $j + 1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">close INFILE;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE \"};\\n\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Normalize the vertex normal vectors.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">for ( $j = 0; $j &lt; $numVerts; ++$j)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;$d = sqrt ( $nx[$j]*$nx[$j] + $ny[$j]*$ny[$j] + $nz[$j]*$nz[$j] );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; if ( $d == 0 )&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nx[$j] = 1;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $ny[$j] = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nz[$j] = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; else&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nx[$j] = $nx[$j] / $d;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $ny[$j] = $ny[$j] / $d;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; $nz[$j] = $nz[$j] / $d;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp; Write the vertex normals to the file.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">#&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">$str = \"point3 \".$object.\"VertNorms \\[\\] = {\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE $str;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">for ( $j = 0; $j &lt; $numVerts; ++$j)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; print OUTFILE \"&nbsp; &nbsp; {\", $nx[$j], \", \", $ny[$j], \", \", $nz[$j], \"},\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">print OUTFILE \"};\\n\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">close OUTFILE;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:31:21',0,'2019-04-15 16:31:21','210.101.103.92','','','','','','','','','','','',''),(122,-122,'',122,0,0,'','','html1','[Linux] putty 접속시 블루칼라 폰트 색상이 너무 어두울때...','<p><span style=\"color: #404040; font-family: 굴림;\">HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\ 에서 색상을 변경.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">해당하는 session의 Colour14를 0,0,187 에서 70,110,230으로 변경하면 잘 보임.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">단, 미리 해당 접속 session을 저장해두어야 함.</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:31:33',0,'2019-04-15 16:31:33','210.101.103.92','','','','','','','','','','','',''),(123,-123,'',123,0,0,'','','html1','[ETC] SVN Error note','<p><span style=\"color: #404040; font-family: 굴림;\">문제&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Store password unencrypted (yes/no)? y&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Please type \'yes\' or \'no\': yes&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Please type \'yes\' or \'no\': yes&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Please type \'yes\' or \'no\':&nbsp; YSE&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Please type \'yes\' or \'no\': yes&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Please type \'yes\' or \'no\': 예&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">원인&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://czar.tistory.com/565\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://czar.tistory.com/565</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">환경 변수가 LANG = ko_KR.UTF-8 되어 있어서 그렇습니다.(일종에 버그이군요)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">해결&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">한글로 \"예\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">================================================================================&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">eclipse에서 svn commit 시 발생 했던 문제.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">svn: Commit failed (details follow):&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">-------------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">update 후 commit 하면 되는 경우가 있습니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">================================================================================&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">subclipse &gt; Add Svn Repository &gt; url 입력&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">해당 프로젝트를 가져오지 못하는 문제.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------------------------------------------------------folder \'\' does not exist remotely&nbsp; : 발생&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">svnadmin에서 create 하지 않는 폴더를 참조하려고 할 때 발생하는 문제&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">즉 /home/svn/project/ 가 실 경로이고,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">svnadmin --fs-type fsfs /home/svn/project/sample 생성함.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">(svnserve 구동 가정, root : /home/svn/project)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">subclipse에서 svn://localhost(or xxx.xxx.xxx.xxx)/sample 로 접근해야함.</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:31:43',0,'2019-04-15 16:31:43','210.101.103.92','','','','','','','','','','','',''),(124,-124,'',124,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 1일차','<p><span style=\"color: #404040; font-family: 굴림;\">*Activity : 화면있는 어플&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*Service : 화면없는 어플&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*Intent : Activity에서 다른 Activity/Service 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 호출하려는 Activity의 클래스명 명시(명시적 Intent)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; 같은 project(App)내의 Activity 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 호출하려는 Activity의 클래스명 대신 Intent Filter 이용(묵시적 Intent)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; 다른 project(App)내의 Acitivity 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- Intent 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; mContext : Context 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; mTarget : MainActivity 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; mExtra : 자료구조 Map 형식(key:value-int, float, Boolean, char, Serialize 쌍)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*Activity Manager : 객체생성, 메모리로 로드 ---&gt; onCreate() 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 데몬형태로 동작&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- Application 실행&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- Activity Life Cycle 관리&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">---&gt; onCreate(Bundle)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 객체 생성후 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 화면을 구성하는 객체 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*Intent Filter&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- Android xml파일-Manifest파일에 설정 가능&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- Java code로 설정 가능&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- App을 런쳐창(메뉴창)에 등록(아이콘화)하는 역활&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;intent-filter&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;action android:name=\"android.intent.action.MAIN\" /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Activity 실행설정, 상용어구(정해진 구문)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;category android:name=\"android.intent.category.LAUNCHER\" /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //런쳐카테고리 등록&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/intent-filter&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 다른 App에서 Activity 실행&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;intent-filter&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;action android:name=\"org.openintents.action.PICK_FILE\"/&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Activity 실행(action), url스타일의 실행값&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;category android:name=\"android.intent.category.DEFAULT\" /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //상용어구, 기본 Activity 정의&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;data android:scheme=\"file\" /&gt;&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:31:57',0,'2019-04-15 16:31:57','210.101.103.92','','','','','','','','','','','',''),(125,-125,'',125,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 1일차 - 소스설명 / GPS센서값 추출, 표시','<p><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;*현재 위치&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;*lon:127.1220017&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;* lat:37.4940833&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;*&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Context;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.Location;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.LocationListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.LocationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.TextView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class GetLocationByLocationListenerActivity extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; /** Called when the activity is first created. */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private TextView txtInfo;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private LocationManager locationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCreate(Bundle savedInstanceState) {&nbsp; //객체 생성 후 호출, 화면을 구성하는 객체 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCreate(savedInstanceState);&nbsp; //Activity 로 부터 상속받은 속성을 초기화, 반드시 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">setContentView(R.layout.main);&nbsp; //main.xml (res/main.xml)의 태그를 읽어서 객체 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo = (TextView) findViewById(R.id.txtInfo);&nbsp; //id속성이 txtInfo인 객체 리턴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //LocationManager 리턴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onResume() {&nbsp; //활성화 직전&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onResume();&nbsp; //반드시 호출, 실제 Activity 활성화단계&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.requestLocationUpdates(&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//LocationManager.GPS_PROVIDER, 1000, 0, locationListener);&nbsp; //위치정보요청 (장치선택, 주기-1/1000sec, 최소이동거리-meter, 응답시콜메소드)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onPause() {&nbsp; //비활성화 직후, ex)전화가 왔을경우, 홈버튼 클릭스&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onPause();&nbsp; //반드시 호출, 실제 Activity 비활성화단계---&gt;뒤로가면서 본 서비스를 ActivityStack에 저장&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //뒤로가기 버튼 호출시, ActivityStack 에 있는 것을 역순차적으로 꺼내서 실행&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.removeUpdates(locationListener);&nbsp; //응답시콜메소드-locationListener 를 더이상 호출하지 않음&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private LocationListener locationListener = new LocationListener() {&nbsp; //위치정보응답이 왔을때 호출, 현재 위치정보값이 인자로 존재&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onLocationChanged(Location location) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"위도: \" + location.getLatitude() + \"\\n\");&nbsp; //화면표시&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"경도: \" + location.getLongitude() + \"\\n\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onProviderDisabled(String provider) {}&nbsp; //위치정보값 제공이 불가능할때&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onProviderEnabled(String provider) {}&nbsp; //위치정보값 제공이 가능할때&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onStatusChanged(String provider, int status, Bundle extras) {}&nbsp; //위치제공자 상태가 변화할경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:32:13',1,'2019-04-15 16:32:13','210.101.103.92','','','','','','','','','','','',''),(126,-126,'',126,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 1일차 - 소스설명 / Intent호출','<p><span style=\"color: #404040; font-family: 굴림;\">[File 1 : LoginActivity.java]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import kr.or.kosta.R;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Intent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View.OnClickListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.Button;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.EditText;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.Toast;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class LoginActivity extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; private EditText id;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; private EditText pw;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; private Button login;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; public void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; //main.xml의 태그를 객체생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; id=(EditText)findViewById(R.id.id);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; pw=(EditText)findViewById(R.id.pw);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; login=(Button)findViewById(R.id.button1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; login.setOnClickListener(&nbsp; //이벤트가발생할객체.클릭시호출할Listner객체---&gt;new OnClickListener()&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new OnClickListener(){&nbsp; &nbsp; //ActivityManager가 LoginActivity호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onClick(View view){&nbsp; //버튼 클릭시 호출할 메소드&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.makeText(&nbsp; //다이얼로그 창을 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getApplicationContext(),&nbsp; &nbsp; //인자 1 : Context객체(인터페이스-Android Manifest:xml 설정된 정보저장 객체)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //인터페이스-상속을 받아 메소드, 속성 구현이 필요&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Context---&gt;ApplocationContext---&gt;Activity---&gt;LoginActivity&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //LoginActivity.this&nbsp; &nbsp; //getApplicationContext()대신 사용가능. 부모타입 인자에 자식객체 대입가능(?)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id.getText()+\":\"+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //인자 2 : 메시지&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pw.getText(),&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.LENGTH_LONG).show();&nbsp; //인자 3: 다이얼로그 창이 보이는 시간. show()&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Intent intent=new Intent(&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getApplicationContext(),&nbsp; //인자 1 : Context객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MainActivity.class);&nbsp; //인자 2 : 호출하려는 Activity 명시(명시적)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; intent.putExtra(\"ID\", // Map자료형 - key : value쌍&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id.getText().toString());&nbsp; //입력한 값 리턴(Editable type) ---&gt;toSting을 통해 문자열 변환&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; intent.getStringExtra(\"ID\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LoginActivity.this.startActivity(intent);&nbsp; //ActivityManager에게 intent전달&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">--------------------------------------------------------------------------&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">[File 1 : LoginActivity.java]&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Intent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View.OnClickListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.Button;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.LinearLayout;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.TextView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class MainActivity extends Activity{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private LinearLayout layout;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private TextView text;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private Button button;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Intent intent=getIntent();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 화면 구성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 1.-XML문서에 정의&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; -setContentView(R.layout.XML파일명)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; :XML문서에 정의된 태그가 객체 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 2.직접 객체 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">layout=new LinearLayout(this);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">text=new TextView(this);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">layout.addView(text);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/* Intent의 extras에서 데이터 꺼내기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* intent.get리턴받고싶은타입Extra(키값);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">String id=intent.getStringExtra(\"ID\");&nbsp; //입력된 Intent값(key) 추출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">text.setText(\"안녕하세요\"+id+\"님^^\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">button=new Button(this);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">button.setText(\"파일 탐색기 실행!!!!\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">layout.addView(button);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">button.setOnClickListener(&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">new OnClickListener(){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onClick(View view){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Intent intent=new Intent(&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; \"org.openintents.action.PICK_FILE\");&nbsp; //묵시적 Intent 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">startActivity(intent);&nbsp; //ActivityManager에게 intent전달&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //등록된 IntentFilter에서 검색, 실행&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/* setContentView(R.layout.XML파일명)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* -XML문서의 객체를 생성,화면 출력&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* setContentView(View객체)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* -View객체 화면 출력&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">setContentView(layout);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:32:34',1,'2019-04-15 16:32:34','210.101.103.92','','','','','','','','','','','',''),(127,-127,'',127,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 2일차','<p><span style=\"color: #404040; font-family: 굴림;\">* BrodcastReceiver&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - ActivityManager에게 Intent 전달시 호출되는 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - OnReceive() 메소드로 구성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 여러 BroadCastReceiver가 동시에 실행 가능&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* PendingIntent&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - ActivityManager에게 Intent 전달&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Service/Intent 등 모두다 전달 가능&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* PendingIntent ---&gt; Intent 객체 전달 ---&gt; ActivityManger(action:~값) ---&gt; broadCastReceiver호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 위성정보가 GPS를 통해 읽혀지게 되고, 이 값을 LocationManger를 통해 받을 수 있다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - GPS ---&gt; LocationManager ---&gt; Intent 객체(mExtra key:인자 / value:현재위치)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 구글맵 API 발급 키 저장경로&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - default.keyset / debug.keystore ---&gt; c:\\user\\Administrator\\.android 폴더에 복사&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"&gt;&lt;/uses-permission&gt; //GPS정보를 기준으로 위치표시&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"&gt;&lt;/uses-permission&gt; //기지국 기준으로 위치표시&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;uses-permission android:name=\"android.permission.INTERNET\"&gt;&lt;/uses-permission&gt; //구글지도에 위치표시&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 구글맵 지도 위치표시&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 중심점 이동 : mapView.animateTo(GeoPoint 객체)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; GeoPoint : 위도 * 10^6 / 경도 * 10^6&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* Canvas : 선, 도형, 이미지를 화면에 그리는 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 이미지 그리기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 1 : Bitmap bitmap =&nbsp; BitmapFactory, decodeResource(getResource(), R.drawable.photo1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; getResource() : Resource객체 / res 폴더내의 자원을 관리&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; R.drawable : Res&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; photo1 : 이미지 파일명&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; Bitmap 객체 : height 이미지 높이 / weight 너비 / src 파일명&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 2 : canvas.drawBitmap(bitmap, X좌표, Y좌표, null);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ---&gt; bitmap에 정의된 이미지파일을 불어와서 화면에 그린다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 텍스트 쓰기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- canvas.drawText(출력내용, X좌표, Y좌표, paint객체);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; ; paint객체 -&gt; 선 색, 선 두께, 테두리 모양&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 선 그리기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- canvas.drawLine(시작 X좌표, 시작 Y좌표, 끝 X좌표, 끝 Y좌표, paint객체);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* ItemizedOverlay&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Overlay로 부터 상속, draw가 구현되어 있는 상태&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 다수의 위치를 나타낼 때 사용가능&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Drawable marker;&nbsp; //marker 속성은 그릴 이미지&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; draw(Canvas, Mapview, boolean shadow);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; if(shadow == false)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; for(int i=0; i&lt;size(); i++)&nbsp; //size() 는 몇개의 이미지를 그릴것인지 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OverlayItem item = crateItem(i);&nbsp; &nbsp; //이미지 그릴 위도/경도&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //item이 리턴되어, 위도/경도에 marker 이미지 그림&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:32:52',0,'2019-04-15 16:32:52','210.101.103.92','','','','','','','','','','','',''),(128,-128,'',128,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 2일차 - 소스설명 / 센서에서 위치값을 받아 구글맵에 위치중심 표시','<p><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;* 현재 위치:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;*&nbsp; * long=127.1207837&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;*&nbsp; &nbsp; lat=37.4939974&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.GeoPoint;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.MapActivity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.MapController;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.MapView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Context;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.Criteria;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.Location;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.LocationListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.LocationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class MapViewActivity extends MapActivity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private MapView mapView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private LocationManager locationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private boolean firstLocation;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected boolean isRouteDisplayed() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">return false;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapView = (MapView) findViewById(R.id.mapView);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapView.setBuiltInZoomControls(true);&nbsp; //Zoom버튼 추가&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapView.setSatellite(true);&nbsp; //true 위성지도,false 길찾기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">firstLocation = true;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onResume() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onResume();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Criteria criteria = new Criteria();&nbsp; //위치 제공자의 조건 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; criteria.setAccuracy(Criteria.NO_REQUIREMENT);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; /*자세한 정보 :ACCURACY_FINE&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; * 대략적인 정보:ACCURACY_COARSE&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; * 설정 않함:NO_REQUIREMENT&nbsp; ---&gt; GPS/NETWORK 중 알아서 선택해라 라고 명령&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; * */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; /* 전기 사용량 정보&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; *&nbsp; NO_REQUIREMENT(상관없음), POWER_LOW, POWER(저전력 : NETWORK), MEDIUM, or POWER_HIGH&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; * */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; String best = locationManager.getBestProvider(criteria, true);&nbsp; //조건에 근접하는 위치정보 제공자 리턴(GPS/NETWORK 자동선택)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.requestLocationUpdates(best, 0, 0, locationListener);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onPause() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onPause();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.removeUpdates(locationListener);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private LocationListener locationListener = new LocationListener() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onLocationChanged(Location location) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">double latitude = location.getLatitude() * 1E6;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">double longitude = location.getLongitude() * 1E6;&nbsp; //위도*10의 6승,경도*10의 6승	</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">GeoPoint geoPoint = new GeoPoint((int)latitude, (int)longitude);	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">MapController mapController = mapView.getController();&nbsp; //지도의 위치 변경	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapController.setZoom(10);&nbsp; //확대값 1-21 기본:1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if(firstLocation) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapController.setCenter(geoPoint);&nbsp; //지동의 중심점 설정 기본:구글본사&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">firstLocation = false;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">} else {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapController.animateTo(geoPoint);&nbsp; //지동 중심점 좌표 이동&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onProviderDisabled(String provider) {}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onProviderEnabled(String provider) {}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onStatusChanged(String provider, int status, Bundle extras) {}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:34:17',1,'2019-04-15 16:34:17','210.101.103.92','','','','','','','','','','','',''),(129,-129,'',129,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 2일차 - 소스설명 / 센서에서 위치값을 받아 위도/경도로 표시','<p><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.PendingIntent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.BroadcastReceiver;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Context;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Intent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.IntentFilter;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.Location;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.LocationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.TextView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class GetLocationByPendingIntentActivity extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; private TextView txtInfo;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; private LocationManager locationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; private PendingIntent pendingIntent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; public void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; txtInfo=(TextView)findViewById(R.id.txtInfo);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onResume() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onResume();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">IntentFilter filter=new IntentFilter();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">filter.addAction(\"location.app.broadcastreceiver\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">registerReceiver(broadcastReceiver,filter);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Intent intent=new Intent(\"location.app.broadcastreceiver\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">pendingIntent=&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">PendingIntent.getBroadcast(this,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">0, intent,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">PendingIntent.FLAG_UPDATE_CURRENT);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*PendingIntent객체 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* -getBroadcast(Context,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; &nbsp; 구분코드,펜딩인텐트가 전송할 인텐트 객체,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; &nbsp; Intent만 새로 갱신해서 전송)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, pendingIntent);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*PendingIntent가 Intent를 ActivityManager&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 로 전송 메서드&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* -pendingIntent.send(Context,보낼Intent)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* locationManager.requestLocationUpdate&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 설정하면 위치정보가 전달되면&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* locationManager는&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; intent.putExtra(&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; &nbsp; LocationManager.KEY_LOCATION_CHANGED,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; &nbsp; 현재 위치가 저장된 Location객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; );&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; pendingIntent.send(context,intent);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onPause() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onPause();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">unregisterReceiver(broadcastReceiver);&nbsp; //ActivityManager에서 boardcastReceiver제거&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.removeUpdates(pendingIntent);&nbsp; //LocationManager가 pendingIntent의 send호출 제거&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private BroadcastReceiver broadcastReceiver=new BroadcastReceiver() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onReceive(Context context, Intent intent) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Location location=(Location)intent.getParcelableExtra(LocationManager.KEY_LOCATION_CHANGED);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if(location!=null){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\" \");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"위도 : \" + location.getLatitude() + \"\\t경도 : \" + location.getLongitude() + \"\\n\");	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//txtInfo.append(\"경도 : \" + location.getLongitude());&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:34:37',1,'2019-04-15 16:34:37','210.101.103.92','','','','','','','','','','','',''),(130,-130,'',130,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 2일차 - 소스설명 / GPS의 각 정보값 구하고, 목적지까지의 거리측정','<p><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Context;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.Location;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.LocationListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.LocationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.TextView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class GetGPSInfoActivity extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private TextView txtInfo;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private LocationManager locationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo = (TextView) findViewById(R.id.txtInfo);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onResume() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onResume();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onPause() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onPause();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.removeUpdates(locationListener);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private LocationListener locationListener = new LocationListener() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onLocationChanged(Location location) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.setText(\"[현재 위치 정보]\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"위도: \" + location.getLatitude() + \" °\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"경도: \" + location.getLongitude() + \" °\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"고도: \" + location.getAltitude() + \" m\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"방향: \" + location.getBearing() + \" °\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"속도: \" + location.getSpeed() + \" m/s\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//Location destination = new Location(LocationManager.GPS_PROVIDER);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Location destination = new Location(LocationManager.NETWORK_PROVIDER);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">destination.setLatitude(37.751853);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">destination.setLongitude(128.876058);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"강릉시청까지 남은 거리: \" + location.distanceTo(destination) + \" m\\n\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">float[] results = new float[2];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Location.distanceBetween(37.566547, 126.978189, 37.751853, 128.876058, results); //A위치(인자1(위도), 인자2(경도), B위치(동일) 간의 거리차&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"서울시청에서 강릉시청까지 거리: \" + results[0] + \" m\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"서울시청에서 강릉시청있는 방향: \" + results[1] + \" °\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onProviderDisabled(String provider) {}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onProviderEnabled(String provider) {}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onStatusChanged(String provider, int status, Bundle extras) {}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:35:33',1,'2019-04-15 16:35:33','210.101.103.92','','','','','','','','','','','',''),(131,-131,'',131,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 2일차 - 소스설명 / 근접한 위치인지를 측정하여 알람','<p><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.PendingIntent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.BroadcastReceiver;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Context;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Intent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.IntentFilter;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.LocationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.TextView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class ProxymityAlertActivity extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private TextView txtInfo;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private LocationManager locationManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private PendingIntent pendingIntent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private double homeLatitude;&nbsp; &nbsp; //집 위도&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private double homeLongitude;&nbsp; //집 경도&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo = (TextView) findViewById(R.id.txtInfo);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Intent intent = new Intent(\"location.app.proximityAlertReceiver\");&nbsp; //Intent 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">homeLatitude = 37.503099;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">homeLongitude = 127.052997;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onResume() {&nbsp; //활성화 되었을 경우&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onResume();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"[귺접경보 실행중]\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">IntentFilter intentFilter = new IntentFilter();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">intentFilter.addAction(\"location.app.proximityAlertReceiver\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">registerReceiver(proximityAlertReceiver, intentFilter);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.addProximityAlert(homeLatitude, homeLongitude, 100, -1, pendingIntent);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* addProximityAlert(목적지위도,목적지경도, 거리(m), 경보유지시간 -1:계속,pendingIntent)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* -locationManager는 핸드폰의 현재 위치정보 첵크(센서연동,이동있을때마다)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* -목적지 100m안에 들어왔을때&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; locationManager는&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; intent.putExtra(LocationManager.KEY_PROXIMITY_ENTERING, 1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; pendingIntent.send(context,intent)호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* -목적지 100m 밖으로 나갔을때&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; locationManager는&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; intent.putExtra(LocationManager.KEY_PROXIMITY_ENTERING, 0);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; pendingIntent.send(context,intent)호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onPause() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onPause();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"[근접경보 중지됨]\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">unregisterReceiver(proximityAlertReceiver);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">locationManager.removeProximityAlert(pendingIntent);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private BroadcastReceiver proximityAlertReceiver = new BroadcastReceiver() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onReceive(Context context, Intent intent) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">boolean proximity = intent.getBooleanExtra(LocationManager.KEY_PROXIMITY_ENTERING, false);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/* intent.get리턴받고싶은타입Extra(키값, 없을때 리턴할값);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; -근접:1-&gt;true&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*&nbsp; -나감(0),그런값 없음-&gt;false&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if(proximity) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"100m 이내로 귺접했습니다.\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">} else {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtInfo.append(\"100m 이상을 벖어났습니다.\\n\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:35:52',1,'2019-04-15 16:35:52','210.101.103.92','','','','','','','','','','','',''),(132,-132,'',132,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 2일차 - 소스설명 / 지도위에 다른 이미지 Overlay','<p><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.util.List;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.GeoPoint;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.MapActivity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.MapController;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.MapView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.Overlay;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import com.google.android.maps.Projection;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.graphics.Bitmap;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.graphics.BitmapFactory;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.graphics.Canvas;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.graphics.Color;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.graphics.Paint;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.graphics.Point;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.graphics.Rect;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.location.Location;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.Toast;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class MultiOverlayActivity extends MapActivity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private GeoPoint myGeoPoint, friendGeoPoint;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private int distance;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private Paint paint;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private Rect rect;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected boolean isRouteDisplayed() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">return false;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//MapView 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">MapView mapView = (MapView)findViewById(R.id.mapView);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapView.setBuiltInZoomControls(true);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapView.setSatellite(false);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//내 지도 좌표&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">double myLatitude = 37.566547;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">double myLongitude = 126.978189;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">myGeoPoint = new GeoPoint((int)(myLatitude*1E6), (int)(myLongitude*1E6));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//칚구 지도 좌표&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">double friendLatitude = 37.572951;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">double friendLongitude = 126.979358;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">friendGeoPoint = new GeoPoint((int)(friendLatitude*1E6), (int)(friendLongitude*1E6));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//거리 계산&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">float[] flaotDistance = new float[1];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Location.distanceBetween(myLatitude, myLongitude,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">friendLatitude, friendLongitude, flaotDistance);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">distance = (int) flaotDistance[0];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//MapView의 중앙 좌표&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">MapController mapController = mapView.getController();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapController.setZoom(16);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">mapController.setCenter(myGeoPoint);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//오버레이 추가&nbsp; ---&gt; List 자료구조 타입&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">List&lt;Overlay&gt; overlays = mapView.getOverlays();&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; //Overlay : 배열에 담을 객체타입&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">overlays.add(new MyOverlay());&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">overlays.add(new FriendOverlay());&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">overlays.add(new DistanceOverlay());&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//Paint 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">paint = new Paint();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">paint.setColor(Color.RED);&nbsp; //색상&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">paint.setAntiAlias(true);&nbsp; &nbsp; //테두리 종류&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">paint.setTextSize(15);&nbsp; &nbsp; &nbsp; &nbsp; //텍스트 사이즈&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">paint.setFakeBoldText(true);&nbsp; //볼드체 적용여부&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//투명한 셀로판지 Overlay위에 내 사진을 그림&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//myGeoPoint내 위치 위도*10의6,경도*10의 6&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private class MyOverlay extends Overlay {	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//Overlay가 화면에 출력될때 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void draw(Canvas canvas, MapView mapView, boolean shadow) {	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if(shadow == false) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.photo1);	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Projection projection = mapView.getProjection();&nbsp; //위도 경도를 화면 좌표로 전환&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Point point = new Point();	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">projection.toPixels(myGeoPoint, point);&nbsp; //위도, 경도를 화면 좌표로 전환, toPixels(GeoPoint, 화면좌표저장할Point객체)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">canvas.drawCircle(point.x, point.y, 5, paint);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">canvas.drawBitmap(bitmap, point.x, point.y, null);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">rect = new Rect(point.x, point.y,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //rect객체 설정(사각영역), 이미지의 각각 좌표를 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; point.x + bitmap.getWidth(),&nbsp; &nbsp; &nbsp; //이미지 크기에 맞춤&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; point.y + bitmap.getHeight());	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">canvas.drawCircle(point.x, point.y, 5, paint);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">canvas.drawBitmap(bitmap, point.x, point.y, null);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public boolean onTap(GeoPoint p, MapView mapView) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Projection projection = mapView.getProjection();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Point point = new Point();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">projection.toPixels(p, point);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if(rect.contains(point.x, point.y)) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Toast toast = Toast.makeText(MultiOverlayActivity.this, \"내 위치\", Toast.LENGTH_SHORT);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">toast.show();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">return true;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">} else {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">return false;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; //친구 사진&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private class FriendOverlay extends Overlay {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void draw(Canvas canvas, MapView mapView, boolean shadow) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if(shadow == false) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.photo2);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Projection projection = mapView.getProjection();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Point point = new Point();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">projection.toPixels(friendGeoPoint, point);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">canvas.drawCircle(point.x, point.y, 5, paint);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">canvas.drawBitmap(bitmap, point.x, point.y, null);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private class DistanceOverlay extends Overlay {	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void draw(Canvas canvas, MapView mapView, boolean shadow) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if(shadow == false) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.photo1);	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Projection projection = mapView.getProjection();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Point myPixelPoint = new Point();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">projection.toPixels(myGeoPoint, myPixelPoint);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Point friendPixelPoint = new Point();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">projection.toPixels(friendGeoPoint, friendPixelPoint);	</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">canvas.drawLine(myPixelPoint.x, myPixelPoint.y, friendPixelPoint.x, friendPixelPoint.y, paint);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//canvas.drawLine(bitmap2.getWidth(),&nbsp; bitmap2.getHeight(), friendPixelPoint.x, friendPixelPoint.y, paint)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//선을 그림, drawLine(시작x,시작y,끝x,끝y,Paint객체)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">canvas.drawText(distance+\"m\", (myPixelPoint.x+friendPixelPoint.x)/2, (myPixelPoint.y+friendPixelPoint.y)/2, paint);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//drawText(쓰고싶은말,x좌표,y좌표,Paint)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:36:12',1,'2019-04-15 16:36:12','210.101.103.92','','','','','','','','','','','',''),(133,-133,'',133,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 3일차','<p><span style=\"color: #404040; font-family: 굴림;\">* getSystemService()&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 데몬으로 떠있는 안드로이드OS로 부터 특정 값(H/W)을 얻어오기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - getSystemService(Context.SENSOR_SERVICE);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; 예) 장비에 있는 센서값 객체를 얻어옴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; ---&gt; 이렇게 얻어오도록 한 다음 OS가 값을 리턴하는 것을 Listener를 통해서 값이 리턴되는 것을 기다림&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (센서값이 객체를 호출시 바로 오는것이 아니기 때문에, 센서값의 경우 센서값이 변화되야지 Listener가 리턴됨)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - SensorEventListener&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; 센서값이 변화되었을 경우 값을 리턴해주는 Listener객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; onAccuracyChanged() - 센서 정확도 수정 메소드(배터리 잔량에 따라서 정확도 변화)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; onSensorChanged() - 센서 값 변화 메소드, 메소드의 매개변수(필드)인 SensorEvent를 통해서 위의 정확도를 가져올수 있음&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; (onAccuracyChanged() 사용안해도됨)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 센서값 호출 및 처리 절차 순서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 1) getSystemService(Context.SENSOR_SERVICE);&nbsp; //장비로 부터 센서호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; 2) SensorEventListener sensorEL = new SensorEventListener() {}&nbsp; //호출된 센서값을 리턴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; --- onSensorChanged(SensorEvent event) {}&nbsp; //리턴된 센서값의 호출감지&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; *SensorEvent 필드에 실제 센서 측정값 저장(float[] value인자)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; 3) sensorManager.registerListenr();&nbsp; //어떤 주기로 센서값을 가져올 것인지 이벤트 등록&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 안드로이드에서 쓰레드&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - App을 구성하는 기능, 메소드 하나가 한 쓰레드&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 기본은 Single Thread, 즉 메소드 하나씩 순서대로 실행 됨&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* view 를 상속받은 widget 클래스(Button/EditText/TextView)는 다른 View의 포함이 불가능함&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; view 를 상속받은 ViewGroup 클래스(ListView-TextView/GallaryView-ImageView포함)는 다른 View 포함&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* view를 상속받은 SurfaceView클래스 : 카메라 이미지를 가져옴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 자바에서 단 하나뿐인 멀티쓰레드 동작이 기본인 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Activity 와 독립적으로 동작함&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* SurfaceHolder&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - SurfaceView의 이벤트를 감시, 콜백메소드(SurfaceHolder.Callback) 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - SurfaceHolder.Callback&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; surfaceCreated&nbsp; - 화면이 활성화 되었을때&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; surfaceChanged - 화면이 변화 되었을때&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; surfaceDestroyed - 화면이 비활성화 되었을때&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - SurfaceView 1개당 SurfaceHolder 1개만 존재 할 수 있어 인스턴트 생성시 new로 생성하지 않음&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; private SurfaceHolder surfaceHolder;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; surfaceHolder = getHolder();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* View&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 화면의 일정영역 차지, 화면에 출력하는 기능&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - public void onDraw(Canvas canvas);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; Activity가 활성화 될 때 호출되어 화면에 위젯등을 출력&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; View.invalidate() 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - canvas.drawText(\"Hello\", 0, 0, paint);&nbsp; //화면에 글씨출력 (출력내용, X좌표, Y좌표, 출력명령)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; canvas.rotate(30, getWidth()/2, getHeight()/2);&nbsp; //X, Y좌표로 이동후 30도 기울인 곳으로 기준점이동&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; canvas.drawText(\"Hello\", 0, 0, paint);&nbsp; //위에서 이동된 기준점에서 화면에 글씨출력&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; canvas.translate(100, 100);&nbsp; //X, Y좌표(각 100)로 기준점이동&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* RelativeLayout&nbsp; : res/layouy 폴더내의 main.xml에 정의&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - &lt;RelativeLayout&gt;&nbsp; ~&nbsp; &lt;/RelativeLayout&gt; 사이에 있는 객체들을 순서대로 겹쳐서 보이게함</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:36:25',0,'2019-04-15 16:36:25','210.101.103.92','','','','','','','','','','','',''),(134,-134,'',134,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 1일차 - 소스설명 / 지자기, 가속도 센서값 사용하기','<p><span style=\"color: #404040; font-family: 굴림;\">package hardware.sensor;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Context;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.hardware.Sensor;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.hardware.SensorEvent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.hardware.SensorEventListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.hardware.SensorManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.TextView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class GetOrientationActivity2 extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private TextView txtAzimuth, txtPitch, txtRoll;&nbsp; //X, Y, Z축정보를 담을 객체 선언&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private SensorManager sensorManager;&nbsp; &nbsp; &nbsp; //센서메니저 객체 선언&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private float[] accelerometerValues, magneticValues;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtAzimuth = (TextView) findViewById(R.id.txtAzimuth);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtPitch = (TextView) findViewById(R.id.txtPitch);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtRoll = (TextView) findViewById(R.id.txtRoll);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);&nbsp; //장비에 사용가능한 센서 얻어오기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //데몬으로 떠있는 안드로이드OS에서 가져옴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.registerListener(&nbsp; //장비 센서값이 리턴(변화되었을때)을 감지하는 Listener&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorEventListener,&nbsp; &nbsp; &nbsp; &nbsp; //센서값 변화(Evnet)시 Listner를 호출(리턴)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),&nbsp; //지자기 센서의 값을 얻어오기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SensorManager.SENSOR_DELAY_UI);&nbsp; //센서의 변화값 측정 주기, 현재는 UI를 변경하는데 적합한 속도로 측정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.registerListener(&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorEventListener,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),&nbsp; //가속도 센서의 값을 얻어오기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SensorManager.SENSOR_DELAY_UI);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onPause() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onPause();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.unregisterListener(sensorEventListener);&nbsp; //더이상 센서 응답정보를 호출하지 않음&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private SensorEventListener sensorEventListener = new SensorEventListener() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onAccuracyChanged(Sensor sensor, int accuracy) { }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onSensorChanged(SensorEvent event) {&nbsp; //센서값이 변화 되었을시 호출 Event발생&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">switch (event.sensor.getType()) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">case Sensor.TYPE_ACCELEROMETER:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">accelerometerValues = event.values.clone();&nbsp; //float[] 배열로 들어온 값을 복사&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">break;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">case Sensor.TYPE_MAGNETIC_FIELD:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">magneticValues = event.values.clone();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">break;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">if (magneticValues != null &amp;&amp; accelerometerValues != null) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">float[] R = new float[16];&nbsp; //얻고자 하는 회전 행렬&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">float[] I = new float[16];&nbsp; &nbsp; //얻고자 하는 경사(기울기) 행렬&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SensorManager.getRotationMatrix(R, I, accelerometerValues, magneticValues);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">float[] values = new float[3];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SensorManager.getOrientation(R, values);&nbsp; //R값을 각도radian으로 바꿔서 values에 저장&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtAzimuth.setText(\"Azimuth : \" + (int) radian2Degree(values[0]));&nbsp; //Z축 각도&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtPitch.setText(\"Pitch : \" + (int) radian2Degree(values[1]));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //X축 각도&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">txtRoll.setText(\"Roll : \" + (int) radian2Degree(values[2]));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Y축 각도&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private float radian2Degree(float radian) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">return radian * 180 / (float)Math.PI;&nbsp; //radian값 * 180 / PI&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:36:43',1,'2019-04-15 16:36:43','210.101.103.92','','','','','','','','','','','',''),(135,-135,'',135,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 1일차 - 소스설명 / 안드로이드 쓰레드 사용','<p><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta.thread0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.util.Log;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View.OnClickListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.Button;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.ProgressBar;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class AndroidThreadActivity0 extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; /** Called when the activity is first created. */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private Button button;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private ProgressBar progressBar;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; public void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; button=(Button)findViewById(R.id.button1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; progressBar=(ProgressBar)findViewById(R.id.progressBar1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; button.setOnClickListener(new OnClickListener() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; public void onClick(View view) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Thread thread1 = new Thread(run1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; //Thread thread2 = new Thread(run2);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; thread1.start();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; //thread2.start();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Runnable run1 = new Runnable() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; public void run() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0; i&lt;=100; i=i+10) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; progressBar.setProgress(i);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(500);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Log.d(\"AndroidThread0\",\"i=\"+i);&nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; } catch (InterruptedException e) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Log.e(\"Android Thread0\",e.getMessage());&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; };&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; /*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Runnable run2 = new Runnable() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; };&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:37:03',1,'2019-04-15 16:37:03','210.101.103.92','','','','','','','','','','','',''),(136,-136,'',136,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 1일차 - 소스설명 / 여러센서값을 여러 이미지오버레이로 사용하기','<p><span style=\"color: #404040; font-family: 굴림;\">package hardware.sensor.indicator;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.content.Context;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.hardware.Sensor;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.hardware.SensorEvent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.hardware.SensorEventListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.hardware.SensorManager;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class OrientationIndicatorActivity extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private AzimuthView azimuthView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private RollView rollView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private PitchView pitchView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private SensorManager sensorManager;&nbsp; //센선 값을 리턴하는 SensorManager객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private float[] accelerometerValues, magneticValues;&nbsp; //가속센서 측정값, 자기장 센서 측정값&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">pitchView = (PitchView) findViewById(R.id.pitchView);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">rollView = (RollView) findViewById(R.id.rollView);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">azimuthView = (AzimuthView) findViewById(R.id.azimuthView);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);&nbsp; //SensorManager객체 리턴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.registerListener(&nbsp; //3축 지자기 센서의 변화가 있을때 sensorEventListener의 메서드 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorEventListener,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SensorManager.SENSOR_DELAY_UI);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.registerListener(&nbsp; &nbsp; //3축 가속 센서의 변화가 있을때 /sensorEventListener의 메서드 호출	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorEventListener,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SensorManager.SENSOR_DELAY_UI);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">//비활성화 onPause-&gt;onStop&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onStop() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onStop();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">sensorManager.unregisterListener(sensorEventListener);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private SensorEventListener sensorEventListener = new SensorEventListener() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onAccuracyChanged(Sensor sensor, int accuracy) { }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void onSensorChanged(SensorEvent event) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">switch (event.sensor.getType()) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">case Sensor.TYPE_ACCELEROMETER :&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">accelerometerValues = event.values.clone();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">break;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">case Sensor.TYPE_MAGNETIC_FIELD :&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">magneticValues = event.values.clone();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">break;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; if (magneticValues != null &amp;&amp; accelerometerValues != null) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; float[] R = new float[16];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; float[] I = new float[16];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; SensorManager.getRotationMatrix(R, I, accelerometerValues, magneticValues);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; float[] values = new float[3];&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; SensorManager.getOrientation(R, values);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; pitchView.pitch = (int) radian2Degree(values[1]);&nbsp; //x축 방향정보	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; pitchView.invalidate();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pitchView의 onDraw호출	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; rollView.roll = (int) radian2Degree(values[2]);&nbsp; &nbsp; &nbsp; //y축 방향 정보	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; rollView.invalidate();	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //rollView의 onDraw()호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; azimuthView.azimuth = (int) radian2Degree(values[0]);&nbsp; //z축 방향 정보	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; azimuthView.invalidate();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //azimuthView.onDraw()&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">};&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private float radian2Degree(float radian) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">return radian * 180 / (float)Math.PI;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:37:21',1,'2019-04-15 16:37:21','210.101.103.92','','','','','','','','','','','',''),(137,-137,'',137,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 4일차','<p><span style=\"color: #404040; font-family: 굴림;\">* TCP/IP Socket&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 서버 소켓 생성 ServerSocket srvsocket = new ServerSocket(port);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 서버 소켓 호출대기 Socket socket = srvsocket.accept();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 클라이언트 소켓 생성 Socket socket = new Socket(IP, port);&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 데이터 IO : Stream 이용&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; InputStream is = socket.getInputStream();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; OutputStream os = socket.getOutputStream();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* uiThread&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* Handler&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Message 객체 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Handler handler1 = new Handler();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Messae message1 = handler1.obtainMessage();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Handler mHandler;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; public void run() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; mHandler.handleMessage(this);&nbsp; &nbsp; //this ---&gt; message1&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Message 객체를 MessageQue에 삽입&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; handler1.SendMessage(message1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - handlerMessage(Message) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; progressBar.show();&nbsp; &nbsp; //화면갱신, 프로그래스바 표시&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* AsyncTask&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 여러 작업을 백그라운드에서 실행&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 핸들러나 스레드를 쓸 필요없이 실행 결과를 UIthread로 전송&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;- 이렇게 백그라운드에서 실행되는 비 동기적 작업은,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; ; 3가지 generic 타입 : Params, Progress, Result&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; 4가지 스텝 : onPreExecute, doInBackground, onProgressUpdate, onPostExecute&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">________________________________________________________________________________________________&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.AsyncTask;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class AsyncTaskDemo extends Activity implements View.OnClickListener {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; public void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; public void onClick(View v) {&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new DoComplecatedJob().execute(\"파라미터\");&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; //&lt;임의로 형 저의&gt;, 기본은 &lt;object&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; private class DoComplecatedJob extends AsyncTask&lt;String, Integer, Long&gt; {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; protected void onPreExecute() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; super.onPreExecute();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; // UI 스레드에서 AsynchTask객체.execute(...) 명령으로 실행되는 callback&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; protected Long doInBackground(String... strData) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; // UIThread에서 실행되는 내용&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; protected void onProgressUpdate(Integer... progress) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; // onInBackground(...)가 완료되면 자동으로 실행되는 callback&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; protected void onPostExecute(Long result) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; // background 작업이 취소될때 꼭 해야될 작업은&nbsp; 여기에 구현.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; protected void onCancelled() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; super.onCancelled();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; }&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">________________________________________________________________________________________________</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:37:33',0,'2019-04-15 16:37:33','210.101.103.92','','','','','','','','','','','',''),(138,-138,'',138,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 4일차 - 소스설명 / Runnable을 이용한 프로그래스바','<p><span style=\"color: #404040; font-family: 굴림;\">package kr.or.kosta.thread0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.util.Log;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View.OnClickListener;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.Button;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.ProgressBar;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class AndroidThreadActivity0 extends Activity {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; /** Called when the activity is first created. */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private Button button;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private ProgressBar progressBar;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; public void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; button=(Button)findViewById(R.id.button1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; progressBar=(ProgressBar)findViewById(R.id.progressBar1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; button.setOnClickListener(new OnClickListener() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; public void onClick(View view) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Thread thread1 = new Thread(run1);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; //Thread thread2 = new Thread(run2);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; thread1.start();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; //thread2.start();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Runnable run1 = new Runnable() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; public void run() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0; i&lt;=100; i=i+10) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; progressBar.setProgress(i);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(500);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Log.d(\"AndroidThread0\",\"i=\"+i);&nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; } catch (InterruptedException e) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; Log.e(\"Android Thread0\",e.getMessage());&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; };&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; /*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; Runnable run2 = new Runnable() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; };&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:37:55',1,'2019-04-15 16:37:55','210.101.103.92','','','','','','','','','','','',''),(139,-139,'',139,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 4일차 - 소스설명 / AsyncTask이용 프로그래스바','<p><span style=\"color: #404040; font-family: 굴림;\">package com.holim.test;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.app.Activity;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.AsyncTask;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.Bundle;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.os.SystemClock;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.view.View;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.Button;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.ProgressBar;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import android.widget.TextView;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class AsyncTaskDemo extends Activity implements View.OnClickListener {	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">ProgressBar progressBar;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">TextView textResult;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Button btnExecuteTask;	</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; /** Called when the activity is first created. */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; public void onCreate(Bundle savedInstanceState) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; super.onCreate(savedInstanceState);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; setContentView(R.layout.main);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; progressBar = (ProgressBar)findViewById(R.id.progressBar);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; textResult = (TextView)findViewById(R.id.textResult);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; btnExecuteTask = (Button)findViewById(R.id.btnExecuteTask);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; btnExecuteTask.setOnClickListener(this);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; public void onClick(View v) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // AsynchTask를 상속하는 DoComplecatedJob 클래스를 생성하고&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // execute(...) 명령으로 background작업을 시작함.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // (예제에 구현된 AsynchTask는 String 형의 인자를 받음)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; new DoComplecatedJob().execute(\"987\",&nbsp; &nbsp; // DoInBackground()를 실행함&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \"1589\",&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \"687\",&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \"399\",&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \"1722\",&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; \"50\");&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // AsyncTask클래스는 항상 Subclassing 해서 사용 해야 함.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 사용 자료형은 (사용자가 임의로 선언하거나 선언하지 않을경우 object형으로 됨)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // background 작업에 사용할 data의 자료형: String 형&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // background 작업 진행 표시를 위해 사용할 인자: Integer형&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // background 작업의 결과를 표현할 자료형: Long&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; private class DoComplecatedJob extends AsyncTask&lt;String, Integer, Long&gt; {&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 이곳에 포함된 code는 AsyncTask가 execute 되자 마자 UI 스레드에서 실행됨.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 작업 시작을 UI에 표현하거나&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // background 작업을 위한 ProgressBar를 보여 주는 등의 코드를 작성.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onPreExecute() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">textResult.setText(\"Background 작업 시작 \");	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onPreExecute();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// UI 스레드에서 AsynchTask객체.execute(...) 명령으로 실행되는 callback&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">@Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; protected Long doInBackground(String... strData) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; long totalTimeSpent = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 가변인자의 갯수 파악 (이 예제에서는 5개)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; int numberOfParams = strData.length;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 인자들을 이용한 어떤 작업을 처리를 함&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; for(int i=0; i&lt;numberOfParams; i++) {&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 각 인자를 이용한 복잡한 Task 실행함.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 예제에서는 인자로 전달된 시간만큼 sleep&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; SystemClock.sleep(new Integer(strData[i]));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // background 작업에 걸린시간을 누산해 리턴함&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; totalTimeSpent += new Long(strData[i]);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; publishProgress((int)(((i+1)/(float)numberOfParams)*100));&nbsp; //MessageQue에 Message전달&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; return totalTimeSpent;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // UIThread에서 실행되는 내용&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; protected void onProgressUpdate(Integer... progress) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; progressBar.setProgress(progress[0]);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // onInBackground(...)가 완료되면 자동으로 실행되는 callback&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 이곳에서 onInBackground가 리턴한 정보를 UI위젯에 표시 하는 등의 작업을 수행함.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // (예제에서는 작업에 걸린 총 시간을 UI위젯 중 TextView에 표시함)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; protected void onPostExecute(Long result) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; textResult.setText(\"Background 작업에 걸린 총 시간: \"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; + new Long(result).toString()&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; + \"m초\");	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // AsyncTask.cancel(boolean) 메소드가 true 인자로&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // 실행되면 호출되는 콜백.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; // background 작업이 취소될때 꼭 해야될 작업은&nbsp; 여기에 구현.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">protected void onCancelled() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">// TODO Auto-generated method stub&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">super.onCancelled();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:38:21',1,'2019-04-15 16:38:21','210.101.103.92','','','','','','','','','','','',''),(140,-140,'',140,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 4일차 - 소스설명 / Echo서버, 클라이언트 통신','<p><span style=\"color: #404040; font-family: 굴림;\">package android.chatting.server;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.io.IOException;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.net.ServerSocket;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.net.Socket;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class EchoServer {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public static void main(String[] args) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">try{	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">ServerSocket server=new ServerSocket(9000);&nbsp; //port할당	</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while(true) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">System.out.println(\"클라이언트의 접속을 기다립니다.\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Socket socket=server.accept();&nbsp; //server.accept()클라이언트 접속 대기, Socket객체가 만들어져서 리턴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">System.out.println(\"클라이언트가 접속 했습니다.\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">System.out.printf(\"클라이언트 IP:%s\\n\", socket.getRemoteSocketAddress());&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">ServerThread thread=new ServerThread(socket);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">thread.start();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">} catch(IOException e) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">e.printStackTrace();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">___________________________________________________________________________________________________&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">package android.chatting.server;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.io.BufferedReader;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.io.IOException;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.io.InputStream;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.io.InputStreamReader;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.io.OutputStream;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.io.PrintStream;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.net.Socket;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">import java.util.ArrayList;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public class ServerThread extends Thread {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private Socket socket;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public ServerThread(Socket socket) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">this.socket=socket;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">public void run(){&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">try {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">InputStream fromClient = socket.getInputStream();&nbsp; &nbsp; &nbsp; //클라이언트의 메시지를 읽어오는 통로	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">OutputStream toClient = socket.getOutputStream();&nbsp; &nbsp; &nbsp; //클라이언트로 메시지를 보내는 통로&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">String chattingMessage = null;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">int readBytes = 0;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">byte[] readData = new byte[1024];&nbsp; //읽어들인 데이터를 저장하는 배열&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">while((readBytes = fromClient.read(readData)) != -1) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; fromClient.read(읽은 데이터 저장할 배열)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; -상대편이 데이터를 전송할때까 대기&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; -상대편이 데이터를 보내면 대기 해제&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; -읽은 데이터를 readData에 저장하고 몆바이트를 읽어들였는지 리턴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; -연결이 종료되면 0리턴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; -연결오류,그냥종료 -1리턴&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/	</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">chattingMessage = new String(readData, 0, readBytes, \"UTF-8\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; new String(바이트배열,시작인덱스,문자열로 바꿀바이트,바꿀문자열 스타일)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; -new String(readData,0,readBytes,\"UTF-8\")&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; readData를 인덱스 0부터 읽은 바이트만큼&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; UTF-8문자열로 바꿈&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">System.out.println(\"클라이언트 메시지 : \" + chattingMessage);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">chattingMessage = \"서버왈:\\\"\"+ chattingMessage+\"\\\"라고 했냐?\";&nbsp; //클라이언트에게 메시전송&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">toClient.write(&nbsp; //출력버퍼에 저장-2진수(즉, byte) or 2진수배열(byte 배열)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">chattingMessage.getBytes(\"UTF-8\"), 0,&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">chattingMessage.getBytes(\"UTF-8\").length);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">/*&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* write(인자1-byte배열, 인자2-시작인덱스, 인자3-출력버퍼에 저장할 byte);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* String -&gt; byte배열로 변환&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* String.getBytes(문자열타입) : String을 byte배열로 변환&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">*/&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">toClient.flush();&nbsp; &nbsp; //출력버퍼의 내용을 클라이언트에게 전송&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp; //end while&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">} catch(IOException e) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">e.printStackTrace();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp; //end run&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp; &nbsp; //end class</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:38:48',2,'2019-04-15 16:38:48','210.101.103.92','','','','','','','','','','','',''),(141,-141,'',141,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 5일차','<p><span style=\"color: #404040; font-family: 굴림;\">* Http Client를 이용한 통신&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Http Protocol을 이용해서 통신을 하기 위한 라이브러리&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 안드로이드 기본 라이브러이에 포함되어 있음&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* Http Get방식의 통신&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 요청사항이 URL에 포함, 검색엔진 등에 사용됨(Data가 반드시 문자여야함)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - URL에 요청이 나타나서, 보안문제/글자수 제한 문제 등 발생&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* Http Post방식의 통신&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 요청사항이 Body에 포함&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 보안이 요청되는 로그인페이지, 자료전송 등에 사용됨&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* HttpClient 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Get, Post 방식으로 전송을 요청&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - new DefaultHttpClient();&nbsp; //인스턴트 생성방법&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 객체가 App에서 한개만 생성, SingleTone&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 세션, 쿠기 공유됨&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - HttpClient client = new DefaultHttpClient();&nbsp; //인스턴트 생성&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; HttpPost request = new HttpGet();&nbsp; //Get방식으로 요청을 보내도록 설정 객체&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; request.setURI(new URI(\"http://code.google.com/android/\"));&nbsp; //요청보낼 서버의 URL	</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; client.execute(request, responseHandler);&nbsp; //요청을 전송, 응답왔을때 호출될 메서드가 있는 객체 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; //인자 1 : Get, Post방식의 입력데이터(파라메터)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //인자 2 : 응답이 왔을때 호출되는 Listner Handler&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; -&nbsp; HttpClient client = new DefaultHttpClient();&nbsp; //HttpPost() Post방식 요청&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; HttpPost request = new HttpPost(\"http://openapi.naver.com/search\");&nbsp; //Post방식으로 요청을 보낼 URL&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; List&lt;NameValuePair&gt; postParameters = new ArrayList&lt;NameValuePair&gt;();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; //입력정보, 파라메터정보 (이름 값의 쌍) ---&gt; (파라메터 이름, 파라메터 값)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; postParameters.add(new BasicNameValuePair(\"key\", \"1989ace68ea5962bd122550880a65486\"));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //(파라메터 이름, 파라메터 값)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; postParameters.add(new BasicNameValuePair(\"start\", \"1\"));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; postParameters.add(new BasicNameValuePair(\"display\", \"10\"));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; postParameters.add(new BasicNameValuePair(\"target\", \"webkr\"));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; postParameters.add(new BasicNameValuePair(\"query\", query));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters, \"UTF_8\");&nbsp; //2진수, byte데이터로 변환&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; request.setEntity(formEntity);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; client.execute(request,responseHandler);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* HttpResponse&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 서버의 응답정보가 담겨 있음&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - 내부에 Entry --- Header : 응답정보 타입, Size&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --- Content : 응답한 내용, 파일메시지(byte데이터)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ---&gt; getEntity.GetContent();&nbsp; //InputStream 타입으로 리턴됨&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Header : MultipartEntity : 파일첨부 가능 타입&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --- InputStreamBody : 파일내용, 파일명&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --- StringBody : 메시지&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* StartActivity(intent);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Activity에서 다른 Activity 호출&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* StartAcitivityForResult(intent, requestCode);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - Activity에서 다른 Activity 호출 후, 다시 호출한 Activity의 OnAcitivityResult로 리턴&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; - OnActivityResult 메소드&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; ; OnActivityResult(requestCode, resultCode, Intent data);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //요청코드,&nbsp; 응답코드,&nbsp; 리턴값</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:38:59',0,'2019-04-15 16:38:59','210.101.103.92','','','','','','','','','','','',''),(142,-142,'',142,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 5일차 - 소스설명 / MultipartPost방식으로 파일 서버로 업로드','<span style=\"color: #404040; font-family: 굴림;\">파일 참조</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:39:24',1,'2019-04-15 16:39:24','210.101.103.92','','','','','','','','','','','',''),(143,-143,'',143,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 5일차 - 소스설명 / Get, Post방식으로 서버 통신','<p><span style=\"color: #404040; font-family: 굴림;\">파일참조</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:39:48',2,'2019-04-15 16:39:48','210.101.103.92','','','','','','','','','','','',''),(144,-144,'',144,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 5일차 - 소스설명 / 오라클 서버 연결','<p>&nbsp;<span style=\"color: #404040; font-family: 굴림;\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span></p>\r\n<span style=\"color: #404040; font-family: 굴림;\">&lt;!DOCTYPE sqlMapConfig PUBLIC \"-//iBATIS.com//DTD SQL Map Config 2.0//EN\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">\"http://www.ibatis.com/dtd/sql-map-config-2.dtd\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;sqlMapConfig&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;transactionManager type=\"JDBC\" &gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;dataSource type=\"SIMPLE\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;property name=\"JDBC.Driver\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">value=\"oracle.jdbc.driver.OracleDriver\"/&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;property name=\"JDBC.ConnectionURL\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">value=\"jdbc:oracle:thin:@127.0.0.1:1521:XE\"/&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;property name=\"JDBC.Username\" value=\"scott\"/&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;property name=\"JDBC.Password\" value=\"tiger\"/&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/dataSource&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/transactionManager&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;sqlMap resource=\"location.xml\" /&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/sqlMapConfig&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">___________________________________________________________________________________________________&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;!DOCTYPE sqlMap PUBLIC \"-//iBATIS.com//DTD SQL Map 2.0//EN\" \"http://www.ibatis.com/dtd/sql-map-2.dtd\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;sqlMap&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;select id=\"selectLocationList\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">resultClass=\"kr.co.hest.board.vo.Location\"&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">parameterClass=\"kr.co.hest.board.vo.Location\"&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">SELECT num,lat,lon,title,address,kind,detail From location&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">WHERE (lat&gt;=#lat#-0.05 and lat&lt;=#lat#+0.05) and&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">(lon&gt;=#lon#-0.05 and lon&lt;=#lon#+0.05)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/select&gt;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&lt;/sqlMap&gt;</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:41:39',1,'2019-04-15 16:41:39','210.101.103.92','','','','','','','','','','','',''),(145,-145,'',145,0,0,'','','html1','[Android] 안드로이드 증강현실 교육 5일차 - 소스설명 / 서버연동을 통한 증강현실구현','<p><span style=\"color: #404040; font-family: 굴림;\">파일참조</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:41:55',1,'2019-04-15 16:41:55','210.101.103.92','','','','','','','','','','','',''),(146,-146,'',146,0,0,'','','html1','[Android] 안드로이드 토스트 (Toast)','<p>&nbsp;</p>\r\n<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><a style=\"color: #3a4e40;\"><img src=\"http://geoworld.cafe24.com/gnu3/data/file/Computer/37c697f4_toast.png\" width=\"480\" height=\"227\" border=\"0\" /></a>\r\n            <p><a style=\"color: #3a4e40;\"><img src=\"http://geoworld.cafe24.com/gnu3/data/file/Computer/337aba0b_toast2.png\" width=\"480\" height=\"274\" border=\"0\" /></a></p>\r\n            <p><span class=\"content\" style=\"color: #404040;\">토스트는 안드로이드에서 사용자에게 간단한 메시지를 전할 수 있는 방법중 하나이다.&nbsp;<br />제일큰 특징중 하나는 토스트가 나타나면 사용자가 Back 또는 Home 키를 눌러도 없어지지 않는다는 것이다.&nbsp;<br />사용자가 꼭 읽어야 할 문구가 있다면 Toast로 보여주는것이 좋을것 같다.&nbsp;<br />쓰는 방법은 다음과 같다.&nbsp;<br /><br />Toast.makeText(this, \"hello\", Toast.LENGTH_SHORT).show();&nbsp;<br /><br />그럼 조금 더 복잡한 토스트를 만들어보자.&nbsp;<br /><br />토스트를 새로 처음부터 생성하는 방법도 있지만 makeText로 만들어진 토스트를 이용하는 방법도 있다.&nbsp;<br />makeText로 만들어진 Toast는 LinearLayout 안에 TextView하나로 이루어져 있다.&nbsp;<br />이것을 이용해서 다음과 같이 그림이 들어있는 토스트를 만들 수 있다.&nbsp;<br /><br />// 간단한 토스트를 하나 만든다.&nbsp;<br />Toast awesomeToast = Toast.makeText(this, \"hello\", Toast.LENGTH_SHORT);&nbsp;<br /><br />// LinearLayout의 레퍼런스를 받아온다.&nbsp;<br />LinearLayout ll = (LinearLayout)awesomeToast.getView();&nbsp;<br /><br />// TextView 레퍼런스를 받아오고 LinearLayout에서 TextView를 띄어낸다.&nbsp;<br />TextView tv = (TextView) ll.getChildAt(0);&nbsp;<br />ll.removeAllViews();&nbsp;<br /><br />// 이미지뷰를 만들고 원하는 그림은 넣는다.&nbsp;<br />ImageView android = new ImageView(this);&nbsp;<br />android.setImageResource(R.drawable.android);&nbsp;<br /><br />// 차례대로 이미지뷰와 텍스트뷰를 넣는다.&nbsp;<br />ll.addView(android);&nbsp;<br />ll.addView(tv);&nbsp;<br />awesomeToast.show();&nbsp;<br /><br />간단하게 토스트를 쓰는 방법 이였다.&nbsp;<br />문론 이런식의 토스트를 많이 사용한다면 xml과 subclassing을 이용하여 나만의 토스트를 만들어서 써야겟다.&nbsp;<br />이 예문은 간단히 토스트를 쓰는 방법만 제시한 것이다.</span></p>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:42:18',0,'2019-04-15 16:42:18','210.101.103.92','','','','','','','','','','','',''),(147,-147,'',147,0,0,'','','html1','[Android] WindowFeature 안보이게 하는 방법(full screen)','<div class=\"view1\" style=\"padding: 25px 30px 17px; margin: 0px; color: #121212; position: relative; z-index: 2; font-family: spoqaR; font-size: 15px;\">\r\n   <h3 style=\"padding: 35px 0px 0px; margin: 0px; color: #202020; font-weight: normal; font-size: 19px; line-height: 26px;\">[Android]WindowFeature 안보이게 하는 방법(full screen)</h3>\r\n   </div>\r\n<div class=\"dscr\" style=\"padding: 0px 30px 30px; margin: 0px; color: #202020; line-height: 1.87; font-family: spoqaR; font-size: 15px;\">\r\n   <section class=\"post textBox cyco-textlet\" style=\"padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin: 0px; color: #121212; max-width: 628px; z-index: 1; background: white; position: relative; padding-top: 0px !important;\">\r\n      <div class=\"textData\" style=\"padding: 0px; margin: 0px;\">문제 : 화면 상단의 WindowFeature 표시되지 않고 fullscreen으로 만들려고 할때</div>\r\n      </section>\r\n   <section class=\"post imageBox cyco-imagelet\" style=\"padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin: 0px; color: #121212; max-width: 628px; z-index: 1; background: white; position: relative; padding-top: 25px !important;\">\r\n      <figure style=\"padding: 0px; margin: 0px;\"><img src=\"http://nthumb.cyworld.com/thumb?v=0&amp;width=810&amp;url=http%3A%2F%2Fc2down.cyworld.co.kr%2Fdownload%3Ffid%3D642226f94dfa4d5139a927bd6b1f6bc0%26name%3D1554010113144771223011457.jpg\" alt=\"\" srctext=\"http%3A%2F%2Fc2down.cyworld.co.kr%2Fdownload%3Ffid%3D642226f94dfa4d5139a927bd6b1f6bc0%26name%3D1554010113144771223011457.jpg\" style=\"padding: 0px; margin: 0px; border: 0px; vertical-align: top; min-width: auto; max-width: 628px; width: 628px; position: relative; left: -30px;\" /></figure>\r\n      </section>\r\n   <section class=\"post textBox cyco-textlet\" style=\"padding: 30px 0px 0px; margin: 0px; color: #121212; max-width: 628px; z-index: 1; background: white; position: relative;\">\r\n      <div class=\"textData\" style=\"padding: 0px; margin: 0px;\">해결 :<br style=\"padding: 0px; margin: 0px;\" />방법 1.<br style=\"padding: 0px; margin: 0px;\" />onCreate 메소드 에서&nbsp;<br style=\"padding: 0px; margin: 0px;\" />super.onCreate(savedInstanceState);<br style=\"padding: 0px; margin: 0px;\" />this.requestWindowFeature(Window.FEATURE_NO_TITLE);<br style=\"padding: 0px; margin: 0px;\" />getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);<br style=\"padding: 0px; margin: 0px;\" />방법 2.<br style=\"padding: 0px; margin: 0px;\" />AndroidManifest에서<br style=\"padding: 0px; margin: 0px;\" />android:theme=\"@android:style/Theme.NoTitleBar.Fullscreen\"</div>\r\n      </section>\r\n   <section class=\"post imageBox cyco-imagelet\" style=\"padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin: 0px; color: #121212; max-width: 628px; z-index: 1; background: white; position: relative; padding-top: 25px !important;\">\r\n      <figure style=\"padding: 0px; margin: 0px;\"><img src=\"http://nthumb.cyworld.com/thumb?v=0&amp;width=810&amp;url=http%3A%2F%2Fc2down.cyworld.co.kr%2Fdownload%3Ffid%3D642226f94dfa4d51750a27bd6c2cb2c0%26name%3D1645011986188641843913587.jpg\" alt=\"\" srctext=\"http%3A%2F%2Fc2down.cyworld.co.kr%2Fdownload%3Ffid%3D642226f94dfa4d51750a27bd6c2cb2c0%26name%3D1645011986188641843913587.jpg\" style=\"padding: 0px; margin: 0px; border: 0px; vertical-align: top; min-width: auto; max-width: 628px; width: 628px; position: relative; left: -30px;\" /></figure>\r\n      </section>\r\n   <section class=\"post textBox cyco-textlet\" style=\"padding: 30px 0px 0px; margin: 0px; color: #121212; max-width: 628px; z-index: 1; background: white; position: relative;\">\r\n      <div class=\"textData\" style=\"padding: 0px; margin: 0px;\">해결 했습니다^^<br style=\"padding: 0px; margin: 0px;\" />추가 : 자 그럼 메뉴바(시계,배터리표시)가 보이게 하는 방법<br style=\"padding: 0px; margin: 0px;\" />this.requestWindowFeature(Window.FEATURE_NO_TITLE);<br style=\"padding: 0px; margin: 0px;\" />//getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);</div>\r\n      </section>\r\n   <section class=\"post imageBox cyco-imagelet\" style=\"padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin: 0px; color: #121212; max-width: 628px; z-index: 1; background: white; position: relative; padding-top: 25px !important;\">\r\n      <figure style=\"padding: 0px; margin: 0px;\"><img src=\"http://nthumb.cyworld.com/thumb?v=0&amp;width=810&amp;url=http%3A%2F%2Fc2down.cyworld.co.kr%2Fdownload%3Ffid%3D642227bd69ec1b56a51927bd7f2418c0%26name%3D%25EC%25A0%259C%25EB%25AA%25A9%2520%25EC%2597%2586%25EC%259D%258C.PNG\" alt=\"\" srctext=\"http%3A%2F%2Fc2down.cyworld.co.kr%2Fdownload%3Ffid%3D642227bd69ec1b56a51927bd7f2418c0%26name%3D%25EC%25A0%259C%25EB%25AA%25A9%2520%25EC%2597%2586%25EC%259D%258C.PNG\" style=\"padding: 0px; margin: 0px; border: 0px; vertical-align: top; min-width: auto; max-width: 628px; width: 628px; position: relative; left: -30px;\" /></figure>\r\n      </section>\r\n   </div>','https://cy.cyworld.com/home/44745248/post/3317862','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:42:41',0,'2019-04-15 16:42:41','210.101.103.92','','','','','','','','','','','',''),(148,-148,'',148,0,0,'','','html1','[Android] 이클립스 Helios 자동완성 버그 패치','<p><span style=\"color: #404040; font-family: 굴림;\">이클립스 Helios 버젼에서 자동완성시 응답없음으로 되는 버그 패치&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">You can replace your /plugins/org.eclipse.jdt.core_3.6.1.v_A68_R36x.jar plugin&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">with one from&nbsp;</span><a href=\"http://adt-addons.googlecode.com/svn/patches/org.eclipse.jdt.core_3.6.1.v_A68_R36x.zip\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://adt-addons.googlecode.com/svn/patches/org.eclipse.jdt.core_3.6.1.v_A68_R36x.zip</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">and restart Eclipse. Content Assists will be much better. Just try it.&nbsp;</span></p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:43:12',1,'2019-04-15 16:43:12','210.101.103.92','','','','','','','','','','','',''),(149,-149,'',149,0,0,'','','html1,secret','[ETC] 구글맵 google maps API Key','<p>&nbsp;AIzaSyAGg8lAESjSnOTvQBTAYjdF2JgFTfp-zmg&amp;callback=initMap</p>','','',0,0,5,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:43:32',0,'2019-04-15 16:43:32','210.101.103.92','','','','','','','','','','','',''),(671,-668,'',671,0,0,'','','html1','[ETC] 공공데이터 포털 //기상청 API key','<span style=\"color: #666666; font-size: 14px;\">sZ3MiQq3ZkP7bxXkHP1sdZkdfYlaRiWNeo27vGIn9Miq6UCVi83DE377HOqmVs0WRJseuAPtWMlpqM%2FGL%2FfCYQ%3D%3D</span><br />\r\n<table style=\"width: 960px; margin: 0px; border-width: 0px; border-style: initial; border-color: initial; table-layout: fixed; empty-cells: show; color: #333333; font-size: 14px;\">\r\n   <tbody style=\"box-sizing: border-box;\">\r\n      <tr style=\"box-sizing: border-box;\">\r\n         <th scope=\"row\" style=\"box-sizing: border-box; padding: 6px 12px; word-break: break-all; height: 45px; border-style: solid; border-color: #e0e0e0; text-align: left; background-color: #f7f7f7;\"><span class=\"label\" style=\"box-sizing: border-box;\">일반 인증키<br style=\"box-sizing: border-box;\" />(Encoding)</span></th>\r\n         <td style=\"box-sizing: border-box; padding: 6px 12px; word-break: break-all; height: 45px; color: #666666; border-style: solid; border-color: #e0e0e0;\">\r\n            <div class=\"mt5\" style=\"box-sizing: border-box; margin-top: 5px !important;\">sZ3MiQq3ZkP7bxXkHP1sdZkdfYlaRiWNeo27vGIn9Miq6UCVi83DE377HOqmVs0WRJseuAPtWMlpqM%2FGL%2FfCYQ%3D%3D</div>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n<br /><span style=\"color: #666666; font-size: 14px;\">sZ3MiQq3ZkP7bxXkHP1sdZkdfYlaRiWNeo27vGIn9Miq6UCVi83DE377HOqmVs0WRJseuAPtWMlpqM/GL/fCYQ==</span><br />\r\n<table style=\"width: 960px; margin: 0px; border-width: 0px; border-style: initial; border-color: initial; table-layout: fixed; empty-cells: show; color: #333333; font-size: 14px;\">\r\n   <tbody style=\"box-sizing: border-box;\">\r\n      <tr style=\"box-sizing: border-box;\">\r\n         <th style=\"box-sizing: border-box; padding: 6px 12px; word-break: break-all; height: 45px; border-style: solid; border-color: #e0e0e0; text-align: left; background-color: #f7f7f7;\"><span class=\"label\" style=\"box-sizing: border-box;\">일반 인증키<br style=\"box-sizing: border-box;\" />(Decoding)</span></th>\r\n         <td style=\"box-sizing: border-box; padding: 6px 12px; word-break: break-all; height: 45px; color: #666666; border-style: solid; border-color: #e0e0e0;\">\r\n            <div class=\"mt5\" style=\"box-sizing: border-box; margin-top: 5px !important;\">sZ3MiQq3ZkP7bxXkHP1sdZkdfYlaRiWNeo27vGIn9Miq6UCVi83DE377HOqmVs0WRJseuAPtWMlpqM/GL/fCYQ==</div>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','https://www.data.go.kr/iim/api/selectAPIAcountView.do','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2026-02-11 15:04:02',0,'2026-02-11 15:04:02','121.158.147.142','','','','','','','','','','','',''),(674,-671,'',674,0,0,'','','html1,secret','[GPT] API Keys','<p>-- 26.03.22</p>\r\n<p>[<span style=\"color: #dcdcdc; font-size: 14px; letter-spacing: -0.16px; text-wrap-mode: nowrap; background-color: #212121;\">My_OpenAI_Key-1</span>&nbsp;</p>\r\n<p>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</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>[<span style=\"color: #dcdcdc; font-size: 14px; letter-spacing: -0.16px; text-wrap-mode: nowrap; background-color: #212121;\">My_OpenAI_Key-gwminjoo</span>]</p>\r\n<p>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</p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2026-03-22 08:48:09',0,'2026-03-22 08:48:09','121.158.147.142','','','','','','','','','','','',''),(150,-150,'',150,0,0,'','','html1','[Android] 안드로이드 UI xml 예제','<p>&nbsp;</p>\r\n<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><a style=\"color: #3a4e40;\"><img src=\"http://geoworld.cafe24.com/gnu3/data/file/Computer/d7eadc00_47217503_1299041042.png\" width=\"489\" height=\"739\" border=\"0\" /></a>\r\n            <p><span class=\"content\" style=\"color: #404040;\">titled border는 TextView 를 트윅하면 구현 가능하긴 하지만 레이아웃 하나로는 해결하실 수 없고&nbsp;<br />drawable을 이용한 background 설정 등이 필요합니다. 구현 난이도나 비용에 비해 안그래도 좁은&nbsp;<br />모바일 기기의 화면에서 border + text 만큼의 자리를 그냥 먹는 것은 UX상으로도 좋은 구성이 아니므로&nbsp;<br />이 부분에 대한 변경은 어떠신지를 감히 권해드리고요,&nbsp;<br /><br />또한 뒤로 버튼도 안드로이드 기기자체에서 기본적으로 back 버튼을 제공하고 있기 때문에&nbsp;<br />그다지 의미있어 보이지는 않습니다. 버튼을 붙여넣는다 하더라도 결국 비즈니스 로직에서&nbsp;<br />\'뒤로\' 를 구현하셔야 할텐데 onBackPressed 라는 메소드를 override 하는것으로&nbsp;<br />간편하게 해결하실 수 있는 문제를 많은 비용과 수고를 들여가며 구현하셔야 할 것 같으므로&nbsp;<br />이 부분에 대한 재설계가 필요하실 것으로 보여지네요.&nbsp;<br /><br />TableLayout - TableRow 를 사용하는 것이 가장 좋아보입니다.&nbsp;<br />물론 두번째 화면인 그룹 추가 화면에서는 TableRow 를 사용하여 추가 및 삭제로직을 별도 구현을 하셔야 할 것 같네요.&nbsp;<br /><br />xml 파일과 그림을 붙여두었으니 한번 확인해 보시면 될 것 같습니다.&nbsp;<br />tablerow 를 반복해서 붙이거나 빼면 원하시는 모양의 여러 줄 row 가 나타나게 됩니다.&nbsp;<br /><br />그리고 보여주신 그림상으로는 ListView 및 ListView adapter 를 커스터마이징 하시는 것이 비용이 가장 적을 것 같습니다.&nbsp;<br />리스트 아이템 하나의 레이아웃을 지정한 다음 그것을 가져다 쓰는 방식으로 구현하시면&nbsp;<br />2번화면을 구성하는 비즈니스 로직이 많이 줄어들 것 같네요.&nbsp;<br /><br />테이블 방식은 view 를 컨트롤에서 직접 추가해야 하기 때문에&nbsp;<br />비즈니스 로직에서 뷰 화면을 생각하며 코드를 봐야 하기 때문에 그만큼 복잡하고, 머리가 아프게 되지만&nbsp;<br />adapter 를 이용하시면 model 에 아이템을 추가/삭제하는 것만으로도&nbsp;<br />view 가 자동으로 더해지거나 빠지기 때문에 그 부분에 대한 고려가 필요 없어지게 됩니다.&nbsp;<br /><br />_______________________________________________________________________________________________&nbsp;<br /><br />&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;&nbsp;<br />&lt;LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"&nbsp;<br />android:orientation=\"vertical\"&nbsp;<br />android:layout_width=\"fill_parent\"&nbsp;<br />android:layout_height=\"fill_parent\"&nbsp;<br />android:weightSum=\"100\"&gt;&nbsp;<br />&lt;ScrollView android:layout_width=\"fill_parent\" android:layout_height=\"wrap_content\"&gt;&nbsp;<br />&lt;TableLayout&nbsp;<br />android:layout_width=\"fill_parent\"&nbsp;<br />android:layout_height=\"wrap_content\"&nbsp;<br />android:layout_weight=\"99\"&nbsp;<br />android:stretchColumns=\"1\"&gt;&nbsp;<br />&lt;TableRow&gt;&nbsp;<br />&lt;ImageView&nbsp;<br />android:layout_width=\"wrap_content\"&nbsp;<br />android:layout_height=\"fill_parent\"&nbsp;<br />android:src=\"@drawable/icon\"&nbsp;<br />android:id=\"@+id/imageView1\" /&gt;&nbsp;<br />&lt;TextView&nbsp;<br />android:text=\"TextView\"&nbsp;<br />android:id=\"@+id/textView1\"&nbsp;<br />android:layout_width=\"wrap_content\"&nbsp;<br />android:layout_height=\"fill_parent\"&nbsp;<br />android:layout_marginLeft=\"10dip\"&nbsp;<br />android:gravity=\"center_vertical\" /&gt;&nbsp;<br />&lt;Button&nbsp;<br />android:id=\"@+id/button1\"&nbsp;<br />android:text=\"Button\"&nbsp;<br />android:layout_width=\"wrap_content\"&nbsp;<br />android:layout_height=\"wrap_content\" /&gt;&nbsp;<br />&lt;/TableRow&gt;&nbsp;<br />&lt;/TableLayout&gt;&nbsp;<br />&lt;/ScrollView&gt;&nbsp;<br />&lt;LinearLayout&nbsp;<br />android:layout_width=\"fill_parent\"&nbsp;<br />android:layout_height=\"wrap_content\"&nbsp;<br />android:layout_weight=\"1\"&nbsp;<br />android:gravity=\"center\"&gt;&nbsp;<br />&lt;Button&nbsp;<br />android:id=\"@+id/buttonX\"&nbsp;<br />android:text=\"Button\"&nbsp;<br />android:layout_width=\"wrap_content\"&nbsp;<br />android:layout_height=\"wrap_content\" /&gt;&nbsp;<br />&lt;Button&nbsp;<br />android:id=\"@+id/buttonY\"&nbsp;<br />android:text=\"Button\"&nbsp;<br />android:layout_width=\"wrap_content\"&nbsp;<br />android:layout_height=\"wrap_content\" /&gt;&nbsp;<br />&lt;/LinearLayout&gt;&nbsp;<br />&lt;/LinearLayout&gt;</span></p>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=126523779&qb=7JWI65Oc66Gc7J2065OcIGFuZHJvaWQ6bGF5b3V0X3dlaWdodA==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:44:22',0,'2019-04-15 16:44:22','210.101.103.92','','','','','','','','','','','',''),(151,-151,'',151,0,0,'','','html1','[Android] 네이버 open API 키','<p><span style=\"color: #404040; font-family: 굴림;\">현재 사용중인 키 : 61ef8dfbf3cd347b6d3dd0b614dcce68&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">오늘 키 사용/제한쿼리 : 0/25000&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* 테스트 URL :&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;(테스트 URL은 현재 발급받은 키가 정상적으로 작동하는지 확인하는 기능입니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">링크를 눌렀을 때, XML페이지가 출력된다면 해당 키에 이상이 없으시다고 생각하시면 됩니다.)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">지식iN:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://openapi.naver.com/search?key=61ef8dfbf3cd347b6d3dd0b614dcce68&amp;target=kin&amp;query=go&amp;display=5&amp;start=1&amp;sort=sim\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://openapi.naver.com/search?key=61ef8dfbf3cd347b6d3dd0b614dcce68&amp;target=kin&amp;query=go&amp;display=5&amp;start=1&amp;sort=sim</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">블로그:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://openapi.naver.com/search?key=61ef8dfbf3cd347b6d3dd0b614dcce68&amp;target=blog&amp;query=go&amp;display=5&amp;start=1&amp;sort=sim\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://openapi.naver.com/search?key=61ef8dfbf3cd347b6d3dd0b614dcce68&amp;target=blog&amp;query=go&amp;display=5&amp;start=1&amp;sort=sim</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">책:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://openapi.naver.com/search?key=61ef8dfbf3cd347b6d3dd0b614dcce68&amp;target=book&amp;query=go&amp;display=5&amp;start=1&amp;sort=sim\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://openapi.naver.com/search?key=61ef8dfbf3cd347b6d3dd0b614dcce68&amp;target=book&amp;query=go&amp;display=5&amp;start=1&amp;sort=sim</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">실시간급상승검색어:&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://openapi.naver.com/search?key=61ef8dfbf3cd347b6d3dd0b614dcce68&amp;target=rank&amp;query=nexearch\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://openapi.naver.com/search?key=61ef8dfbf3cd347b6d3dd0b614dcce68&amp;target=rank&amp;query=nexearch</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span></p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:44:35',0,'2019-04-15 16:44:35','210.101.103.92','','','','','','','','','','','',''),(152,-152,'',152,0,0,'','','html1','[Android] httpclient / xmlpull','<span style=\"color: #404040; font-family: 굴림;\">httpclient</span><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><span style=\"color: #404040; font-family: 굴림;\">/ xmlpull</span>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:45:07',2,'2019-04-15 16:45:07','210.101.103.92','','','','','','','','','','','',''),(153,-153,'',153,0,0,'','','html1','[Android] Xml 속성들 몇가지','<p><span style=\"color: #404040; font-family: 굴림;\">android:orientation=\"vertical\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //세로방향 객체 배치, horizonal 가로방향&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:drawingCacheQuality=\"high\"&nbsp; &nbsp; //이미지 해상도 퀄리티 설정 (high, low, auto)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:shadowColor=\"#999999\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //객체 그림자색&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:shadowRadius=\"5\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //객체 그림자 반경&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:textStyle=\"bold|italic\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //문자열 스타일, | 을통해 복수설정 가능&nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:typeface=\"sans\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //문자열 폰트 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:lineSpacingExtra=\"3px\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //문자열의 추가 행 간격&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:layout_gravity=\"bottom\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //해당 뷰 자체를 부모뷰내부의 어디에 위치할 것인지 결정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:gravity=\"bottom\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //뷰안의 내용을 뷰 내부의 어디에 위치할 것인지 결정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:autoLink=\"all\"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //문자열 중 웹, 메일, 전화번호등 자동링크 기능&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:layout_centerVertical=\"true\"&nbsp; &nbsp; &nbsp; //세로방향 중앙에 위치하도록 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:layout_alignParentRight=\"true\"&nbsp; //세로방향 중앙에 위치하도록 설정&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">android:layout_below=\"@+id/mainLayoutBanner\"&nbsp; &nbsp; &nbsp; //mainLayoutBanner 아래에 위치하도록 배치</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:45:19',0,'2019-04-15 16:45:19','210.101.103.92','','','','','','','','','','','',''),(154,-154,'',154,0,0,'','','html1','[Android] 기본 Activity 추가시 설정 내용','<table width=\"100%\" cellpadding=\"5\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; font-family: 굴림; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">*** mainSite.java class 추가의경우&nbsp;<br />1. AndroidManifest &gt; Application Nodes Add... 메뉴 를 통해서 mainSite 클래스(java파일) 생성&nbsp;<br />2. 아래와 같은 기본 내용이 추가된 클래스파일 생성됨&nbsp;<br />-------------------------------------------------------------&nbsp;<br />package com.appnurisoft.appSite;&nbsp;<br /><br />import android.app.Activity;&nbsp;<br />import android.os.Bundle;&nbsp;<br /><br />public class mainSite extends Activity {&nbsp;<br /><br />/** Called when the activity is first created. */&nbsp;<br />@Override&nbsp;<br />public void onCreate(Bundle savedInstanceState) {&nbsp;<br />&nbsp; &nbsp; super.onCreate(savedInstanceState);&nbsp;<br />&nbsp; &nbsp; setContentView(R.layout.main);&nbsp;<br />&nbsp; &nbsp; // TODO Auto-generated method stub&nbsp;<br />}&nbsp;<br />}&nbsp;<br />-------------------------------------------------------------&nbsp;<br /><br />3. 별도의 액티비티 이름을 붙이고 싶은경우&nbsp;<br />(1)&nbsp; strings.xml에 추가&nbsp;<br />&nbsp; &nbsp; &lt;string name=\"hello\"&gt;Hello World, appSite!&lt;/string&gt;&nbsp;<br />&nbsp; &nbsp; &lt;string name=\"app_name\"&gt;1 앱사이트&lt;/string&gt;&nbsp;<br />&nbsp; &nbsp; &lt;string name=\"main_name\"&gt;1 앱홈&lt;/string&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;&lt;&lt;&lt;&lt;----- 추가된 이름&nbsp;<br /><br />(2) AndroidManifest.xml에 추가&nbsp;<br />&nbsp; &nbsp; &lt;activity android:name=\"mainSite\" android:label=\"@string/main_name\"&gt;&nbsp;<br />&nbsp; &nbsp; &lt;/activity&gt;</span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-15 16:45:41',0,'2019-04-15 16:45:41','210.101.103.92','','','','','','','','','','','',''),(155,-155,'',155,0,0,'','','html1','[Android] 인트로 화면에서 자동으로 넘기기','<p><span style=\"color: #404040; font-family: 굴림;\">...&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">intentNext();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">private void intentNext() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; Handler hanDler = new Handler() {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; /* (non-Javadoc)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; * @see android.os.Handler#handleMessage(android.os.Message)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; */&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; @Override&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; public void handleMessage(Message msg) {&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // TODO Auto-generated method stub&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; finish();&nbsp; //현재 인트로화면 종료&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; startActivity(new Intent(goWith.this, mainSite.class));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; };&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; hanDler.sendEmptyMessageDelayed(0, 3500);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:36:09',0,'2019-04-26 13:36:09','210.101.103.92','','','','','','','','','','','',''),(156,-156,'',156,0,0,'','','html1','[Android] gravity 속성으로 정렬 팁','<p><span style=\"color: #404040; font-family: 굴림;\">특정 위젯(image, Text 등)을 가운데 정렬시키기 위해서는&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">1. 상위 레이아웃(Linear, Relative)에&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; -gravity=\"center\" 속성 / android:orientation=\"vertical\" 속성을 줌&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; ---&gt; &lt;tr align=\"center\"&gt; 속성과 유사&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 하위 위젯에서 layout_gravity 속성의 경우 위 레이아웃내부에서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; top/bottom 등의 위치정렬이 됨&nbsp;</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:36:22',0,'2019-04-26 13:36:22','210.101.103.92','','','','','','','','','','','',''),(157,-157,'',157,0,0,'','','html1','[ETC] 이클립스 svn 사용 팁','<p><span style=\"color: #404040; font-family: 굴림;\">Synchronize with Repository - 서버내용과 싱크를 맞춥니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Commit - 소스의 수정사항을 반영합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Update to HEAD - 서버의 소스를 내려받습니다. (수시로 꾹꾹 눌러주는게 좋겠지요, 소스가 겹치지 않으려면요, ^^)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Update to Version - 특정시점의 소스로 전체 소스를 바꾸어줍니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Show History - 사람들이 업데이트 한 내역을 확인할 수 있습니다. 어느 부분을 업데이트 했고, 어떻게 했는지 상세하게 확인 가능합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">Revert - 현재 작업했던 내용을 취소하고, 서버소스로 모두 바꾸어줍니다.</span></p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:36:33',0,'2019-04-26 13:36:33','210.101.103.92','','','','','','','','','','','',''),(158,-158,'',158,0,0,'','','html1','[ETC] php4 이후 변수값 설정','<p><span style=\"color: #404040; font-family: 굴림;\">php.ini 에서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">register_globals = on 이어야 원래처럼 post/get 으로 변수값을 넘길 수 있다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">아니면 echo (\" $_REQUEST[변수명] \"); 이렇게 해야함.</span></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:36:43',0,'2019-04-26 13:36:43','210.101.103.92','','','','','','','','','','','',''),(159,-159,'',159,0,0,'','','html1','[Android] EditText 입력값 가져오기','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">[/layout/test.xml]&nbsp;<br />...&nbsp;<br />&lt;EditText&nbsp; android:id=\"@+id/input\" ... /&gt;&nbsp;<br /><br /><br />[test.java]&nbsp;<br />...&nbsp;<br />final EditText inputWord = (EditText)findViewById(R.id.input);&nbsp;<br />inputWord.setOnClickListener(new View.OnClickListener() {&nbsp;<br />...&nbsp;<br />&nbsp; String tmpInputWord = inputWord.getText().toString();&nbsp;<br />...&nbsp;<br />&nbsp; }&nbsp;<br />});</span><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=11&amp;wr_id=31008\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a><a href=\"http://geoworld.cafe24.com/gnu3/?doc=bbs/gnuboard.php&amp;bo_table=Computer&amp;page=11&amp;wr_id=31008\" style=\"text-decoration-line: none; color: #3a4e40;\" target=\"_blank\"></a></td>\r\n         </tr>\r\n      <tr></tr>\r\n      </tbody>\r\n   </table>\r\n<br />','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:36:56',0,'2019-04-26 13:36:56','210.101.103.92','','','','','','','','','','','',''),(160,-160,'',160,0,0,'','','html1','[Android] 갤럭시S/S2 충전중 화면항상 켜짐 옵션','<p><span style=\"color: #404040; font-family: 굴림;\">1. 키패드(전화걸기) 에서 319712358 입력&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. 패스워드 774632 입력&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. 제일 아래 Never Display Timeout 선택&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">4. \"사용안함\" ---&gt; \"사용\" 으로 선택&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">5. 뒤로가기, 설정 끝.</span></p>','https://nemonan.tistory.com/404','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:37:11',0,'2019-04-26 13:37:11','210.101.103.92','','','','','','','','','','','',''),(161,-161,'',161,0,0,'','','html1','[Android] int -> String 형변환','<table width=\"100%\" cellpadding=\"5\" style=\"font-family: 굴림;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"lh\" height=\"100\" style=\"color: #222222; line-height: 18px; word-break: break-all;\"><span class=\"content\" style=\"color: #404040;\">int i = 111;&nbsp;<br />String op = Integer.toString(i);</span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','','',0,0,4,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:37:23',0,'2019-04-26 13:37:23','210.101.103.92','','','','','','','','','','','',''),(162,-162,'',162,0,0,'','','html1','[Android] 카메라로 찍은 사진을 웹서버에 전송','<div class=\"tbody m-tcol-c\" id=\"tbody\" style=\"font-family: 돋움, dotum, Helvetica, sans-serif; list-style: none; margin: 20px 0px 0px; padding: 0px; clear: both; line-height: 1.4; min-height: 80px; width: 743px; position: relative; overflow-y: hidden; z-index: 0; color: #666666; overflow-wrap: break-word; overflow-x: auto !important;\">\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 10pt;\">우선 안드로이드 어플에서 서버로 이미지 파일을 전송하게 하려면 서버측에서 이미지 파일을 받아서 저장해주는&nbsp;</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 10pt;\">프로그램이 필요하다.&nbsp;</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 10pt;\">&nbsp;</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 10pt;\">multipart/form-data 를 이용하면 파일을 업로드하는 프로그램을 작성할 수 있다.</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 10pt;\">&nbsp;com.oreilly.servlet 패키지의 MultipartRequest 클래스를 이용하여 쉽게 파일 업로드를&nbsp; 구현할 수 있다.</span><br /><font size=\"4\"><a target=\"_blank\" href=\"http://www.servlets.com/cos/cos-05Nov2002.zip\" style=\"text-decoration-line: none;\"><span style=\"font-size: 10pt;\"></span></a><a href=\"http://www.servlets.com/cos/cos-05Nov2002.zip\" target=\"_blank\" style=\"text-decoration-line: none;\">http://www.servlets.com/cos/cos-05Nov2002.zip</a></font><font size=\"4\"><span style=\"font-size: 10pt;\">&nbsp;사이트에서 cos-05Nov2002.zip 파일을 다운로드 받아서</span><br /><span style=\"font-size: 10pt;\">압축을 풀어 cos.jar 파일을 &lt;Tomcat&gt;/common/lib&nbsp;에 복사합니다.&nbsp;&nbsp;&nbsp;</span><br /></font><font size=\"4\"><span style=\"font-size: 10pt;\">***************************************************************************</span></font></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"></font><span style=\"font-size: 10pt;\"></span></p>\r\n   <table height=\"40\" cellspacing=\"1\" cellpadding=\"0\" width=\"671\" bgcolor=\"#b7bbb5\" border=\"0\">\r\n      <tbody>\r\n         <tr bgcolor=\"#f5f4e0\">\r\n            <td width=\"671\" style=\"color: #666666;\">\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"><span style=\"font-size: 10pt;\">&lt;%@ page import=\"java.io.*,com.oreilly.servlet.*,com.oreilly.servlet.multipart.*\"%&gt;</span></font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"><span style=\"font-size: 10pt;\">&lt;% request.setCharacterEncoding(\"euc-kr\"); %&gt;</span></font><span style=\"font-size: 10pt;\">&nbsp;</span></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"><span style=\"font-size: 10pt;\">&lt;html&gt;</span><br /><span style=\"font-size: 10pt;\">&lt;head&gt;&lt;title&gt;upload test&lt;/title&gt;&lt;/head&gt;</span><br /><span style=\"font-size: 10pt;\">&lt;body&gt;</span><br /><span style=\"font-size: 10pt;\">&lt;h3&gt;파일 upload&lt;/h3&gt;</span></font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"></font><span style=\"font-size: 10pt;\"></span></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"><span style=\"font-size: 10pt;\">&lt;%&nbsp;&nbsp;</span><br /><span style=\"font-size: 10pt;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String dir=application.getRealPath(\"/upload\");</span><br /><span style=\"font-size: 10pt;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; int max= 5*1024*1024;</span></font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"><span style=\"font-size: 10pt;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<font color=\"#009e25\">//최대크기 max바이트, dir 디렉토리에 파일을 업로드하는 MultipartRequest<br /><span style=\"font-size: 10pt;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//객체를 생성한다.</span></font></span><br /><span style=\"font-size: 10pt;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>&nbsp; MultipartRequest m = new MultipartRequest(request,dir,max,\"UTF-8\",</strong></span></font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"><strong><span style=\"font-size: 10pt;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp; DefaultFileRenamePolicy());</span><br /></strong><span style=\"font-size: 10pt;\">%&gt;</span></font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" size=\"2\">&lt;jsp:forward page=\"vew.jsp\"/&gt;</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"><span style=\"font-size: 10pt;\">&lt;/body&gt;</span><br /><span style=\"font-size: 10pt;\">&lt;/html&gt;</span></font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"><span style=\"font-size: 10pt;\"></span></font>&nbsp;</p>\r\n               </td>\r\n            </tr>\r\n         </tbody>\r\n      </table>\r\n   &nbsp;\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font size=\"4\"></font><span style=\"font-size: 12pt;\">&nbsp;view.jsp 파일을 다음과 같이 작성해서 업로드 된 이미지 파일을 확인해 본다.</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\">&lt;body&gt;</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\">&lt;img src=\"upload/image01.jpg\"/&gt;&nbsp;</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\">&lt;/body&gt;</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\"><br /></span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\"><br /></span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\">안드로이드에서 MultipartRequest를 이용하여 이미지 파일을 전송하려면 프로젝트에&nbsp;</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" size=\"3\"><span class=\"Apple-style-span\" style=\"line-height: 24px;\">httpmime-4.0.3.jar</span></font></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" size=\"3\"><span class=\"Apple-style-span\" style=\"line-height: 24px;\">apache-mime4j-0.6.1.jar</span></font></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" size=\"3\"><span class=\"Apple-style-span\" style=\"line-height: 24px;\">commons-logging-1.1.1.jar</span></font></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" size=\"3\"><span class=\"Apple-style-span\" style=\"line-height: 24px;\">httpcore-4.0.1.jar&nbsp;</span></font></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" size=\"3\"><span class=\"Apple-style-span\" style=\"line-height: 24px;\">라이브러리를 추가해 주어야 한다.(첨부파일 다운로드 받으심 됨)</span></font></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" size=\"3\"><span class=\"Apple-style-span\" style=\"line-height: 24px;\"><br /></span></font></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\">카메라를 이용해 사진을 찍고, 찍어진 사진은 일단 뷰로 화면에 표시되고, 화면에 표시되는 동안</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\">이미지파일을 서버에 전송한뒤, 전송이 완료되면 다시 카메라를 이용해 사진을 찍을 수 있도록 한다.</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\"></span>&nbsp;</p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\">먼저 CameraTestActivity 를 실행하기 위한 Layout</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 12pt;\"></span></p>\r\n   <table height=\"40\" cellspacing=\"1\" cellpadding=\"0\" width=\"671\" bgcolor=\"#b7bbb5\" border=\"0\">\r\n      <tbody>\r\n         <tr bgcolor=\"#f5f4e0\">\r\n            <td width=\"671\" style=\"color: #666666;\">\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&lt;LinearLayout</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;xmlns:android=\"http://schemas.android.com/apk/res/android\"</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;android:orientation=\"horizontal\"</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;android:layout_width=\"wrap_content\"</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;android:layout_height=\"wrap_content\"&gt;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;&lt;SurfaceView android:id=\"@+id/SurfaceView01\"</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;android:layout_marginTop=\"20dip\"&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;android:layout_width=\"300dp\"&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;android:layout_height=\"fill_parent\"&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;android:layout_gravity=\"center_horizontal\"/&gt;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;&lt;ImageView android:id=\"@+id/ImageView01\"&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; android:layout_width=\"300dp\"&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;android:layout_height=\"fill_parent\" /&gt;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&lt;/LinearLayout&gt;</p>\r\n               <div style=\"font-family: inherit; font-size: inherit; list-style: none; margin: 0px; padding: 0px;\"><br /></div>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               </td>\r\n            </tr>\r\n         </tbody>\r\n      </table>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 11pt;\"></span>&nbsp;</p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 11pt;\">카메라와 인터넷, 셔트를 사용하기 위한 AndroidManifest.xml 권한설정 및 Activity 등록</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 11pt;\"></span></p>\r\n   <table height=\"40\" cellspacing=\"1\" cellpadding=\"0\" width=\"671\" bgcolor=\"#b7bbb5\" border=\"0\">\r\n      <tbody>\r\n         <tr bgcolor=\"#f5f4e0\">\r\n            <td width=\"671\" style=\"color: #666666;\">\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;&lt;activity android:name=\".CameraTestActivity\"</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:screenOrientation=\"landscape\"/&gt;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;&lt;uses-permission android:name=\"android.permission.CAMERA\" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;uses-feature android:name=\"android.hardware.camera\" /&gt;&nbsp;<br />&nbsp;&nbsp;&nbsp; &lt;uses-feature android:name=\"android.hardware.camera.autofocus\" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;uses-permission android:name=\"android.permission.INTERNET\" /&gt;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               </td>\r\n            </tr>\r\n         </tbody>\r\n      </table>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 11pt;\"></span>&nbsp;</p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 11pt;\">카메라 촬영및 서버로 이미지 파일 업로드를 처리하는 Activity .&nbsp;</span></p>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><span style=\"font-size: 11pt;\"></span></p>\r\n   <table height=\"40\" cellspacing=\"1\" cellpadding=\"0\" width=\"671\" bgcolor=\"#b7bbb5\" border=\"0\">\r\n      <tbody>\r\n         <tr bgcolor=\"#f5f4e0\">\r\n            <td width=\"671\" style=\"color: #666666;\">\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">package kims.android.device.test;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import java.io.DataOutputStream;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import java.net.HttpURLConnection;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import java.net.URL;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.app.Activity;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.graphics.Bitmap;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.graphics.BitmapFactory;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.hardware.Camera;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.os.Bundle;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.util.Log;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.view.KeyEvent;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.view.SurfaceHolder;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.view.SurfaceView;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.view.Window;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.widget.ImageView;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">import android.widget.Toast;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">public class CameraTestActivity extends Activity {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;private static final String TAG = \"CameraTestActivity\";</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp; &nbsp;// 카메라 제어</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;private Camera camera;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;// 촬영된 &nbsp;사진보기</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;private ImageView imageView;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">// 처리중&nbsp;</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;private boolean inProgress;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">//카메라에 찍힌 이미지 데이터</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;byte[] data;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;DataOutputStream dos;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;ImageView view;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;SurfaceView surfaceView;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">// 카메라 SurfaceView의 리스너</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;private SurfaceHolder.Callback surfaceListener =&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new SurfaceHolder.Callback() {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;// SurfaceView가 생성되었을때 화면에 보여주기위한 초기화 작업을 수행</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 카메라를 오픈하고, 프리뷰의 위치를 설정한다.</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public void surfaceCreated(SurfaceHolder holder) {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;camera = Camera.open();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>camera.setPreviewDisplay(holder); &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">//카메라의 preview 설정</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} catch (Exception e) {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">// SurfaceView가 화면에 표시되지않을때(액티비티가 비활성화 될때)호출한다.</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public void surfaceDestroyed(SurfaceHolder holder) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>camera.release();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>camera = null;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp; &nbsp;// surfaceCreate()가 호출된 다음 호출된다.</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 프리뷰의 크기를 설정하고 프리뷰 영상을 표시한다.</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public void surfaceChanged(SurfaceHolder holder,</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int format,</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int width,</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int height) {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp;// 카메라의 파라메터 값을 가져와서 미리보기 크기를 설정 하고&nbsp;</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>// 프리뷰를 보여준다.</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Camera.Parameters parameters =</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; camera.getParameters();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;parameters.setPreviewSize(width, height);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;camera.setParameters(parameters);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;camera.startPreview();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;// 카메라 셔트가 눌러질때&nbsp;</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;private Camera.ShutterCallback shutterListener =</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new Camera.ShutterCallback() {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public void onShutter() {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (camera != null &amp;&amp; inProgress == false) {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;camera.takePicture(</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;shutterListener, &nbsp; &nbsp; &nbsp; &nbsp;// 셔터 후</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;null, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Raw 이미지 생성 후</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;picutureListener); &nbsp; &nbsp;// JPE 이미지 생성 후</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inProgress = true;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;&nbsp; &nbsp; Bitmap bitmap;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;// JPEG 이미지를 생성 후 호출</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;private Camera.PictureCallback picutureListener =</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new Camera.PictureCallback() {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public void onPictureTaken(byte[] data, Camera camera) {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (data != null) {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp;// &nbsp;적용할 옵션이 있는 경우 BitmapFactory클래스의 Options()</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp;메서드로 옵션객체를 만들어 값을 설정하며</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp;이렇게 만들어진 옵션을 Bitmap 객체를 만들때 네번째</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp;아규먼트로 사용한다.</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp;처리하는 이미지의 크기를 축소</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp;BitmapFactory.Options options =</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp; &nbsp; &nbsp;new BitmapFactory.Options();</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp;options.inSampleSize = IN_SAMPLE_SIZE;</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MainActivity.this.data=data;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bitmap =&nbsp;BitmapFactory.decodeByteArray(data,</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0,</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;data.length,</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;null);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;&nbsp;//이미지 뷰 이미지 설정</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;imageView.setImageBitmap(bitmap);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doSaveFile(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;// sdcard에 파일 저장</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doFileUpload(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">//서버에 이미지를 전송하는 메서드 호출</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Toast.makeText(MainActivity.this, \"서버에 파일을 성공적으로 전송하였습니다\",</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Toast.LENGTH_LONG).show();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;camera.startPreview(); &nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">// 정지된 프리뷰를 재개</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inProgress = false; &nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">// 처리중 플래그를 끔</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;};</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; File saveFile=new File(\"/mnt/sdcard/image01.jpg\"); &nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">// 파일이 저장되는 경로 지정</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><font class=\"Apple-style-span\" color=\"#009E25\"><br /></font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; public void doSaveFile() {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; OutputStream out = null;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; try {&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; saveFile.createNewFile();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; &nbsp; &nbsp; out = new FileOutputStream(saveFile);&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; &nbsp; &nbsp; bitmap.compress(CompressFormat.JPEG, 70, out);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; } catch (Exception e) {&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; } finally {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; try { out.close(); &nbsp;} catch (IOException e) {e.printStackTrace();}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp; }</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; }</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; public void doFileUpload() {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpClient httpClient = new DefaultHttpClient(); &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String url = \"http://172.20.11.235:8080/web1/file.jsp\";</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpPost post = new HttpPost(url);&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FileBody bin = new FileBody(saveFile);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MultipartEntity multipart =&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"Apple-tab-span\" style=\"white-space: pre;\"></span>&nbsp;&nbsp;new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;multipart.addPart(\"images\", bin);&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; post.setEntity(multipart); &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpResponse response = httpClient.execute(post); &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpEntity resEntity = response.getEntity(); &nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}catch(Exception e){e.printStackTrace();}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;} &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;@Override</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;public void onCreate(Bundle savedInstanceState) {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;super.onCreate(savedInstanceState);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp; &nbsp;// 액티비티의 타이틀이 안보이도록 설정한다.</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;requestWindowFeature(Window.FEATURE_NO_TITLE);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;setContentView(R.layout.camera);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;imageView = (ImageView) findViewById(R.id.ImageView01);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;surfaceView =</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(SurfaceView) findViewById(R.id.SurfaceView01);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;// surface를 제어하는 SurfaceHolder</font>&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SurfaceHolder holder = surfaceView.getHolder();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">// SurfaceView 리스너를 등록</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;holder.addCallback(surfaceListener);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">// 버퍼 사용하지 않음</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp;&nbsp;<font class=\"Apple-style-span\" color=\"#009E25\">&nbsp;// 키가 눌러졌을때 카메라 셔트가 눌러졌다고 이벤트 처리설정</font></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;@Override</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;public boolean onKeyDown(int keyCode, KeyEvent event) {</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp;// TODO Auto-generated method stub</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; if(event.getAction() == KeyEvent.ACTION_DOWN) {&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch(keyCode) {&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case KeyEvent.KEYCODE_CAMERA:&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;shutterListener.onShutter();</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; }&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;&nbsp; &nbsp; return super.onKeyDown(keyCode,event);&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\"><br /></p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">}</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n               <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;<br /></p>\r\n               </td>\r\n            </tr>\r\n         </tbody>\r\n      </table>\r\n   <p style=\"list-style: none; padding: 0px; font-size: inherit; font-family: inherit;\">&nbsp;</p>\r\n   </div>\r\n<table role=\"presentation\" cellspacing=\"0\" class=\"tag_n_id tag_list_area\" style=\"width: 743px; table-layout: fixed; border-width: 0px; border-style: initial; border-color: initial; padding-top: 40px; color: #000000; font-family: 돋움, dotum, Helvetica, sans-serif;\">\r\n   <tbody>\r\n      <tr>\r\n         <td class=\"tagarea\" style=\"vertical-align: top; padding-right: 10px; margin-bottom: -20px;\">\r\n            <div class=\"autosourcing-stub\" style=\"list-style: none; margin: 0px; padding: 0px; position: absolute; opacity: 0;\">\r\n               <p style=\"list-style: none; margin-top: 20px; margin-bottom: 30px; padding: 0px; font-family: dotum;\"><strong style=\"padding: 0px 7px 0px 0px;\">[출처]</strong>&nbsp;<a href=\"https://cafe.naver.com/sunschool/4408\" target=\"_blank\" style=\"text-decoration-line: none;\">[안드로이드예제] 카메라로 찍은 사진(이미지파일)을 웹서버에 전송하는 프로그램예제 (썬스쿨(자바/안드로이드/보안))</a>&nbsp;<span style=\"padding: 0px 7px 0px 5px;\">|</span><strong style=\"padding: 0px 7px 0px 0px;\">작성자</strong><a href=\"https://cafe.naver.com/sunschool.cafe?iframe_url=/CafeMemberNetworkView.nhn%3Fm=view%26memberid=yskim511\" target=\"_blank\" style=\"text-decoration-line: none;\">스플랜더</a></p>\r\n               </div>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>','https://cafe.naver.com/sunschool.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4408&','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:37:47',0,'2019-04-26 13:37:47','210.101.103.92','','','','','','','','','','','',''),(163,-163,'',163,0,0,'','','html1','[Android] 안드로이드에서 HTTP get/post/multipart post 처리하기','<p><span style=\"color: #404040; font-family: 굴림;\">* HTTP GET&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">===================================================================================================&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">try&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpClient client = new DefaultHttpClient();&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; String getURL = \"http://www.google.com\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpGet get = new HttpGet(getURL);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpResponse responseGet = client.execute(get);&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpEntity resEntityGet = responseGet.getEntity();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; if (resEntityGet != null)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 결과를 처리합니다.&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.i(\"RESPONSE\", EntityUtils.toString(resEntityGet));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">catch (Exception e)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">===================================================================================================&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* HTTP POST&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">===================================================================================================&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">try&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpClient client = new DefaultHttpClient();&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; String postURL = \"http://www.google.com\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpPost post = new HttpPost(postURL);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; params.add(new BasicNameValuePair(\"user\", \"kris\"));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; params.add(new BasicNameValuePair(\"pass\", \"xyz\"));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params,HTTP.UTF_8);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; post.setEntity(ent);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpResponse responsePOST = client.execute(post);&nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpEntity resEntity = responsePOST.getEntity();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; if (resEntity != null)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.i(\"RESPONSE\", EntityUtils.toString(resEntity));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">catch (Exception e)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">===================================================================================================&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">* HTTP POST(File Attached)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">===================================================================================================&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">File file = new File(\"path/to/your/file.txt\");&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">try&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpClient client = new DefaultHttpClient();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; String postURL = \"http://www.google.com\";&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpPost post = new HttpPost(postURL);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; FileBody bin = new FileBody(file);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; reqEntity.addPart(\"myFile\", bin);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; post.setEntity(reqEntity);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpResponse response = client.execute(post);&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; HttpEntity resEntity = response.getEntity();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; if (resEntity != null)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp;&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.i(\"RESPONSE\", EntityUtils.toString(resEntity));&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">catch (Exception e)&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">{&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">}&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">===================================================================================================</span></p>','http://theeye.pe.kr/archives/1426','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:38:41',2,'2019-04-26 13:38:41','210.101.103.92','','','','','','','','','','','',''),(164,-164,'',164,0,0,'','','html1','[Android] 이미지 웹서버 전송관련 문서들','<p><span style=\"color: #404040; font-family: 굴림;\">1. 네이버 썬스쿨 문서&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; 카메라로 찍은 사진을 웹서버로 전송 예제&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://cafe.naver.com/sunschool.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4408&amp;\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://cafe.naver.com/sunschool.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4408&amp;</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">2. image using http post multipart&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://vikaskanani.wordpress.com/2011/01/11/android-upload-image-or-file-using-http-post-multi-part/\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://vikaskanani.wordpress.com/2011/01/11/android-upload-image-or-file-using-http-post-multi-part/</a><span style=\"color: #404040; font-family: 굴림;\">&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">3. 안드로이드펍 질문&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><span style=\"color: #404040; font-family: 굴림;\">&nbsp; &nbsp; php웨서ㅓ로 이미지 전송시 문자열변수 동시 전송 방법&nbsp;</span><br style=\"color: #404040; font-family: 굴림;\" /><a href=\"http://www.androidpub.com/index.php?_filter=search&amp;mid=android_dev_qna&amp;search_target=title_content&amp;search_keyword=multipart&amp;page=1&amp;division=-677799&amp;document_srl=664496\" target=\"_new\" style=\"text-decoration-line: none; color: #3a4e40; font-family: 굴림;\">http://www.androidpub.com/index.php?_filter=search&amp;mid=android_dev_qna&amp;search_target=title_content&amp;search_keyword=multipart&amp;page=1&amp;division=-677799&amp;document_srl=664496</a></p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2019-04-26 13:38:56',0,'2019-04-26 13:38:56','210.101.103.92','','','','','','','','','','','','');
