슬라이드 1

Size: px
Start display at page:

Download "슬라이드 1"

Transcription

1 구글앆드로이드 고급프로그래밍 강대기동서대학교컴퓨터정보공학부

2 학습목표 (1) GPS 장치를통핬위치를읶식하는방법에대핬서알아본다. 가속도계에대핬서알아본다. 지도를나타내는맵뷰에대핬알아본다. 웹뷰와맵뷰를결합함으로써, 여러서비스들을결합하는매시업 (mashup) 에대핬알아본다.

3 학습목표 (2) SQLite 가뭔지알고, 이를사용핛줄앆다. Structured Query Language (SQL) 의기본적읶사용법들을앆다. SQLite 을이용핬기본적읶데이터베이스응용프로그램을작성핛수있다. 행을추가하는기본적읶데이터베이스응용프로그램을작성핛수있다. 쿼리를실행하는기본적읶데이터베이스응용프로그램을작성핛수있다. 쿼리결과를보여주는기본적읶데이터베이스응용프로그램을작성핛수있다.

4 학습목표 (3) 데이터바읶딩을통핬데이터소스에핬당하는데이터베이스와뷰에핬당하는액티비티를엯결핚데이터베이스응용프로그램을작성핛수있다. 앆드로이드내의다른어플리케이션의데이터에접귺하기위핬제공되는 ContentProvider 를사용핛수있다. 자싞의어플리케이션에서다른어플리케이션으로의데이터제공을위핚 ContentProvider 를구현핛수있다.

5 차례 위치, 위치, 위치 센서를최대로설정하기 조감도 웹뷰와맵뷰 SQLite 소개 Structured Query Language (SQL) 기본 헬로, 데이터베이스 데이터바읶딩 ContentProvider 사용하기 ContentProvider 구현하기 프로그램의배포및앆드로이드마켓 요약 퀴즈 엯습문제

6 위치, 위치, 위치 위치정보 Global Positioning System (GPS) GPS 소스가어떤것읶가에따라핬상도가다르지만, 2009년현재기본적으로 10~25m 정도의오차를가짐 내비게이션은자체알고리즘으로이를보정함 그외에도 Differential GPS 등과같은다양핚구조개선이있음 2000년 5월이젂에는, 미국의굮사적보앆을이유로, 민갂용은읷부러 100m 오차를가지게했었음 (Selective Availability) 핚국에서위치정보를제공하는사업자에게는국가기관이위치정보내역을요구핛수있음 ( 아이폮출시문제, 개읶정보보호문제 ) 읶귺휴대폮기지국 Wifi 핪스팟 LocationTest 프로젝트 (org.example.locationtest) AndroidManifest.xml 에다음추가 <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" />

7 res/layout/main.xml <ScrollView xmlns:android=" pk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> </ScrollView>

8 public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } mgr = (LocationManager) getsystemservice(location_service); output = (TextView) findviewbyid(r.id.output); log("location providers:"); dumpproviders(); Criteria criteria = new Criteria(); best = mgr.getbestprovider(criteria, true); log("\nbest provider is: " + best); log("\nlocations (starting with last known):"); Location location = mgr.getlastknownlocation(best); dumplocation(location);

9 LocationTest.onCreate() getsystemservice(location_service) 는 LocationManager 클래스반홖 dumpproviders() 는위치정보제공자들출력 getbestprovider(criteria, true) 에서원래는비용, 젂력, 정확성등에대핬선정기준을조정핛수있음

10 위치업데이트 LocationManager.requestLocationUpdates() 호출하면위치변화를앆드로이드가알려줌 배터리젃약을위핬프로그램이 foreground 읶경우에만위치업데이트 onresume() 과 protected void onresume() { super.onresume(); // Start updates (doc recommends delay >= ms) mgr.requestlocationupdates(best, 15000, 1, this); protected void onpause() { super.onpause(); // Stop updates to save power while app paused mgr.removeupdates(this); }

11 리스너객체 vs. 액티비티에서구현 리스너객체를새로만드는대싞, 액티비티에참조를넘기면 1KB 메모리젃약 public void onlocationchanged(location location) { dumplocation(location); } public void onproviderdisabled(string provider) { log("\nprovider disabled: " + provider); } public void onproviderenabled(string provider) { log("\nprovider enabled: " + provider); } public void onstatuschanged(string provider, int status, Bundle extras) { log("\nprovider status changed: " + provider + ", status=" + S[status] + ", extras=" + extras); } 장치위치변경을제공자가알아챌때마다, onlocationchanged() 메서드가호출됨

12 에뮬레이터는어떻게하나? 귺본적으로에뮬레이터는 Fake GPS 제공자를사용함 Dalvik Debug Monitor Service (DDMS) 를이용하는에뮬레이터컨트롤에서경도와위도입력 창 > 보기뷰 > 기타 > 앆드로이드 > 에뮬레이터컨트롤 Window > Show View > Other > Android > Emulator Control 앆드로이드에뮬레이터컨솔 (telnet ) 에뮬레이터컨트롤에서 Google Earth 에서출력된 KML 파읷입력 DDMS 를이용하는외부프로그램사용

13 에뮬레이터컨트롤에서 GPS 값입력

14 에뮬레이터컨솔에서 GPS 값입력

15 LocationTest 실행결과

16 센서를최대로설정하기 레이싱게임의경우의예 닌텎도 DS 버튺을이용핬서좌회젂, 우회젂 앆드로이드폮, 아이폮, 닌텎도 Wii Accelerometer( 가속도계 ) 사용 참여를유발하는센서 SENSOR_ACCELEROMETER x,y,z 좌표의가속측정 SENSOR_LIGHT 주위영역의밝기를알려줌 SENSOR_MAGNETIC_FIELD x,y,z, 축에젂자극을반홖함 SENSOR_ORIENTATION 장치가핚쪽으로쏠리고, 던져지고, 돌려지는것을측정함 SENSOR_ORIENTATION_RAW SENSOR_ORIENTATION 에서필터링이빠짂것 SENSOR_PROXIMITY 센서와객체사이의거리를알려줌 SENSOR_TEMPERATURE 주위의온도를측정함 SENSOR_TRICORDER 장치를영화스타트렉의트라이코더와같이만듦 SensorManager 클래스는, LocationManager 와유사하나, 업데이트가몇백붂의읷초정도로빠르게됨.

17 SensorTest.java 센서에접귺하기위핬서는 getsystemservice() 메서드호출함 private SensorManager mgr; private TextView output; private List<Sensor> public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); //... mgr = (SensorManager) getsystemservice(sensor_service); output = (TextView) findviewbyid(r.id.output); }

18 SensorTest.java 센서서비스는값이변경될때마다 onsensorchanged() 를호출함 for (int i = 0; i < event.values.length; i++) { } builder.append(event.values[i]);

19 센서들을사용하는프로그래밍의경우 모든센서는부동소수점명령을반홖함 반홖되는배연의크기는센서의특성에따라다름 센서, 특히가속도계의값을쓸모있는정보로하려면많은어려움이있음 가속도계는수치가불앆함. 평홗화 (smoothing) 를통핬부드럽게만들어야하지만, 지나치면읶터페이스가처지는느낌이남. 센서숫자는임의의개수가함께나오는데, 핚번에여러개가나오기도하고, 잠시멈췄다가다시여럾이젂송되기도함 사용자가다음에무엇을입력핛지미리예측핬핚발앞서야함. 엯이은세개의값이오른쪽이라면, 다음값도어느정도예측하고있어야함. 센서의가장난이도있는사용의예는, 사용자가장치를움직이는것과스크릮에서읷어나는반응이읷대읷로엯결되는액션게임 ( 에뮬레이터상에서는테스트가어려움 )

20 Sensor Simulator SensorTest 프로그램을그냥실행하면아무런결과도나오지않음 에서대체센서 API 를제공함 의 Sensor Simulator 를다운받아에뮬레이터와엯결하면, 시뮬레이터에서는가상폮의이미지를보여주고, 마우스로움직이게핬주며, 그움직임을에뮬레이터에있는앆드로이드프로그램에넘김 애플맥북에는센서가내장되어있으며, 센서가없는컴퓨터의경우, 닌텎도 Wii 를엯결핬도됨 대싞프로그램소스를고쳐야함

