Contents 학습목표 Canvas와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개한다. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에 대해서도 알아본다. 학습내용 캔버스 그리기 객체 쉐이더 그외.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

이벤트 처리  GUI 운영체제는 이벤트 드리븐으로 동작한다.  사용자와 상호 작용하려면 이벤트를 매끄럽게 처리하는 기술이 필요하다.  안드로이드에는 이벤트를 처리하는 다양한 방법이 있다.  팀 작업을 위해 모든 방법을 숙지해야 하며 자바의 고급 문법이 사용된다.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
CHAP 3. 첫번째 애플리케이션 예제 #1: text 문자를 출력 예제 #2: UI를 XML로 표현 – main.xml
6 메 뉴.
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
CHAP 8. 그래픽.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
Android Application 애플리케이션 위젯.
CHAP 19. 구글맵.
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Power Java 제3장 이클립스 사용하기.
5강. Servlet 본격적으로 살펴보기-I 프로젝트 만들기 doGet() doPost()
최윤정 Java 프로그래밍 클래스 상속 최윤정
제4강 노티피케이션,메뉴,고급위젯 안드로이드 앱 개발 강좌.
Java Seminar 6.
첫 번째 애플리케이션 첫째 마당 - Chapter 03 Do It! 안드로이드 앱 프로그래밍 Jun. 2013
Ch.07-5 xml-rpc 사용하기 김상엽.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
Application Framework 어플리케이션 프레임워크 발표자 : 김 준 섭
08. 파일 처리 제목. 08. 파일 처리 제목 파일 처리 방식을 익힌다. SD카드의 파일 처리 방식을 배운다. 커스텀뷰의 작성법을 살펴본다.
어댑터뷰 리스트 뷰, 그리드 뷰, 스피너, 갤러리 등을 묶어 어댑터 뷰라 부름
Lesson 5. 레퍼런스 데이터형.
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
7주차 Android Application.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
CHAP 8. 그래픽.
CHAP 6. 이벤트 처리.
UNIT 05 신문 만들기 로봇 SW 콘텐츠 연구원 조용수.
CHAP 14. 데이터베이스와 환경 설정.
CHAP 13. 네트워크.
CHAP 12. 리소스와 보안.
13. 연산자 오버로딩.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
인터넷응용프로그래밍 JavaScript(Intro).
CHAP 3. 첫번째 애플리케이션.
CHAP 5. 레이아웃.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
CHAP 13. 서비스와 방송 수신자.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
자바 5.0 프로그래밍.
JA A V W. 06.
CHAP 5. 레이아웃.
CHAP 21. 전화, SMS, 주소록.
11. 어댑터뷰 제목. 11. 어댑터뷰 제목 리스트뷰와 그리드뷰 활용법을 배운다. 갤러리와 스피너의 사용법을 익힌다.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
05. 그래픽 빨간색 사각형 그리기 그래픽 그리기 발 표 자 : 07 정 경 오.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
구조체(struct)와 공용체(union)
9 브라우저 객체 모델.
CHAP 11. 리소스와 보안.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
CHAP 5. 메뉴와 대화상자.
6 객체.
20 XMLHttpRequest.
Presentation transcript:

Contents 학습목표 Canvas와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개한다. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에 대해서도 알아본다. 학습내용 캔버스 그리기 객체 쉐이더 그외 출력

5.4.1. 토스트 간단한 메시지 박스, 소리, 진동, 불빛, 시스템 로그기록 등 모두 출력. 토스트 : 짧은 문자열을 보여주는 작은 팝업 대화상자로 디버깅, 학습용으로 아주 유용하다. 변수값 수시로 찍을때는 메시지가 편리 토스트 생성 static Toast makeText(Context context, int resID, int duration) static Toast makeText(Context context, CharSequence text, int duration) // 컨텍스트로는 액티비티를 전달하므로 주로 this이며 이벤트 리스너 객체 안일 때는 this가 리스너를 칭하므로 액티비티명.this 로 지정한다. // 세번째 인수는 LENGTH_SHORT, LENGTH_LONG중 하나를지정 생성후 동작이나 배치 옵션을 변경할 수 있다. void setGravity (int gravity, int xOffset, int yOffset) void setMargin (flat horizontalMargin, float verticalMargin) void setText(CharSequence s) void setDuration (int duration) setView (View view)

5.4.1. 토스트

5.4.1. 토스트 C05_Toast.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/shortmsg" android:layout_height="wrap_content" android:text="짧은 메시지" /> android:id="@+id/longmsg" android:text="긴 메시지" C05_Toast.xml <Button android:id="@+id/count1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="카운트 연속 출력" /> android:id="@+id/count2" android:text="카운트 연속 출력2" android:id="@+id/customview" android:text="커스텀 뷰 표시" </LinearLayout>

5.4.1. 토스트 C05_Toast.java public class MainActivity extends Activity { Toast mToast = null; int count; String str; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.shortmsg).setOnClickListener(mClickListener); findViewById(R.id.longmsg).setOnClickListener(mClickListener); findViewById(R.id.count1).setOnClickListener(mClickListener); findViewById(R.id.count2).setOnClickListener(mClickListener); findViewById(R.id.customview).setOnClickListener(mClickListener); } Button.OnClickListener mClickListener = new Button.OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.shortmsg: Toast.makeText(MainActivity.this, "잠시 나타나는 메시지", Toast.LENGTH_SHORT).show(); break; C05_Toast.java case R.id.longmsg: Toast.makeText(MainActivity.this, "조금 길게 나타나는 메시지", Toast.LENGTH_LONG).show(); break; case R.id.count1: str = "현재 카운트 = " + count++; if (mToast != null) { mToast.cancel(); } mToast = Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT); mToast.show(); break; case R.id.count2: if (mToast == null) { } else { mToast.setText(str); } mToast.show(); break; case R.id.customview: LinearLayout linear = (LinearLayout)View.inflate(MainActivity.this, R.layout.activity_main, null); Toast t2 = new Toast(MainActivity.this); t2.setView(linear); t2.show(); } }};}

