6 메 뉴.

Slides:



Advertisements
Similar presentations
Android Application. 최신버전 안드로이드 SDK 설치 1. SDK 설치 접속.
Advertisements

All Rights Reserved, Copyright© UBIVELOX co.,Ltd LG U+ 과금 API 소개 Version1.0 Authorubivelox Date21-Feb
Application Create Android Side. Application 설계 시 꼭 지켜야 할 5 가지 UI 쓰레드는 UI 만 처리하게 하자 사용자를 방해하지 말라. 다양한 화면 해상도를 지원하라 –Absolutelayout 을 사용하지 말아라 ( 고정값 )
제 2 강 프로젝트 구성과 View 안드로이드 앱 개발 강좌. 목 차목 차목 차목 차 목 차목 차목 차목 차 안드로이드 프로젝트 구성 2 에뮬레이터 사용법 3 버전과 screen size 4 5 Hello World 앱 작성하기 1 View 와 ViewGroup.
삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Android Android-UI (DMI) Kang GiHoon. DMI--Kang Gihoon Android UI.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
어서와 Java는 처음이지! 제3장선택과 반복.
14. 위피 게임: 가위바위보 게임 초기에 점수=0 처음 이기면 10 점 그 다음부터 이기면 점수=현재 점수*2 지면
CHAP 8. 그래픽.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
액션바와 네비게이션
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
명품 C++ 8장 상속.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
CHAP 19. 구글맵.
Contents 학습목표 지금까지 배운 내용을 총정리하며 개발 툴에 대한 고급 사용법을 익힌다. 학습내용 개발툴.
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
Contents 학습목표 Canvas와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개한다. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에 대해서도 알아본다. 학습내용 캔버스 그리기 객체 쉐이더 그외.
Java Seminar 6.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
J2ME(Java 2 Micro Edition) 무선 장치용 UI의 핵심 컴포넌트
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
UNIT 07 그림책 만들기 1/2 로봇 SW 콘텐츠 연구원 조용수.
제7장 제어구조 I – 식과 문장.
2. 자바 애플릿.
안드로이드 개요 2005년 휴대폰 소프트웨어 개발사인 Android를 구글이 인수 2007년 11월 오픈소스로 공개
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
실전 사운드 처리 프로그래밍 Lecture #11.
명품 Java Programming.
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
DataScience Lab. 박사과정 김희찬 (월)
CHAP 8. 그래픽.
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
객체지향적인 프로그래밍에 대한 이해 클래스와 객체의 개념에 대한 이해
주소록 프로그램.
CHAP 6. 이벤트 처리.
CHAP 14. 데이터베이스와 환경 설정.
CHAP 13. 네트워크.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
' Strategic Alliance Partner with '
CHAP 3. 첫번째 애플리케이션.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
CHAP 13. 서비스와 방송 수신자.
4장 - PHP의 표현식과 흐름 제어-.
JAVA WINDOW PROGRAMMING
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
자바 5.0 프로그래밍.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
CHAP 5. 레이아웃.
제 4 장 클래스 작성 Lab 4- 2.
Chapter 4 클래스 작성.
자바 프로그래밍 Thread를 이용한 애니메이션 서울호서전문학교 게임프로그램개발과.
CHAP 11. 리소스와 보안.
CHAP 5. 메뉴와 대화상자.
Choi Younghwan CSE HUFS
Presentation transcript:

6 메 뉴

학습목표 메뉴는 사용자의 명령을 받아들이는 가장 기본적인 장치며, 옵션 메뉴와 컨 텍스트 메뉴를 작성 및 출력하고 메뉴를 통해 프로그램의 현재 상태를 표시 지금까지 배운 내용을 총정리하며 개발 툴에 대한 고급 사용법을 익힌다. 내용 메 뉴 개발툴

1. 메 뉴 옵션 메뉴 안드로이드가 지원하는 메뉴는 세가지 종류가 있다. 옵션메뉴 : 주 메뉴. 최대 6개까지 가질 수 있으며 그 이상은 More 항목에 배치된다. 아이콘은 달 수 있지만 상태는 가지지 못한다. 컨텍스트 메뉴 : 화면을 일정한 시간 동안 누르고 있으면(Hold Down) 화면 중앙에 나타나며, 아이콘을 달 수 없지만 상태를 가진다. 서브 메뉴 : 메뉴 항목을 가지는 일종의 팝업이며 화면 한 가운데에 나타나며, 더 많은 항목을 넣고 싶을 때 옵션 메뉴나 컨텍스트 메뉴의 세부 메뉴로 작성한다.