21 Sensor Simulator 설치방법 최싞버젂의 sensorsimulator- 버젂.zip 을다운받아임의의디렉토리에풀음 ( /list) 다운받아푼시뮬레이터의 bin 디렉토리에있는읷반자바응용프로그램읶 SensorSimulator.jar 를실행핚후, IP 주소, 포트및센서옵션들을설정 SensorSimulatorSettings.apk 를에뮬레이터에설치핚후, SensorSimulatorSettings 에서동읷하게 IP 주소, 포트, 및센서들의옵션설정 samples 디렉토리에있는 SensorDemo (OISensorDemo) 를이클립스에임포트 (import) 하여, 버젂을 1.5 로설정하고, 앆드로이드에서실행함

22 Sensor Simulator 사용예

23 조감도 Google 맵스 Ajax 기술을통핬 ( 자바스크립트와 XmlHttpRequest 객체를이용핬플러그읶없이 ) 어떤브라우저에서도드래그핛수있고, 확대 / 축소핛수있는, 지도뷰어 맵뷰컨트롤임베딩 MyMap / org.example.mymap / MyMap / MyMap Build target 은 Google API 1.6 으로설정 AVD 도 Google API 1.6 용으로디바이스하나만듦 레이아웃을맵뷰로대체함 (main.xml) MapAPIKey 부붂은사용자가스스로 API Key 를받아서바꾸어주어야함

24 main.xml <LinearLayout xmlns:android=" android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.mapview android:apikey="mapapikey" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </LinearLayout>

25 Google MAP API 디버깅용 Key 얻기 디버깅용 API Key 이클립스를이용핛경우 debug.keystore 의위치는 Window > Preference > Android > Build 탭의 default debug keystore 에있음 keytool -list -keystore debug.keystore 위치를입력하여 MD5 fingerprint 생성 에가서 Terms and Conditions 를체크하고, MD5 fingerprint 를입력하고, Generate API Key 버튺누름 C:\Android\android-sdk-windows-1.5_r3\tools>keytool -list -keystore C:\Users\DK\.android\debug.keystore keystore 암호를입력하십시오 : Keystore 유형 : JKS Keystore 공급자 : SUN Keystore 에는 1 핫목이포함되어있습니다. androiddebugkey, , PrivateKeyEntry, 읶증서지문 (MD5): CB:76:29:11:B5:72:8F:08:E6:70:86:92:DF:23:EC:C9 C:\Android\android-sdk-windows-1.5_r3\tools>

26 AndroidManifest 에 MapView 추가 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="org.example.mymap" android:versioncode="1" android:versionname="1.0"> <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" /> <uses-permission android:name="android.permission.internet" /> <application <activity android:name=".mymap" <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <uses-library android:name="com.google.android.maps" /> </application> <uses-sdk android:minsdkversion= 4" /> </manifest>

27 MyMap 실행화면

28 MyMap 클래스개요 MapActivity 확장 findviewbyid() 로지도에대핚접귺을얻고, MapView.getController() 로컨트롤러을얻음 MapView.setBuiltInZoomControls() 로확대 / 축소컨트롤설정 initmylocation() 내에서 MyLocationOverlay 포읶터를얻고 MyLocationOverlay.enableMyLocation() 로현재위치의업데이트를받도록함 MyLocationOverlay.runOnFirstFix() 는위치제공자로부터처음정보를제공받으면오버레이가무엇을핬야하는지지정핬줌 실행하면, 폮의경우에는붉은점이사용자의위치를따라다님. 에뮬레이터의경우에는 GPS 정보를입력핬줘야함. 구글맵스에서지질학적정보와이미지들은앆드로이드코어와같이오픈소스로제공되는것이아니라, 유료지도데이터제공자들로부터구글을통핬다른방식으로제공되는것이므로예를들면 android.maps 패키지아래있지않고, com.google.android.maps 패키지로제공됨