5.4.2. 비프음 사운드는 이벤트의 발생 여부나 코드의 흐름을 분석하는데 유용하다. 디버깅은 빈번히 발생하는 이벤트를 확인하기에 번거롭지만 사운드는 흐름을 계속 유지 할 수 있다. MediaPlayer : 동영상 재생, 스트리밍까지 지원하므로 소리를 내는 단순한 비프음으로는 적당하지 않다. 비프음은 SoundPool, AudioManager 클래스면 충분하다. 안드로이드 지원 포멧 : wav, mp3, ogg res/raw 폴덜 : 재생할 소리 파일을 둔다.

5.4.2. 비프음 SoundPool : 음원파일을 리소스 폴더에 복사한 후 SoundPool 객체의 load 메소드가 미리 읽어두고 play 메소드로 재생을 한다. 여러 소리를 한번에 낼수도 있고 구형 장비에서 소리가 두 번씩 재생되기도 함. SoundPool (int maxStreams, int streamType, int srcQuality) int play (int soundID, float leftVolume, float rightVolume, int priority, int loop,float rate) AudioManager : 원래 볼륨 조절이나 벨 모드 등을 조정하는 관리 클래스. 시스템이 미리 정의해 노은 소리 재생. 시스템 설정에 따라 소리가 나지 않을 수도 있다.

5.4.2. 비프음 C05_Beep.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/play1" android:layout_height="wrap_content" android:text="SoundPool" /> android:id="@+id/play2" android:text="AudioManager" </LinearLayout>

5.4.2. 비프음 C05_Beep.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/play1" android:layout_height="wrap_content" android:text="SoundPool" /> android:id="@+id/play2" android:text="AudioManager" </LinearLayout>

5.4.2. 비프음 C05_Beep.java public class C05_Beep extends Activity { SoundPool mPool; int mDdok; AudioManager mAm; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c05_beep); mPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); mDdok = mPool.load(this, R.raw.ddok, 1); mAm = (AudioManager)getSystemService(AUDIO_SERVICE); findViewById(R.id.play1).setOnClickListener(mClickListener); findViewById(R.id.play2).setOnClickListener(mClickListener); } C05_Beep.java Button.OnClickListener mClickListener = new Button.OnClickListener() { public void onClick(View v) { MediaPlayer player; switch (v.getId()) { case R.id.play1: mPool.play(mDdok, 1, 1, 0, 0, 1); break; case R.id.play2: mAm.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD); } };

5.4.2. 비프음 사운드 파일을 열 때는 다음 정적 메서드를 호출한다. Static MediaPlayer creat (Context context, int resid) 인수로는 켄텍스트와 리소스 ID를 전달한다. 리소스 파일이 raw 폴더에 저장되므로 ID는 통상 R.raw.id식으로 부여된다. 다음 메서드로 재생 및 중지를 한다. public void start () – 비동기 방식으로 동작 public void stop () public void seekTo (int msec) public void pause ()

5.4.3. 진동 진동 : 사용자에게 사건의 발생을 알려주는 중요 수단. 진동 기능은 Vibrator 시스템 서비스에 의해 제공. Object Activity.getSystemService (String name) void vibrate (long milliseconds) void vibrate (long[] pattern, int repeat) void cancel () 진동 시간 1/1000초로 지정가능 진동의 패턴을 정수 배열로 정의한 후 반복 재생 가능 (배열 홀수 번호는 대기 시간, 짝수번호는 진동할 시간) repeat : 배열상의 진동 시작 위치를 지정 0이면 처음부터 반복. -1이면 반복하지 않음. cancel : 진동 중지

5.4.3. 진동 진동은 장비의 특정 부품을 사용하는 기능이므로 사용하겠다는 선언 퍼미션(Permission)을 매니페스트에 요청해야 한다. 진동기능을 사용하려면 VIBRATE 퍼미션이 필요하다. AndroidManifest.xml에 꼭 선언해야 한다. <uses-permission android:name="android.permission.VIBRATE"/> </manifest>

5.4.2. 비프음 C05_Vibrate.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" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:text="버튼을 누르면 진동합니다." /> <Button android:id="@+id/btnvibrate1" android:onClick="mOnClick" android:text="한번 진동" C05_Vibrate.xml <Button android:id="@+id/btnvibrate2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="mOnClick" android:text="계속 진동" /> android:id="@+id/btnvibratestop" android:text="진동 중지" </LinearLayout>

5.4.2. 비프음 C05_Vibrate..java public void mOnClick(View v) { public class C05_Vibrate extends Activity { Vibrator mVib; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c05_vibrate); mVib = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); } protected void onDestroy() { super.onDestroy(); mVib.cancel(); C05_Vibrate..java public void mOnClick(View v) { switch (v.getId()) { case R.id.btnvibrate1: mVib.vibrate(500); break; case R.id.btnvibrate2: mVib.vibrate(new long[] {100, 50 , 200, 50 }, 0); case R.id.btnvibratestop: mVib.cancel(); }