1. 메 뉴 옵션 메뉴 액티비티의 다음 메서드에서 메뉴를 생성한다. boolean onCreateOptionsMenu (Menu menu) 메뉴가 열릴 때 다음 메서드가 호출되며 여기서 메뉴의 상태를 관리한다. boolean onPrepareOptionsMenu (Menu menu) 메뉴가 선택될 때 다음 메서드가 호출되며 여기서 메뉴의 선택을 처리한다. boolean onOptionsItemSelected (MenuItem item)

1. 메 뉴 옵션 메뉴(실습예제) Input/OptionMenu.java case 2: public class OptionMenu extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView MyText = new TextView(this); MyText.setText("메뉴 키를 누르세요."); setContentView(MyText); } public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuItem item=menu.add(0,1,0,"짜장"); item.setIcon(R.drawable.icon); item.setAlphabeticShortcut('a'); menu.add(0,2,0,"짬뽕").setIcon(R.drawable.icon); SubMenu etc = menu.addSubMenu("기타"); etc.add(0,3,0,"우동"); etc.add(0,4,0,"만두"); return true; public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: Toast.makeText(this,"짜장은 달콤",Toast.LENGTH_ SHORT).show(); case 2: Toast.makeText(this,"짬뽕은 매워 ",Toast.LENGTH_SHORT).show(); return true; case 3: Toast.makeText(this,"우동은 시원해 case 4: Toast.makeText(this,"만두는 공짜야 } return false;

1. 메 뉴 XML로 메뉴 정의하기 메뉴는 프로그램의 동작을 정의라 하기보다는 일종의 디자인이므로 XML로 작성하는 것이 훨씬 더 쉽고 관리하기 좋다. Input/menu.xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/jjajang" android:title="짜장" android:icon="@drawable/icon" android:alphabeticShortcut="a" /> <item android:id="@+id/jjambbong" android:title="짬뽕" <item android:id="@+id/submenu" android:title="기타"> <menu> <item android:id="@+id/udong" android:title="우동" <item android:id="@+id/mandoo" android:title="만두" </menu> </item>

1. 메 뉴 XML로 메뉴 정의하기 Active 클래스의 getMenuInflater 메소드를 실행하여 MenuInflater 객체를 얻는다 MenuInflater 객체의 inflate 메소드를 실행하여 menu.xml 을 읽어들인다. Input/OptionMenu2.java public class OptionMenu extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView MyText = new TextView(this); MyText.setText("메뉴 키를 누르세요."); setContentView(MyText); } public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: Toast.makeText(this,"짜장은 달콤",Toast.LENGTH_ SHORT).show();

1. 메 뉴 체크 메뉴 항목 메뉴는 기본적으로 명령을 입력 받는 장치이지만 체크나 라디오 그룹 등을 통해 프로그 램의 현재 상태를 보여준다. checkableBehavior 속성으로 관리 방법 및 모양을 결정한다. checkableBehavior 속성 설 명 none 체크를 할 수 없는 단독 명령이다. all 모든 항목을 개별적으로 선택할 수 있으며 항목 옆에 네모난 체크 박스가 표시된다. single 그룹에 속한 항목중 하나만 배타적으로 선택할 수 있으며 항목 옆에 동그란 버튼이 표시된다.

1. 메 뉴 체크 메뉴 항목 (실습예제) <?xml version="1.0" encoding="utf-8"?> Input/menucheck.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ff0000" android:text="Button" android:textSize="20px" /> </LinearLayout>

1. 메 뉴 체크 메뉴 항목 (실습예제) menu/menucheck.xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/submenu" android:title="Sub Menu"> <menu> <group android:id="@+id/checkable_group" android:checkableBehavior="all"> <item android:id="@+id/bigfont" android:title="BigFont" /> </group> <group android:id="@+id/exclusive_checkable_group" android:checkableBehavior="single"> <item android:id="@+id/red" android:title="Red" android:checked="true" /> <item android:id="@+id/green" android:title="Green" /> <item android:id="@+id/blue" android:title="Blue" /> </menu> </item>