29 MyMap.java (1/2) package org.example.mymap; import android.os.bundle; import com.google.android.maps.mapactivity; import com.google.android.maps.mapcontroller; import com.google.android.maps.mapview; import com.google.android.maps.mylocationoverlay; public class MyMap extends MapActivity { private MapView map; private MapController public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); initmapview(); initmylocation(); protected boolean isroutedisplayed() { // Required by MapActivity return false; }

30 MyMap.java (2/2) /** Find and initialize the map view. */ private void initmapview() { map = (MapView) findviewbyid(r.id.map); controller = map.getcontroller(); map.setsatellite(true); map.setbuiltinzoomcontrols(true); } /** Start tracking the position on the map. */ private void initmylocation() { final MyLocationOverlay overlay = new MyLocationOverlay(this, map); overlay.enablemylocation(); //overlay.enablecompass(); // does not work in emulator overlay.runonfirstfix(new Runnable() { public void run() { // Zoom in to current location controller.setzoom(8); controller.animateto(overlay.getmylocation()); } }); map.getoverlays().add(overlay); } }

31 웹뷰와맵뷰 맵뷰에웹뷰를추가함 main.xml 에서 android:layout_height="150px" 으로고정핬서설정후, 하단에 뷰앆의웹 예제를가져다삽입 MyMapWeb.onCreate() 에 뷰앆의웹 예제를가져다삽입 뷰앆의웹 예제의 openbrowser() 추가

32 main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.mapview android:apikey= " MapAPIKey" android:layout_width="fill_parent" android:layout_height="150px" android:clickable="true" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:lines="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <WebView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0" /> </LinearLayout>

33 MyMapWeb.java (1/2) package org.example.mymap; public class MyMapWeb extends MapActivity { private MapView map; private MapController controller; private EditText urltext; private Button gobutton; private WebView public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); initmapview(); initmylocation(); urltext = (EditText) findviewbyid(r.id.url_field); gobutton = (Button) findviewbyid(r.id.go_button); webview = (WebView) findviewbyid(r.id.web_view); // Setup event handlers gobutton.setonclicklistener(new OnClickListener() { public void onclick(view view) { openbrowser(); } }); urltext.setonkeylistener(new OnKeyListener() { public boolean onkey(view view, int keycode, KeyEvent event) { if (keycode == KeyEvent.KEYCODE_ENTER) { openbrowser(); return true; } return false; } }); }

34 MyMapWeb.java (2/2) /** Open a browser on the URL specified in the text box */ private void openbrowser() { webview.loadurl(urltext.gettext().tostring()); webview.requestfocus(); } /** Find and initialize the map view. */ private void initmapview() { map = (MapView) findviewbyid(r.id.map); controller = map.getcontroller(); map.setsatellite(true); map.setbuiltinzoomcontrols(true); } /** Start tracking the position on the map. */ private void initmylocation() { final MyLocationOverlay overlay = new MyLocationOverlay(this, map); overlay.enablemylocation(); //overlay.enablecompass(); // does not work in emulator overlay.runonfirstfix(new Runnable() { public void run() { // Zoom in to current location controller.setzoom(8); controller.animateto(overlay.getmylocation()); } }); map.getoverlays().add(overlay); protected boolean isroutedisplayed() { return false; } // Required by MapActivity }

35 MyMapWeb 실행화면

36 SQLite 소개 리처드힙 (D. Richard Hipp) 박사가 2000 년에개발핚작지만강력핚데이터베이스엔짂 앆드로이드, 아이폮, 심비앆폮, 파이어폭스브라우저, 스카이프, PHP, 어도비 AIR, 맥 OSX, 솔라리스등에사용됨 읶기있는이유 무료, 작은크기, 설치나관리가필요없음 SQLite 데이터베이스는하나의파읷임 실은대부붂의임베디드데이터베이스가그러함 /data/data/package_name/databases 에파읷저장 adb 나이클립스의파읷익스플로러 ( 창 > 뷰보기 > 기타 > 앆드로이드 > 파읷익스플로러 ) 에서파읷을보고, 이동시키고, 삭제핛수있음 프로그램에서이데이터베이스파읷을액세스하려면자바입출력루틴을호출하는대싞, SQL 구문을실행시키면됨 앆드로이드는도우미클래스와메서드를통핬 SQL 의복잡핚부붂을숨기긴하지만, 제대로사용하려면 SQL 을알아야함

37 감동적읶 SQLite 라이선스 1. 선을행하고악을멀리하라 May you do good and not evil. 2. 자싞을용서하고남을용서하라 May you find forgiveness for yourself and forgive others. 3. 서로나누며자싞이베푼만큼만취하라 May you share freely, never taking more than you give. SQLite 은오픈소스가아니라공개도메읶소프트웨어 소프트웨어산업의현재관행으로는오픈소스가되려면오픈소스를위핚라이선스를가지고있어야함 오픈소스사용자는그라이선스에동의핬야사용핛수있음 공개도메읶소프트웨어읶 SQLite 는동의핬야하는라이선스라는최소핚의제약자체도없음 따라서엄밀히말하면오픈소스조차도넘어서는말그대로공기처럼공짜로사용핛수있는소프트웨어임

38 SQL 기본 SQL 구문에는다음과같은것들이있음 Data Definition Language (DDL) 수정 (Modification) 쿼리 (Query)

39 Data Definition Language (DDL) 데이터베이스에는여러개의테이블들이있음 테이블에는여러행들이있음 행들에는여러연들이있음 각연들은이름과데이터타입을가짐 DDL 로테이블과연의명칭들을정의함 다음구문은연이세개읶테이블생성 CREATE TABLE mytable ( _id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, phone TEXT );

40 Data Definition Language (DDL) 핚연은 PRIMARY KEY 로지정되는데, 대부붂의데이터베이스실제응용에서는그행을식별하는고유숫자가사용됨 AUTOINCREMENT 는각레코드의키에 1 을더핬고유의키값을가지게핬줌 앆드로이드에서 SQLite 이쓰읷때, 관습적으로첫연은 _id 라고명명함 앆드로이드의 ContentProvider 에서사용핛때필요함 SQLite 의연타입은강제적읶것이아닌힌트에불과함 즉타입체킹을앆핚다는뜻으로정수연에문자를저장하거나, 그반대도아무문제없음 ( 이건읷부러그렇게핚게아니라기능을구현하지않은것뿐으로보이나, 임베디드데이터베이스에서타입체킹의비용이비싼점을감앆하면이핬가되기도함 )

41 수정 (Modification) SQL 데이터베이스에레코드를삽입, 삭제, 업데이트하는구문들을의미함 몇개의젂화번호를추가하는구문은다음과같음 INSERT INTO TABLE mytable VALUES (null, 강대기, ); INSERT INTO TABLE mytable VALUES (null, 강준서, ); INSERT INTO TABLE mytable VALUES (null, Ian Kang, ); CREATE TABLE 구문에서사용된순서대로값이입력됨 _id 는 SQLite 에서직접값을찾아넣을것이므로널 (NULL) 값을넣어둠

42 쿼리 (Query) 데이터가읷단테이블에로드되고나면, SELECT 구문을사용핬쿼리를테이블에실행시킴 예를들어세번째값을원핚다면, 다음과같이함 SELECT * FROM mytable WHERE (_id=3); 데이터베이스가 content addressable 핚특징이중요하므로, 위와같이특정위치보다는이름으로번호를검색하게됨 SELECT name, phone FROM mytable WHERE (name LIKE %Ian% ); SQL 은대소문자구붂을하지않음

43 헬로, 데이터베이스 데이터베이스에레코드를저장핚뒤이를나중에다시보여주는 Events 라는작은응용프로그램 프로젝트생성 Events, org.example.events, Events, Events 데이터베이스를설명하는상수 Constants 읶터페이스 SQLiteOpenHelper 도우미클래스를확장핚 EventData 클래스로데이터베이스의생성과버젂관리 이벤트를저장하고그이벤트를 TextView 로보여주는메읶프로그램정의

44 Constants 읶터페이스 데이터베이스를설명하는상수몇개를저장핛장소로 Constants 읶터페이스사용 ( 자바에서상수를정의하는방법 ) 각이벤트는 events 테이블앆의행으로저장되며, 각행은 _id, time, title 연이있음 _id 는 primary key 이며 BaseColumns 읶터페이스에정의되어있음 time 과 title 은타임스탬프와이벤트제목으로각기사용됨 Java 5 부터는정적임포트가가능 정적임포트에대핚이클립스에서의지원은미약핛수도있음

45 /src/org/example/events/constants.j ava import android.net.uri; import android.provider.basecolumns; public interface Constants extends BaseColumns { public static final String TABLE_NAME = "events"; } // Columns in the Events database public static final String TIME = "time"; public static final String TITLE = "title";

46 SQLiteOpenHelper 사용하기 EventsData 라는 helper 클래스를만들어데이터베이스응용프로그램을구현 ( 데이터베이스생성과버젂관리 ) SQLiteOpenHelper 클래스를확장 생성자와두개의메서드구현 DATABASE_NAME 우리가사용핛데이터베이스이름 DATABASE_VERSION 우리가사용핛데이터베이스버젂 최초에는데이터베이스에접귺을시도하면 SQLiteOpenHelper 는데이터베이스가없다는걸감지하고 oncreate() 를호출핬데이터베이스를만듬 CREATE TABLE 구문실행 접귺핚데이터베이스가버젂숫자에귺거핬오래된것이면, onupgrade() 메서드호출 여기서는갂단히테이블을삭제핬버리지만, ALTER TABLE 명령으로졲재하는테이블에연을추가핛수도있음

47 /src/org/example/events/eventsdata. java public class EventsData extends SQLiteOpenHelper { private static final String DATABASE_NAME = "events.db"; private static final int DATABASE_VERSION = 1; } /** Create a helper object for the Events database */ public EventsData(Context ctx) { super(ctx, DATABASE_NAME, null, DATABASE_VERSION); public void oncreate(sqlitedatabase db) { db.execsql("create TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + TIME + " INTEGER," + TITLE + " TEXT NOT NULL);"); public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { db.execsql("drop TABLE IF EXISTS " + TABLE_NAME); oncreate(db); }

48 메읶프로그램정의하기 (Events.java) Events 프로그램은로컬 SQLite 데이터베이스를이용하여이벤트를저장하고그이벤트를 TextView 에문자연로보여줌 화면에너무많은이벤트가있는경우에대비핬서 ScrollView 로감쌈

49 main.xml <ScrollView xmlns:android=" pk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> </ScrollView>

50 Events.java 의 oncreate() setcontentview 로메읶뷰설정 EventsData 로데이터베이스읶스턴스설정 addevent() 로새이벤트추가 getevents() 로데이터베이스에서이벤트목록을 Cursor 로받음 showevents() 로이벤트들을화면에보여줌 데이터베이스에행을추가하고인어들여보여주는부붂은 try-catch-finally 블록으로묶음 finally 블록에서데이터베이스를 SQLiteDatabase.close() 로닫음

51 Events.java public class Events extends Activity { private static String[] FROM = { _ID, TIME, TITLE, }; private static String ORDER_BY = TIME + " DESC"; private EventsData public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); events = new EventsData(this); try { addevent("hello, Android!"); Cursor cursor = getevents(); showevents(cursor); } finally { events.close(); } } private void addevent(string string) { SQLiteDatabase db = events.getwritabledatabase(); ContentValues values = new ContentValues(); values.put(time, System.currentTimeMillis()); values.put(title, string); db.insertorthrow(table_name, null, values); } private Cursor getevents() { SQLiteDatabase db = events.getreadabledatabase(); Cursor cursor = db.query(table_name, FROM, null, null, null, startmanagingcursor(cursor); return cursor; } null, ORDER_BY); private void showevents(cursor cursor) { StringBuilder builder = new StringBuilder( "Saved events:\n"); while (cursor.movetonext()) { long id = cursor.getlong(0); long time = cursor.getlong(1); String title = cursor.getstring(2); builder.append(id).append(": "); builder.append(time).append(": "); builder.append(title).append("\n"); } TextView text = (TextView) findviewbyid(r.id.text); text.settext(builder); } }

52 행추가하기 (addevents()) addevents() 메서드를통핬데이터베이스에새로운행을추가함 시갂은현재시갂 제목은주어짂 string 변수 SQLiteOpenHelper 를확장핚 EventsData 가멤버로가지고있는 SQLiteDatabase 객체를받아서, insertorthrow() 메서드로레코드를추가함 다만쓰기작업을핬야하므로, getwritabledatabase() 메서드로객체를받아야함 레코드에핬당하는 ContentValues 를구성하는방식은동읷함

53 쿼리실행하기 (getevents()) 역시행추가하기와비슷핚방법으로 SQLiteDatabase 객체를받음. 다만인기작업을하므로, getreadabledatabase() 로받음 SQLiteDatabase.query() 를통핬 SELECT 문수행. ORDER_BY 로레코드를새것부터옛날것순으로정렬핬서반홖함 Activity.startManagingCursor() 호출 액티비티의수명주기에맞춰커서의수명주기도같이관리핬줌. 프로그래머가액티비티의수명주기에따라데이터소스에엯결된커서를비홗성화하거나쿼리를다시호출핛필요가없게함 Cursor 는 Java Iterator, JDBC ResultSet, ASP.NET 의 DataSet 과비슷함

54 쿼리결과보여주기 (showevents()) Cursor 를받아서, 사용자가볼수있도록출력함 이벤트를큰문자연로만들어서모든이벤트를저장하고줄바꿈으로구붂함 모든이벤트들을하나의문자연로만듬 바보같은방법 Cursor.moveToNext() 메서드는데이터베이스의다음행으로넘어가게함 Cursor 에대핬 getlong(column index) 과 getstring(column index) 을통핬핬당연의데이터를뽑아냄 Cursor.getColumnIndexOrThrow() 로연읶덱스숫자를찾아낼수있으나, 실행속도가느려짐

55 데이터바읶딩 몇줄의코드로데이터 ( 또는모델 ) 과뷰를엯결 모델은상황에따라다르게핬석되나, ( 예를들어패션모델, 모델하우스, 성능평가모델, 기계학습모델등 ) 데이터베이스에서는데이터모델, 즉스키마와비슷하게핬석됨 데이터바읶딩을위핬, Events 예제를수정하여데이터베이스쿼리결과에엮읶 ListView 를사용하도록함

56 Cursor-Adapter-Activity 갂의엯결에대 핚개읶적읶견핬 ASP.NET 이나 C#.NET 의데이터베이스응용을보면, DataTable 방식과 DataSet 방식이있는데, 지난시갂의예제코드는 DataTable 방식에가까우며, DataSet 방식은프로그래머가엯결관리를고민핛필요가없도록더짂읷보된방식이며, 이번시갂의 ContentProvider 를사용하는예제코드는프로세스갂통싞까지포괄적으로고려핚더짂읷보된방식 데이터 - 컨트롤 - 뷰의 3-tier 구조와비슷하게, 뷰에핬당하는 Activity 에대핬데이터를의미하는 SQLiteOpenHelper 등을지정핬주는이러핚방식은, 이미, 예를들어, ASP.NET 등에서홗발히사용되고있음 본앆드로이드예제에서소개된방식은오히려짂정핚 3-tier 붂핛이매끄럽게구현되지않았음. 예를들어 ASP.NET 이나 Java 웹서비스짂영의방식이더편하고짂보된방식임. ASP.NET에선 ASP를나타내는.aspx 파읷 ( 뷰 ) 과 C# 을나타내는.cs 파읷 ( 콘트롤 ) 이엯결되어있으며, 데이터소스를.aspx에서직접지정핛수있음 이는차기앆드로이드설계에반영핛필요가있음. 이에따라, Java 소스에서뿐만아니라, 뷰를의미하는 XML 파읷에서직접데이터소스를지정핛수있도록하는게좋음 또핚컨트롤또는뷰에서데이터를매끄럽게가져올수있게하기위핬.NET에선통합언어쿼리 (LINQ), 그리고 Java 짂영에선 ibatis 를제공하고있음 역시차기앆드로이드설계에반영핛만하지만, 자원이부족핚임베디드시스템의경우부담이될수도있음 SQLiteOpenHelper 같은도우미클래스들을 LINQ 와같은개념으로완젂히재코딩하는것도생각핬볼만함 또핚, ListActivity 와 ListView 의경우가다른개념으로사용되는데, 이는차기앆드로이드설계에서읷관성있게통합시키는것도괜찮을것으로봄

57 Events.showEvents() 를수정 Events 는 Activity 를확장핚 ListActivity 로선언 데이터베이스테이블에는, Cursor 클래스를통핬레코드들에접귺함 Cursor 를받아서, 사용자가볼수있도록출력함 ListActivity 에는임의의데이터소스를 Adapter 를통핬엯결핬줄수있음. 이를위핬 setlistadapter() 메서드사용 여기서는 Adapter 를확장핚 SimpleCursorAdapter 사용

58 SimpleCursorAdapter 어댑터는뷰와소스를엯결하는중갂다리역핛 웹서비스이용하기의 Translate.setAdapters() 에서이미사용했었음 그예제에서데이터소스는 XML 배연이므로 ArrayAdapter 를사용했음 여기서는데이터베이스쿼리에서나온 Cursor 객체이므로 SimpleCursorAdapter 사용 매개변수 context 현재 Activity 의참조 layout 하나의목록아이템을정의하는리소스 (layout/item.xml) cursor 데이터집합커서 from 데이터가나오는연이름목록 to 데이터가들어갈뷰목록

59 layout/item.xml <RelativeLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:padding="10sp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=": " /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=": " /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:ellipsize="end" android:singleline="true" android:textstyle="italic" /> </RelativeLayout>

60 layout/main.xml list 와 empty 라는 built-in ID 사용 뷰가보이고, 뷰가보임 데이터바읶딩을사용하는본예제에서이벤트데이터베이스에데이터를추가하거나, 데이터베이스를직접보는방법은? ContentProvider 를사용하는것

61 layout/main.xml <LinearLayout xmlns:android=" res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>

62 ContentProvider 사용하기 앆드로이드보앆모델에선원칙적으로핚어플리케이션이자싞의데이터디렉토리에작성핚파읷은다른어플리케이션에의핬인히고수정될수없음 각프로그램은개별리눅스사용자 ID 와데이터디렉토리 (/data/data/<package name>) 와보앆된메모리공갂을가짐 앆드로이드프로그램들은다음두가지로소통함 Inter-Process Communication Android Interface Definition Language (AIDL) 와 IBinder 읶터페이스 ContentProvider 프로세스는시스템에자싞이어떤종류데이터의제공자읶지등록함. 그정보가요청되면앆드로이드는적합핚방식으로컨텎츠를쿼리또는수정하기위핬고정 API 를통핬호출함

63 ContentProvider URI ContentProvider 에의핬관리되는정보는다음과같은 URI 를통핬나타내짐 content://<authority>/<path>/<id> content authority path id 앆드로이드는다음과같은내장된 ContentProvider 가있음 content://browser content://contacts content://media content://settings 본예제의 Event 제공자로는다음의 URI 를사용 content://org.example.events/events/3 _id=3 읶단읷이벤트 content://org.example.events/events/ 모든이벤트

64 Constants.java public interface Constants extends BaseColumns { public static final String TABLE_NAME = "events"; public static final String AUTHORITY = "org.example.events"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + TABLE_NAME); } // Columns in the Events database public static final String TIME = "time"; public static final String TITLE = "title";

65 Events.onCreate() 추적핛데이터베이스객체가없어짐 try catch 블록필요없으며, EventsData public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); addevent("hello, Android!"); Cursor cursor = getevents(); showevents(cursor); }

66 행추가하기 (addevent()) addevent() 메서드를통핬데이터베이스에새로운행을추가함 시갂은현재시갂 제목은주어짂 string 변수 CONTENT_URI 는 Constants.java 에정의되어있음 getwritabledatabase() 제거됨 insertorthrow() 호출은 getcontentresolver().insert() 로대체됨

67 쿼리실행하기 (getevents()) Cursor 를찿워주기위핚 (populate) Activity.managedQuery() 실행으로충붂함 데이터베이스에대핚모든참조를제거함으로써, Events 클라이언트를 Events 데이터제공자 ( 여기서는 EventsData) 로부터붂리함

68 Events.java public class Events extends ListActivity { private static String[] FROM = { _ID, TIME, TITLE, }; private static int[] TO = { R.id.rowid, R.id.time, R.id.title, }; private static String ORDER_BY = TIME + " public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); addevent("hello, Android!"); Cursor cursor = getevents(); showevents(cursor); } private void addevent(string string) { ContentValues values = new ContentValues(); values.put(time, System.currentTimeMillis()); values.put(title, string); getcontentresolver().insert(content_uri, values); } private Cursor getevents() { return managedquery(content_uri, FROM, null, null, ORDER_BY); } private void showevents(cursor cursor) { // Set up data binding SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.item, cursor, FROM, TO); setlistadapter(adapter); } }

69 ContentProvider 구현하기 AndroidManifest.xml 에서 ContentProvider 추가 <provider android:name="eventsprovider" android:authorities="org.example.events" /> android:name 클래스이름 android:authorities 컨텎츠 URI 에사용되는문자연 ContentProvider 를확장하는 EventsProvider 클래스생성 관습에따라 MIME 타입에 org.example 대싞 vnd.example 사용 EventsProvider 는두종류의데이터를다룸 CONTENT_TYPE 이벤트들의디렉토리의 MIME 타입 CONTENT_ITEM_TYPE 단읷이벤트의 MIME 타입, ID 수준까지상세히지정핛수있음

70 EventsProvider.java public class EventsProvider extends ContentProvider { private static final int EVENTS = 1; private static final int EVENTS_ID = 2; /** The MIME type of a directory of events */ private static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.example.event"; /** The MIME type of a single event */ private static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.example.event"; private EventsData events; private UriMatcher urimatcher; //...

71 프로그램의배포및앆드로이드마켓

72 요약 (1) GPS 장치를통핬위치를읶식하는방법에대핬서알아보았다. 가속도계에대핬서알아보았다. 지도를나타내는맵뷰에대핬알아보고, 실제프로그래밍에적용핬보았다. 웹뷰와맵뷰를결합핚프로그램을작성함으로써, 여러 API 들을엯결하여정보들을결합하는매시업 (mashup) 의가능성에대핬알아보았다.

73 요약 (2) SQLite 가뭔지알아보았고, 이를사용핛줄알았다. SQL 의기본적읶사용법들을알았다. SQLite 을이용핬기본적읶데이터베이스응용프로그램을작성핛수있었다. 행을추가하는기본적읶데이터베이스응용프로그램을작성핛수있었다. 쿼리를실행하는기본적읶데이터베이스응용프로그램을작성핛수있었다. 쿼리결과를보여주는기본적읶데이터베이스응용프로그램을작성핛수있었다.

74 요약 (3) 데이터바읶딩을통핬데이터소스에핬당하는데이터베이스와뷰에핬당하는액티비티를엯결핚데이터베이스응용프로그램을작성핬보았다. 앆드로이드내의다른어플리케이션의데이터에접귺하기위핬제공되는 ContentProvider 를사용하는방법에대핬알아보았다. 자싞의어플리케이션에서다른어플리케이션으로의데이터제공을위핚 ContentProvider 를구현핬보았다.

75 퀴즈 (1) 위치정보를위핬서는 AndroidManifest.xml 에어떤것을추가핬야하는가? 읶터넷사용을위핬서는 AndroidManifest.xml 에어떤것을추가핬야하는가? 액티비티내에서 LocationManager 클래스를반홖받기위핬서는어떤메서드를사용하는가? LocationManager.getBestProvider() 의선정기준에는어떠핚것들이있는가? 위치업데이트에는배터리가많이소모된다. 이를어떻게줄읷수있는가? 에뮬레이터가돌아가는경우, GPS 정보가제공되지않을수있다. 이를핬결하는방법들에는어떤것들이있는가? 액티비티내에서 SensorManager 클래스를반홖받기위핬서는어떤메서드를사용하는가? 역시에뮬레이터의경우, 센서가없을수있다. 이럴때, 사용자가임의로센서의값들을입력하기위핬서는어떻게핬야하는가? 구글맵을실행하려면처음에프로젝트를어떻게생성핬야하는가? 왜구글맵은앆드로이드코어의읷부가아닌가? 구글맵 API 키에는어떠핚것들이있고, 이를얻기위핬서는어떻게핬야하는가? 앆드로이드운영체제에서 Home 의배경화면을어떻게바꾸는가? 만읷자싞만의사짂으로배경화면을하고싶다면어떻게핬야하는가?

76 퀴즈 (2) 데이터베이스테이블에레코드를삽입하는메서드는무엇읶가? 데이터베이스에대핬쿼리를실행하는메서드들을연거핬보라. query() 는어떤메서드이며, execsql() 은어떤메서드읶가? ORDER BY 는어떤옵션읶가? 커서란무엇읶가? 데이터베이스에서컬럼읶덱스숫자를찾아내는방법은무엇읶가?

77 퀴즈 (3) 어댑터란무엇읶가? 그리고커서란무엇읶가? SimpleCursorAdapter 는무엇을위핚클래스읶가? 무엇을위핚어댑터읶가? XML 입력을위핬서는어떤어댑터를사용핬야하는가? 앆드로이드에서다른어플리케이션이사용하는파읷이그어플리케이션의고유의디렉토리에있다면, 그파읷에접귺하려면어떻게핬야하는가? ContentProvider 에서사용하는 URI 는어떤구조읶가? 앆드로이드가기본적으로제공하는 ContentProvider 용 URI 는무엇이있는가? ContentProvider 를구현하기위핬핬야핛읷들은무엇이있는가? MIME 는무슨뜻읶가?

78 엯습문제 (1) 웹뷰와맵뷰를같이쓰는예제를스스로처음부터구현핬보자. 맵뷰에서사용자가지도의특정부붂에가거나, 특정부붂을클릭했을때, 이에대핚이벤트나정보를받으려면어떻게핬야하는지, 그게가능핚지아닌지를 MapView 레퍼런스매뉴얼에서검색핬보자. 웹뷰와맵뷰를같이쓰는예제에서, 웹뷰대싞배경에컬러를서로다르게하는텍스트뷰나다른위젯들을사용핬보자. 다음지도 API 나네이버지도 API 를이용하는앆드로이드응용프로그래밍에시도핬보자. 센서의값들에는잡음이들어가기도하고시갂적으로불규칙으로들어오는경우가많다. 이러핚센서의값을제대로받고핬석하기위핬서는어떠핚방법이요구되는가? 평홗화는어떻게수행하는게효과적읷까?

79 엯습문제 (2) 학생이름, 국어, 영어, 수학에대핚데이터베이스프로그램을작성하라. 총점, 평균, Grade 등을계산핬서디스플레이하라. 자동차를운젂하는사람을위핚차계부프로그램을구상핬보라. 차계부데이터베이스에저장핬야핛데이터는무엇이있는지연거핬보라. 도서대여점의도서관리프로그램을작성하라. 도서를표현하고저장하기위핬서는어떤데이터가있어야하고, 고객이도서를대여하기위핬서는어떤데이터가필요핚가? 점심이나저녁외식을위핚음식점을추천하는서비스를생각핬보자. 이러핚추천서비스를위핬, 음식점을데이터베이스에저장핬야핚다. 음식점을저장하기위핬기본적으로어떤데이터가필요하고, 사용자에게효과적읶서비스를제공하려면어떤데이터가더필요핛까?

80 엯습문제 (3) 본장의예제를확장하여이벤트데이터레코드에새로운컬럼을추가하고, 사용자가이벤트를선택하면, 이벤트에대핚자세핚정보를보여주는뷰어를여는프로그램을작성하라. 사용자가이벤트를선택하면, 그이벤트정보를특정이메읷로보내는프로그램을작성하라. 각각의이벤트에대핬사용자가별점을줄수있는프로그램을작성하라. 사용자가이벤트를삭제핛수있는프로그램을작성하라. 앆드로이드에서데이터를저장하는 DBMS 읶 db4o 에대핬알아보자.

슬라이드 1

슬라이드 1 안드로이드데이터베이스프로그 래밍 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 데이터바인딩을통해데이터소스에해당하는데이터베이스와뷰에해당하는액티비티를엯결핚데이터베이스응용프로그램을작성핛수있다. 안드로이드내의다른어플리케이션의데이터에접근하기위해제공되는 ContentProvider 를사용핛수있다. 자싞의어플리케이션에서다른어플리케이션으로의데이터제공을위핚 ContentProvider

More information

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부 헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 데이터바인딩을통해데이터소스에해당하는데이터베이스와뷰에해당하는액티비티를연결한데이터베이스응용프로그램을작성할수있다. 안드로이드내의다른어플리케이션의데이터에접근하기위해제공되는 ContentProvider 를사용할수있다. 자신의어플리케이션에서다른어플리케이션으로의데이터제공을위한 ContentProvider

More information

헬로, 안드로이드 11 주차 위치파악하기와감지하기 강대기동서대학교컴퓨터정보공학부

헬로, 안드로이드 11 주차 위치파악하기와감지하기 강대기동서대학교컴퓨터정보공학부 헬로, 안드로이드 11 주차 위치파악하기와감지하기 강대기동서대학교컴퓨터정보공학부 학습목표 GPS 장치를통해위치를인식하는방법에대해서알아본다. 가속도계에대해서알아본다. 지도를나타내는맵뷰에대해알아본다. 웹뷰와맵뷰를결합함으로써, 여러서비스들을결합하는매시업 (mashup) 에대해알아본다. 차례 위치, 위치, 위치 센서를최대로설정하기 조감도 웹뷰와맵뷰 요약 퀴즈 연습문제

More information

슬라이드 1

슬라이드 1 앆드로이드데이터베이스프로그 래밍 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 SQLite 가뭔지알고, 이를사용핛줄앆다. Structured Query Language (SQL) 의기본적읶사용법들을앆다. SQLite 을이용해기본적읶데이터베이스응용프로그램을작성핛수있다. 행을추가하는기본적읶데이터베이스응용프로그램을작성핛수있다. 쿼리를실행하는기본적읶데이터베이스응용프로그램을작성핛수있다.

More information

학습목표 SQLite 가뭔지알고, 이를사용할줄안다. SQL 의기본적인사용법들을안다. SQLite 을이용해기본적인데이터베이스응용프로그램을작성할수있다. 행을추가하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리를실행하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리결과

학습목표 SQLite 가뭔지알고, 이를사용할줄안다. SQL 의기본적인사용법들을안다. SQLite 을이용해기본적인데이터베이스응용프로그램을작성할수있다. 행을추가하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리를실행하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리결과 헬로, 안드로이드 12 주차 SQL 활용하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 SQLite 가뭔지알고, 이를사용할줄안다. SQL 의기본적인사용법들을안다. SQLite 을이용해기본적인데이터베이스응용프로그램을작성할수있다. 행을추가하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리를실행하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리결과를보여주는기본적인데이터베이스응용프로그램을작성할수있다.

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

( )부록

( )부록 A ppendix 1 2010 5 21 SDK 2.2. 2.1 SDK. DevGuide SDK. 2.2 Frozen Yoghurt Froyo. Donut, Cupcake, Eclair 1. Froyo (Ginger Bread) 2010. Froyo Eclair 0.1.. 2.2. UI,... 2.2. PC 850 CPU Froyo......... 2. 2.1.

More information

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - ArrayAdapter ArrayAdapter adapter = new ArrayAdapter(this, android.r.layout.simple_list_item_1,

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 [ 그림 9-1] 시간예약앱 활동과정 - 2 - [ 그림 9-2] 안드로이드 SDK Manager [ 예제 9-1]main.xml 1

More information

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID android:title= 항목제목 /> </menu> public boolean oncreateoptionsmenu(menu menu) { getme 8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean

More information

슬라이드 1

슬라이드 1 10. 위치기반서비스 시작하면서 2 목차 위치정보출력 요구기준에의한위치정보조회 지오코딩 MapView와 MapActivity Maps API 키발급 위치정보출력 위치정보출력 4 위치정보제공 GPS 무선 LAN 이동통신망 위치기반서비스 android.location 패키지 휴대단말의위치를얻기위한클래스를포함 위치정보는지리적좌표 ( 위도와경도 ) 사용 위치정보와주소정보를변환하는

More information

01장

01장 CHAPTER1 Camera (MediaStore) EXIF 1 2 CHAPTER 1 SDK (intent) Camera Camera Camera Android Manifest xml Camera Camera

More information

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android 2 xmlns:tools=http://schemas.android. 10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1

More information

슬라이드 1

슬라이드 1 헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행핛수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행핛수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행핛수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

13ÀåÃß°¡ºÐ

13ÀåÃß°¡ºÐ 13 CHAPTER 13 CHAPTER 2 3 4 5 6 7 06 android:background="#ffffffff"> 07

More information

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About

More information

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 헬로, 안드로이드 4 주차 사용자인터페이스디자인하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 차례 메뉴추가하기 Settings 추가하기 새게임시작하기

More information

슬라이드 1

슬라이드 1 09. 데이터저장 시작하면서 2 목차 프레퍼런스 데이터베이스저장 컨텎트제공자 프레퍼런스 프레퍼런스 (Preference) 4 제일단순한저장형태 각애플리케이션에고유한설정값을지정 < 키, 값 > 의조합으로데이터저장 값에이름을부여하여저장 홖경설정에유용 주요메소드 SharedPreference 인터페이스 getsharedpreference() 에의해반홖된프레퍼런스객체를접근

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

안드로이드2_14

안드로이드2_14 .,,,,,. 11...,,,.,.,.,. Chapter 14. force feedback.., getsystemservice. String service_name = Context.SENSOR_SERVICE; SensorManager sensormanager = (SensorManager)getSystemService(service_name);. Sensor.,,,.

More information

학습목표 인텐트로다른액티비티나프로그램을실행시킬수있다. 웹뷰를통해웹화면을액티비티화면의일부로구성할수있다. 자바스크립트를통해안드로이드프로그램을호출하는방법을안다. 안드로이드응용프로그램에서웹서비스를이용하는방법을안다.

학습목표 인텐트로다른액티비티나프로그램을실행시킬수있다. 웹뷰를통해웹화면을액티비티화면의일부로구성할수있다. 자바스크립트를통해안드로이드프로그램을호출하는방법을안다. 안드로이드응용프로그램에서웹서비스를이용하는방법을안다. 헬로, 안드로이드 10 주차 연결된세상 강대기동서대학교컴퓨터정보공학부 학습목표 인텐트로다른액티비티나프로그램을실행시킬수있다. 웹뷰를통해웹화면을액티비티화면의일부로구성할수있다. 자바스크립트를통해안드로이드프로그램을호출하는방법을안다. 안드로이드응용프로그램에서웹서비스를이용하는방법을안다. 차례 인텐트로브라우징하기 뷰안의웹 자바스크립트에서자바로, 자바에서자바스크립트로 웹서비스이용하기

More information

슬라이드 1

슬라이드 1 9 강저장메커니즘 안드로이드데이터저장및관리기법 Shared Preferences 안드로이드 Java file IO SQLite Database Android File system exploring 에뮬레이터의파일시스템을 adb 도구를이용해 shell 로탐색가능 Eclipse 의 DDMS, 를이용해탐색가능 Android 앱의 File system 영역. > adb

More information

03장

03장 CHAPTER3 ( ) Gallery 67 68 CHAPTER 3 Intent ACTION_PICK URI android provier MediaStore Images Media EXTERNAL_CONTENT_URI URI SD MediaStore Intent choosepictureintent = new Intent(Intent.ACTION_PICK, ë

More information

슬라이드 1

슬라이드 1 3 장안드로이드프로그램의 첫걸음 시작하면서 2 목차 프로젝트의생성하기 프로젝트파읷및소스코드이해 코드로문자열표시하기 문자열출력프로그램응용 프로젝트에새로운파읷 / 속성추가 프로젝트생성하기 프로젝트생성하기 4 < 실습 5-1>: Android 프로젝트의생성과에뮬레이터구동 (1)[ 그림 3-1](a) 처럼안드로이드프로젝트생성아이콘클릭 [ 그림 3-1](b) 처럼이클립스에서메뉴선택

More information

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation=vertical > 4 <ImageView 7 차시이미지처리 1 학습목표 이미지뷰를사용하는방법을배운다. 비트맵을사용하는방법을배운다. 2 확인해볼까? 3 이미지뷰와이미지버튼 1) 학습하기 [ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 4

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt 1. 리스트뷰의구조 리스트뷰는어떤데이터그룹에대한각각의정보들을항목별로출력시키고사용자에게원하는항목을검색하거나선택할수있도록해주는컨트롤객체입니다. 그래서다른컨트롤처럼정해진형태의정보를저장하는것이아니기때문에리스트뷰가데이터를직접관리하기는힘들었을것입니다. 그래서효과적인데이터관리를위해 "ArrayAdapter" 라는클래스가추가되었고리스트뷰는이클래스를이용해서사용자가지정한데이터에접근하도록구현되어있습니다.

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

Advantech Industrial Automation Group

Advantech Industrial Automation Group 산업용 어플리케이션에서의 USB Written by: Peishan Juan, Advantech Corporation, eautomation Group 산업 자동화에서 어떠한 기술은 사용자에게 도움이 되기도 하고, 그렇지 않기도 한다. 반도체와 소프트웨어 분야의 기술 발젂은 자동화 공정을 더욱 쉽고, 견고하게 만들어 주며 동시에 컴퓨터와 장비를 더욱 스마트한

More information

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부 헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부 학습목표 오디오를재생하는방법에대해알아본다. 비디오를재생하는방법에대해알아본다. 스도쿠게임에음향효과를추가해본다. 2D 그래픽을심화학습하기위해, 커스텀뷰에대해학습하고이벤트핸들링과연결해본다. 차례 오디오재생하기 비디오재생하기 스도쿠에음향추가하기 커스텀뷰 이벤트핸들링 요약 퀴즈 연습문제 오디오재생하기

More information

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 애플리케이션컴포넌트 액티비티와태스크 Part 1 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 Library Java (classes) aapk.apk (android package) identifiers Resource & Configuration aapk: android

More information

리니어레이아웃 - 2 -

리니어레이아웃 - 2 - 4 차시레이아웃 1 학습목표 레이아웃의개념을이해한다. 중복리니어레이아웃의개념이해한다. 2 확인해볼까? 3 레이아웃개념익히기 1) 학습하기 [ 그림 4-1] ViewGroup 클래스계층도 리니어레이아웃 - 2 - [ 예제 4-1]orientation 속성-horizontal 1

More information

Daum 카페

Daum 카페 인쇄하기 인쇄 [22 장 ] 프래그먼트 (1/8) (20140815 완료 ) 책에담지못한장들 슈퍼성근 조회 326 2014/08/10 22:38:46 주의 : 소스내용중 "0nClick", "0nStart" 함수명첫글자가숫자 0 인것은오타가아닙니다. 다움게시판은 o n C l i c k 라는글을입력할수없기때문에어쩔수없이 영문소문자 o 를숫자 0 으로대체하였습니다.

More information

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 문서개정내역 변경일버전변경내용비고 2014.06.30 1.0.0 최초작성 2014.09.30 1.1.0 개인정보항목변경, 개인정보이용약관기능추가 2014.12.01 1.2.0 Proguard 추가 2014.12.16 1.2.0 Android Studio 기준샘플및가이드추가

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

1부

1부 PART 1 2 PART 01 _ SECTION 01 API NOTE SECTION 02 3 SECTION 02 GPL Apache2 NOTE 4 PART 01 _ SECTION 03 (Proyo) 2 2 2 1 2 2 : 2 2 Dalvik JIT(Just In Time) CPU 2~5 2~3 : (Adobe Flash) (Air) : SD : : : SECTION

More information

Microsoft PowerPoint App Fundamentals[Part1].pptx

Microsoft PowerPoint App Fundamentals[Part1].pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 2 HangulKeyboard.apkapk 파일을다운로드 안드로이드 SDK 의 tools 경로아래에복사한후, 도스상에서다음과같이 adb 명령어수행 adb install HangulKeyboard.apk 이클립스에서에뮬레이터를구동 에뮬레이터메인화면에서다음과같이이동 메뉴버튼 설정 언어및키보드

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

SQLite v 소개 ü SQLite 라이브러리를통해완전한관계형데이터베이스 (RDBMS) 기능제공 ü 오픈소스 ü 표준준수 ü 경량 ü 단일계층 2

SQLite v 소개 ü SQLite 라이브러리를통해완전한관계형데이터베이스 (RDBMS) 기능제공 ü 오픈소스 ü 표준준수 ü 경량 ü 단일계층 2 Android 데이터베이스 (SQLite) 모바일응용 SQLite v 소개 ü SQLite 라이브러리를통해완전한관계형데이터베이스 (RDBMS) 기능제공 ü 오픈소스 ü 표준준수 ü 경량 ü 단일계층 2 SQLite 데이터베이스라이브러리 v SQLiteDatabase ü 추가라이브러리 (android.database.sqlite.sqlitedatabase) ü

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드] Android UI 구현 학습목표 교육목표 Android application 구성요소 Activity Layout UI 설계 Linear Layout 구현 Android application 구성요소 (1) () Application 구성요소 AndroidManifest.xml Android application 구성요소 (2) 구성요소 기능 Activity

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

PowerPoint Presentation

PowerPoint Presentation 6 장 SQL (section 4-6) 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) 2-5 제약조건 SECTION 03 데이터조작어 (DML)

More information

Microsoft PowerPoint Python-DB

Microsoft PowerPoint Python-DB 순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 학습내용 데이터베이스 SQLite 데이터베이스 파이썬과데이터베이스연결 순천향대학교컴퓨터공학과 2 데이터베이스 (Database) 소개 데이터베이스 DBMS (DataBase Management System) 이라고도함 대용량의데이터를매우효율적으로처리하고저장하는기술 SQLite, 오라클, MySQL 등이있음

More information

MapView

MapView http://lomohome.com/316 by Geunwon,Mo (mokorean@gmail.com) Android 의 MapView (Google API) 정리하기. 원래하나은행스마트폰뱅킹의위치기반 (LBS) 지점찾기는 WebView 에서 Google Map API 를통하여구현이되어있었다. 아이폰에서는이게잘돌아가는데... 안드로이드에서는기계마다되는것도있고,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Application Framework 어플리케이션프레임워크 발표자 : 김준섭 이문서는나눔글꼴로작성되었습니다. 다운받기 목차 Application Framework. 1. 통지관리자 (Notification Manager) 2. 리소스관리자 (resource manager) 3. 레이아웃인플레이터매니저 (Layout Inflater Manager) Notification

More information

THE TITLE

THE TITLE Android System & Launcher Team 8 목차 Android 1) Android Feature 2) Android Architecture 3) Android 개발방법 4) Android Booting Process Dalvik 1) Dalvik VM 2) Dalvik VM Instance Application 1) Application Package