1. 메 뉴 체크 메뉴 항목 (실습예제) Input/MenuCheak.java public class MenuCheck extends Activity { Button mBtn; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menucheck); mBtn = (Button)findViewById(R.id.button); } public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menucheck,menu); return true; public boolean onPrepareOptionsMenu(Menu menu) { if (mBtn.getTextSize() == 40) { menu.findItem(R.id.bigfont).setChecked(true); } else { menu.findItem(R.id.bigfont).setChecked(false); int color = mBtn.getTextColors().getDefaultColor(); if (color == Color.RED) { menu.findItem(R.id.red).setChecked(true); if (color == Color.GREEN) { menu.findItem(R.id.green).setChecked(true); if (color == Color.BLUE) { menu.findItem(R.id.blue).setChecked(true); public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.bigfont: if (item.isChecked()) { mBtn.setTextSize(20); } else { mBtn.setTextSize(40); } return true; case R.id.red: mBtn.setTextColor(Color.RED); case R.id.green: mBtn.setTextColor(Color.GREEN); case R.id.blue: mBtn.setTextColor(Color.BLUE); return false;

1. 메 뉴 체크 메뉴 항목 (실습예제 결과)

1. 메 뉴 컨텍스트 메뉴 특정 뷰나 항목에 필요한 명령들만 모아 놓은 메뉴. 컨텍스트 메뉴를 달고 싶은 뷰는 다음 메서드로 등록한다. void Activity.registerForContextMenu (View view) 생성 및 선택 시 다음 메서드가 호출된다. void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 컨텍스트 메뉴의 항목을 선택하면 다음 메서드를 호출된다. boolean onContextItemSelected (MenuItem item) 뷰의 컨텍스트 메뉴를 생성할 때는 다음 메서드가 호출된다. void onCreateContextMenu (ContextMenu menu)

1. 메 뉴 컨텍스트 메뉴(실습예제) <?xml version="1.0" encoding="utf-8"?> layout/contextmenu.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <EditText android:id="@+id/edittext" android:text="EditText" <exam.Input.MyImage android:id="@+id/myimage" android:src="@drawable/childs" </LinearLayout>

1. 메 뉴 컨텍스트 메뉴(실습예제) Input/ContextMenu.java if (v == mEdit) { public class ContextMenuTest extends Activity { Button mBtn; EditText mEdit; MyImage mImage; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mBtn = (Button)findViewById(R.id.button); registerForContextMenu(mBtn); mEdit = (EditText)findViewById(R.id.edittext); registerForContextMenu(mEdit); mImage = (MyImage)findViewById(R.id.myimage); registerForContextMenu(mImage); } public void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); if (v == mBtn) { menu.setHeaderTitle("Button Menu"); menu.add(0,1,0,"Red"); menu.add(0,2,0,"Green"); menu.add(0,3,0,"Blue"); if (v == mEdit) { menu.add(0,4,0,"번역하기"); menu.add(0,5,0,"필기 인식"); } public boolean onContextItemSelected (MenuItem item) { switch (item.getItemId()) { case 1: mBtn.setTextColor(Color.RED); return true; case 2: mBtn.setTextColor(Color.GREEN); case 3: mBtn.setTextColor(Color.BLUE); case 4: Toast.makeText(this,"번역했다.",Toast.LENGTH_SHORT).show(); case 5: Toast.makeText(this,"필기 인식했다.",Toast.LENGTH_SHORT).show(); case 100: Toast.makeText(this,"회전했다 치고.",Toast.LENGTH_SHORT).show(); case 101: Toast.makeText(this,"크기 변경 했다 치고.",Toast.LENGTH_SHORT).show();

1. 메 뉴 컨텍스트 메뉴(실습예제) return true; } class MyImage extends ImageView { public MyImage(Context context) { super(context); public MyImage(Context context, AttributeSet attrs) { super(context, attrs); public void onCreateContextMenu(ContextMenu menu) { super.onCreateContextMenu(menu); menu.setHeaderTitle("MyImage Menu"); menu.add(0,100,0,"이미지 회전"); menu.add(0,101,0,"크기 변경");

2. 개발툴 기억력 게임 안드로이드의 기본적인 문법 정리를 위한 실습 예제. Input/MemoryPower // 액티비티 : 게임 뷰를 담는 껍데기. public class MemoryPower extends Activity { GameView gv; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gv = new GameView(this); setContentView(gv); } //도형 하나에 대한 정보 class Shape { final static int RECT = 0; final static int CIRCLE = 1; final static int TRIANGLE = 2; int what; int color; Rect rt; // 게임 뷰 : 실질적인 메인이다. class GameView extends View { // 그리기 모드. 빈화면 또는 도형 출력 final static int BLANK = 0; final static int PLAY = 1; // 게임 진행 속도 final static int DELAY = 1500; // 현재 그리기 모드 int status; // 생성된 도형의 목록 ArrayList<Shape> arShape = new ArrayList<Shape>(); Random Rnd = new Random(); Activity mParent; public GameView(Context context) { super(context); mParent = (Activity)context; // 빈 화면으로 시작하고 잠시 후에 게임 시작 status = BLANK; mHandler.sendEmptyMessageDelayed(0,DELAY); } public void onDraw(Canvas canvas) { // 검정색 배경으로 지운다. 빈 화면이면 지우기만 하고 리턴 canvas.drawColor(Color.BLACK); if (status == BLANK) { return; // 도형 목록을 순회하면서 도형 정보대로 출력한다. int idx; for (idx = 0; idx < arShape.size(); idx ++) { Paint Pnt = new Paint(); Pnt.setColor(arShape.get(idx).color); Rect rt = arShape.get(idx).rt; switch (arShape.get(idx).what) { case Shape.RECT:

2. 개발툴 기억력 게임. canvas.drawRect(rt, Pnt); break; case Shape.CIRCLE: canvas.drawCircle(rt.left + rt.width()/2, rt.top + rt.height()/2, rt.width()/2, Pnt); case Shape.TRIANGLE: Path path = new Path(); path.moveTo(rt.left + rt.width()/2, rt.top); path.lineTo(rt.left, rt.bottom); path.lineTo(rt.right, rt.bottom); canvas.drawPath(path, Pnt); } public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { int sel; sel = FindShapeIdx((int)event.getX(), (int)event.getY()); // 빈 바닥을 찍었으면 무시한다. if (sel == -1) { return true; // 마지막 추가된 도형을 제대로 찍었으면 다음 단계로 진행. // 빈 화면 잠시 보여준 후 새 도형 추가 if (sel == arShape.size()-1) { status = BLANK; invalidate(); mHandler.sendEmptyMessageDelayed(0,DELAY); // 엉뚱한 도형을 찍었으면 질문 후 게임 종료 또는 재시작 } else { new AlertDialog.Builder(getContext()) .setMessage("재미있지! 또 할래?") .setTitle("게임 끝") .setPositiveButton("함더",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { arShape.clear(); status = BLANK; invalidate(); } }) .setNegativeButton("안해",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { mParent.finish(); .show(); return true; return false;

2. 개발툴 기억력 게임. void AddNewShape() { Shape shape = new Shape(); // 새로운 도형을 목록에 추가한다. void AddNewShape() { Shape shape = new Shape(); int idx; boolean bFindIntersect; Rect rt = new Rect(); // 기존 도형과 겹치지 않는 새 위치를 찾는다. for (;;) { // 크기는 32, 48, 64 중 하나 선택 int Size = 32 + 16 * Rnd.nextInt(3); // 위치는 난수로 선택 rt.left = Rnd.nextInt(getWidth()); rt.top = Rnd.nextInt(getHeight()); rt.right = rt.left + Size; rt.bottom = rt.top + Size; // 화면을 벗어나면 안된다. if (rt.right > getWidth() || rt.bottom > getHeight()) { continue; } // 기존 도형 순회하며 겹치는지 조사한다. bFindIntersect = false; for (idx = 0; idx < arShape.size(); idx ++) { if (rt.intersect(arShape.get(idx).rt) == true) { bFindIntersect = true; // 겹치지 않을 때 확정한다. 겹치면 계속 새 위치 선정한다. if (bFindIntersect == false) { break; // 새 도형 정보 작성. 모양, 색상 등을 난수 선택한다. shape.what = Rnd.nextInt(3); switch (Rnd.nextInt(5)) { case 0: shape.color = Color.WHITE; break; case 1: shape.color = Color.RED; case 2: shape.color = Color.GREEN; case 3: shape.color = Color.BLUE; case 4: shape.color = Color.YELLOW; } shape.rt = rt; arShape.add(shape); // x, y 위치의 도형 번호를 찾는다. 도형이 없는 위치면 -1 리턴 int FindShapeIdx(int x, int y) { int idx;

2. 개발툴 기억력 게임. for (idx = 0; idx < arShape.size(); idx ++) { if (arShape.get(idx).rt.contains(x, y)) { return idx; } return -1; // 새 도형을 추가하고 화면을 다시 그린다. 시간 딜레이를 주기 위해 핸들러를 사용했다. Handler mHandler = new Handler() { public void handleMessage(Message msg) { AddNewShape(); status = PLAY; invalidate(); String title; title = "MemoryPower - " + arShape.size() + " 단계"; mParent.setTitle(title); };

2. 개발툴 디버깅 디버깅 하기 위해서는 매니페스트에 다음 플래그를 지정한다. <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> 매니페스트에 debuggable 속성을 켜야 사용할 수 있다. Ctrl + Shift + B를 누르면 중단점이 설정되며, 다시한번 설정하면 중단점이 토글된다. 디버깅을 위해 Debug 퍼스펙티브로 전환하겠다는 것을 알리는 메시지 (퍼스펙티브 : 뷰의 집합)

2. 개발툴 디버깅 메시지에 Yes 응답 후 Remember my decision 옵션 선택하면 다은부터 퍼스펙티브를 자 동으로 전환하며, 다음과 같이 개발 환경의 뷰가 완전히 재배치 된다.

2. 개발툴 디버깅 메뉴에서 디버깅 관련 명령어 단축키. F6키를 눌러 indShapeIdx 메서드 호출문까지 실행 후 F5를 눌러 메서드 안쪽까지 추적 해 들어가보면 다음 그림과 같다. 단축키 설 명 F5 메서드 안으로 추적해 들어간다. F6 다음 명령문을 실행한다. F7 메서드의 끝까지 실행하고 리턴한다. F8 다음 중단점까지 실행한다. Ctrl + R 커서가 있는 지점까지 실행한다. Ctrl + F2 디버깅을 중단한다.

2. 개발툴 DDMS DDMS(Dalvik Debug Monitor Service)는 ADT와 함께 설치되는 플러그인이며 여러 가지 기능을 제공하는 디버깅 툴이다. 포드 포워딩, 화면 캡쳐, 스레드 및 힙 상태 보기, 장비의 파일 관리, 디버그 로그 보기, 통화 및 문자 메시지 에뮬레이션 등 포함

2. 개발툴 DDMS Png파일로 저장 가능 Input 현재 스테드 상태 예제

2. 개발툴 로 그 로그는 시스템이나 응용 프로그램의 동작에 대한 상세한 기록이다. 시스템은 장비에서 발생하는 문제점 로그를 남기며, 응용 프로그램은 디버깅이나 경고, 실행 흐름 추적 등을 위해 수시로 로그를 남긴다. 로그는 디버깅에 비해 항상 출력되는 실시간으로 프로그램의 상태를 출력한다는 점에서 유용하다. 로그를 출력할 때는 다음과 같은 메서를 사용한다. static int Log.d (String tag, String msg [, Throwable tr]) static int Log.e(String tag, String msg [, Throwable tr]) static int Log.w(String tag, String msg [, Throwable tr]) static int Log.i(String tag, String msg [, Throwable tr]) static int Log.v(String tag, String msg [, Throwable tr])

2. 개발툴 로 그(실습예제) 버튼을 클릭하면 로그를 남기게 된다. Input/LogTest.java public class LogTest extends Activity { private static final String TAG = "LogTest"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.logtest); Log.v(TAG,"onCreate"); findViewById(R.id.btn1).setOnClickListener(mClickListener); findViewById(R.id.btn2).setOnClickListener(mClickListener); } public void onDestroy() { super.onDestroy(); Log.v(TAG,"onDestroy"); Button.OnClickListener mClickListener = new Button.OnClickListener() { public void onClick(View v) { MediaPlayer player; switch (v.getId()) { case R.id.btn1: Log.v(TAG,"First Button Pressed"); break; case R.id.btn2: Log.v(TAG,"Second Button Pressed"); }; 버튼을 클릭하면 로그를 남기게 된다.

2. 개발툴 로 그(실습예제)

2. 개발툴 adb adb(Android Debug Bridge) : 명령행에서 장비의 상태를 관리하는 툴이다. adb기능이 대부분이 DDMS에서도 사용이 가능하므로 자주 사용하지 않는다. adb는 다음 3가지 요소가 협력적으로 동작하여 개발 컴퓨터와 장비간 통신 수행한다. 클라이언트 : 개발 컴퓨터에서 실행되는 관리 툴, adb자체가 대표적이며 이 외에 ADT플러그인이 나 DDMS도 클라이언트로 동작 서버 : 개발 컴퓨터에서 백그라운드로 실행되며 클라이언트와 데몬을 중계하는 역할을 한다. 데몬 : 장비에서 백그라운드로 동작하며 클라이언트로부터 전달된 명령을 장비에서 수행한다. 연결 장비가 여러 개이면 어떤 장비에 대해 명령을 수행할 것인지를 지정해야 하는데 이때는 다음 세 개의 플래그 중 하나를 사용한다. 플래그 설 명 -d 실장비에 대해 명령을 수행한다. 실장비가 두 개 이상 연결되어 있으면 에러 처리된다. -e 에뮬레이터에 대해 명령을 수행한다. 에뮬레이터가 두 개 이상 연결되어 있으면 에러 처리된다. -s 일련번호 명령을 수행할 장비의 일련번호를 지정한다. 해당 일련번호의 장비가 존재하지 않으면 에러 처리된다.