More information

슬라이드 1

슬라이드 1 Android Mobile Application Development Part 2 Agenda Part 1 Build Develop Environment Create new Project Composition of Project Simulate Application Part 2 User Interface Activity Toast Preference Log

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

슬라이드 1

슬라이드 1 사용자인터페이스 (II) 시작하면서 2 목차 리스트뷰 : 어댑터, 어댑터뷰, 대화창 메뉴 리스트뷰 - 어댑터 Adapter 4 배열, XML 파일, 데이터베이스에서다양한종류의값을읽어오는공통의인터페이스 선택위젯에게데이터를제공, 각데이터항목들을위젯내부에표시하는위젯클래스로의변홖수행 사용자인터페이스인뷰와데이터소스를연결 Data Source: Array, XML, Database

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

Microsoft PowerPoint App Fundamentals[Part2].pptx

Microsoft PowerPoint App Fundamentals[Part2].pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 Part 1 애플리케이션컴포넌트 액티비티와태스크 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 태스크는명시적으로정의 / 선언하는것이아니라, 주어진목적을위해 현재수행되고있는액티비티들의스택이다. 예를들어, 어떤액티비티가특정위치상의시가지지도를보여주고자한다하자. 해당액티비티는안드로이드에이미존재하는맵뷰어액티비티를실행

More information

슬라이드 1

슬라이드 1 Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능

More information

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx) w w w. g b t e c. c o. k r 6 안드로이드 App 적용하기 115 1. 안드로이드개요 모바일 OS 의종류 - 스마트폰 : 스마트폰운영체제탑재 애플의 IOS(iPhone OS) - 아이폰, 아이패드, 아이팟터치 구글의안드로이드 - Nexus, 갤럭시 A, S, 모토로이, 시리우스,... MS 의윈도우모바일 ( 윈도우폰 7) - 옴니아 2,

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Hello Android Jo, Heeseung Contents HelloAndroid program AVD 명칭과사용법안드로이드응용프로그램작성안드로이드프로젝트구성 2 처음만드는 [Hello Android] 프로그램 3 처음만드는 [Hello Android] 프로그램 이클립스메뉴 [File]-[New]-[Project] 를선택 [New Project] 창에서

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

50_1953.pdf

50_1953.pdf C h a p t e r 02 194 Part Mobile Apps 01 01 02 Chapter 02 195 03 04 196 Part 02 01 02 03 04 Chapter 02 197 05 06 07 08 198 Part 03 01 02 Chapter 02 199 03 04 05 06 200 Part 07 08 09 10 Chapter 02 201 04

More information

BLOB NULL Binary 데이터 값이존재하지않음 테이블의작성예 Create table contact_list( _id integer primary key autoincrement, name text not null, tel text not null default

BLOB NULL Binary 데이터 값이존재하지않음 테이블의작성예 Create table contact_list( _id integer primary key autoincrement, name text not null, tel text not null default 1. SQLite 의특징 - 오픈소스 - 최소한의라이브러리만으로동작 - 관리유저나설정파일등이불필요 - 원자성 (atomicity), 일관성 (consistency), 독립성 (isolation), 영속성 (durabitiy) 이라는데이터베이스에필요한특성을갖추고있다. - SQL92에서정의된명령어의대부분이용가능, 하나의데이터베이스가하나의파일에저장 2. 어플리케이션개발시

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java(  혹은   에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을 안드로이드설치및첫번째예제 안드로이드설치 안드로이드개발킷은안드로이드개발자사이트 (http://developer.android.com/) 에서다운로드받을수있으며현재 1.5 버전으로윈도우즈, 맥 OS X( 인텔 ), 리눅스플랫폼패키지가링크되어져있다. 안드로이드개발킷을설치하기위해서는다음과같은시스템환경이갖추어져있어야한다. 플랫폼 Windows Mac Linux 지원환경

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

슬라이드 1

슬라이드 1 17.1 데이터베이스트리거 17.2 DML 트리거 17.3 DML 트리거작성 17.4 DML 트리거관리 17.5 INSTEAD OF 트리거 17.6 NON-DML 트리거 17.1 데이터베이스트리거 데이터베이스트리거 (database trigger) 테이블에어떤조작이가해졌을때에미리지정해놓은처리를자동으로실행시키는블록 PL/SQL 블록으로작성, 오라클데이터베이스에저장

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

Microsoft PowerPoint - 02처음으로만드는(Ver 1.0)

Microsoft PowerPoint - 02처음으로만드는(Ver 1.0) 02. 처음으로만드는안드로이드응용프로그램 IT CookBook, 안드로이드프로그래밍 학습목표 안드로이드응용프로그램의기본적인작성법을익힌다. AVD 의명칭을배운다. 안드로이드프로젝트의구성을파악한다. Page 2 차례 Page 3 1. 처음만드는 [Hello Android] 프로그램 Page 4 1. 처음만드는 [Hello Android] 프로그램 [ 실습 2-1]

More information

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프 OpenCV 와함께하는컴퓨터비전프로그래밍캠프 Appx. 안드로이드 OpenCV 프로그래밍 Last Update: 2018/06/07 Visual C++ 영상처리프로그래밍 저자 황선규 / 공학박사 sunkyoo.hwang@gmail.com 모바일컴퓨터비전프로그래밍 목차 Android 개요 Android 개발환경구축 Android Studio 설치 OpenCV

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)

More information

12Àå PDF

12Àå PDF 547 CHAPTER 12 라이브폴더 10 장에서는안드로이드에서의 OpenGL 인터페이스에대해자세히설명했으며, 11 장에서 는안드로이드플랫폼에서애플리케이션의환경설정을관리하는방법을설명했다. 본 장에서는안드로이드플랫폼에서의또한가지고급주제인라이브폴더 live folder 에대해설명하겠다. 라이브폴더는안드로이드 SDK 1.5 버전부터도입되었으며, 개발자는라이브폴더를통해기기의기본시작화면

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2 Agenda 안드로이드악성코드분석 악성코드분석 안드로이드악성코드정적분석 APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$

More information

Design

Design Team 6 201060682 Valentin 200611450 강세용 200610118 김규수 이문서는 TimeSchedule System 을구현하기위핚기본적인아키텍쳐와구조에대해기술하였습니다. 가장핵심적인부분은 TimeSchedule 이며기본적인구조는, 교수는수업을개설하거나삭제핛수있으며학생은교수가개설핚수업을자싞의시갂표에등록핛수있다. 단학생의수업이다른수업과겹칠경우수업은학생의시갂표에등록되지않으며,

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 13. HTML5 위치정보와드래그앤드롭 SVG SVG(Scalable Vector Graphics) 는 XML- 기반의벡터이미지포맷 웹에서벡터 - 기반의그래픽을정의하는데사용 1999 년부터 W3C 에의하여표준 SVG 의장점 SVG 그래픽은확대되거나크기가변경되어도품질이손상되지않는다. SVG 파일에서모든요소와속성은애니메이션이가능하다. SVG 이미지는어떤텍스트에디터로도생성하고편집할수있다.

More information

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도 1. " 소스파일 " 과 " 리소스파일 " 에대하여 소스파일은우리가흔히알고있듯이프로그래밍언어를사용해서자신이만들고자하는프로그램을구현한파일입니다. 예전에작성된프로그램들은소스파일만으로이루어진프로그램도많았습니다. 하지만, 프로그램환경이점점더복잡해지고사용자인터페이스가다양해지면서인터페이스구성을서술식으로나열해서소스파일에표현하는것은한계가왔고작업효율을떨어트리게되어해결책이필요하게되었습니다.

More information

OOP 소개

OOP 소개 OOP : @madvirus, : madvirus@madvirus.net : @madvirus : madvirus@madvirus.net ) ) ) 7, 3, JSP 2 ? 3 case R.id.txt_all: switch (menu_type) { case GROUP_ALL: showrecommend("month"); case GROUP_MY: type =

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

슬라이드 1

슬라이드 1 인텐트, 서비스 시작하면서 2 목차 읶텐트 서비스 알림 방송수싞자 알람 인텐트 (Intent) 3 의도 또는 의향 이라는뜻일종의메시지전달메커니즘 컴포넌트간의사소통하는수단 예 ) 액션으로 Intent.ACTION_VIEW 를포함하는읶텐트읶경우 : 다른컴포넌트에게무엇읶가보여주는처리를요청함 독립적읶컴포넌트들을서로연결된하나의시스템으로구성해주는효과 구성요소 액션 :

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information