Presentation is loading. Please wait.

Presentation is loading. Please wait.

Application Framework 어플리케이션 프레임워크 발표자 : 김 준 섭

Similar presentations


Presentation on theme: "Application Framework 어플리케이션 프레임워크 발표자 : 김 준 섭"— Presentation transcript:

1 Application Framework 어플리케이션 프레임워크 발표자 : 김 준 섭
발표자 : 김 준 섭 이 문서는 나눔글꼴로 작성되었습니다. 다운받기

2 Application Framework.
목차 Application Framework. 통지 관리자(Notification Manager) 리소스 관리자 (resource manager) 레이아웃 인플레이터 매니저 (Layout Inflater Manager)

3 Notification Manager

4 Notification Manager. 개요 주요 기능 설명 사용 예제

5 Notification (int icon, CharSequence tickerText, long when)
통지관리자(Notification Manager) 개요 Notification Manager. Notification? Notification (int icon, CharSequence tickerText, long when) Icon tickerText

6 Notification Manager. 2. 통지관리자(Notification Manager) 주요 기능 설명
Main functions.  필드  설명   number  통지 아이콘에 겹쳐서 출력될 숫자를 지정한다. 예를 들어 새로운 메시지가 10개 도착했으면 아이콘과 같이 10이라는 숫자가 표시된다.   sound  통지와 함께 출력할 소리를 Uri객체로 지정한다.   vibrate  진동방식을 지정한다. 진동할 시간과 멈출 시간을 배열로 전달함으로써 진동의 패턴을 지정한다.   ledARGB  불빛의 색상을 지정한다.    lenOnMs, lefOffMs  LED를 켤 시간과 끌 시간을 1/1000초 단위로 지정한다.  defaults  디폴트로 취할 통지 전달 방식을 지정한다.   flags  통지의 동작 방식을 지정한다. 

7 Notification Manager. Context Context – 통지를 발생시킨 주체와 제목
Main functions. Context Context – 통지를 발생시킨 주체와 제목 CharSequence contentTitle – 메시지 큰글씨 CharSequence contentText – 메시지 텍스트 PendingIntent contentIntent – 통지 뷰를 탭했을 때 호출할 인텐트 PendingIntent 클래스는 인텐트를 래핑하며 다른 응용프로그램으로 전달하여 실행 권한을 준다는 점에서 보통의 인텐트와 다르다. 생성자가 따로 정의되어 있지 않으므로 아래 세개의 정적 메소드 중 하나로 생성한다. PendingIntent getActivity (Context context, int requestCode, Intent intent, int flags) PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags) PendingIntent getService (Context context, int requestCode, Intent intent, int flags) intent는 사용자가 통지 객체를 탭했을 때의 동작을 지정한다. 주로 Activity를 띄우는데 이경우 인텐트에는 FLAG_ACTIVITY_NEW_TASK 플래그를 지정해야 한다. void setLastestEventInfo (Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent) PendingIntent

8 getSystemService (NOTIFICATION_SERVICE)
2. 통지관리자(Notification Manager) 주요 기능 설명 Notification Manager. Main functions. 통지 객체가 준비되었으면 통지관리자로 등록한다. 통지관리자는 시스템이 제공하는 서비스이므로 객체를 직접 생성할 필요없이 아래 메소드로 구한다. getSystemService (NOTIFICATION_SERVICE) 통지관리자는 아래 세개의 메소드를 제공한다. void notify (int id, Notification notification) void cancel (int id) void cancelAll()

9 Notification Manager. 3. 통지관리자(Notification Manager) 사용 예제
NapAlarm.java public class NapAlarm extends Activity {      static final int NAPNOTI = 1;      NotificationManager mNotiManager;     /** Called when the activity is first created. */     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                  // 통지관리자를 가져온다.         mNotiManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);                 Button btn = (Button)findViewById(R.id.start);         btn.setOnClickListener(new Button.OnClickListener() {             public void onClick(View v) {                 Toast.makeText(NapAlarm.this, "안녕히 주무세요", 0).show(); . .                               // 잠시 후에 실행하게 함.                 v.postDelayed(new Runnable() {                     public void run() {                         // 상단 상태란에 나타날 메시지를 지정한다.                         Notification noti = new Notification(R.drawable.icon, "일어나세요", System.currentTimeMillis());                         noti.defaults |= Notification.DEFAULT_SOUND;                         noti.flags |= Notification.FLAG_INSISTENT;              //사용자가 통지를 탭 했을때 출력할 창을 설정한다.                         Intent intent = new Intent(NapAlarm.this, NapEnd.class);                         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                         PendingIntent content = PendingIntent.getActivity(NapAlarm.this, 0, intent, 0);                         // 상태란을 확장시켰을때 보여지는 메시지 지정.                         // 클릭했을 때 실행할 Intent 지정.                         noti.setLatestEventInfo(NapAlarm.this, "기상 시간", "일어나! 일할 시간이야.", content);                                      mNotiManager.notify(NapAlarm.NAPNOTI, noti);                    }                }, 5*1000);            }         });             } }getSystemService (NOTIFICATION_SERVICE) NapEnd.java  public class NapEnd extends Activity {      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.napend);             NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);          nm.cancel(NapAlarm.NAPNOTI);             Button btn = (Button)findViewById(R.id.end);          btn.setOnClickListener(new Button.OnClickListener() {              public void onClick(View v) {                   finish();              }         });     } }

10 3. 통지관리자(Notification Manager) 사용 예제
실행화면.

11 Connectivity Manager

12 Connectivity Manager. 개요 사용 예제 (네트웍을 사용할 시점에서의 체크)

13 Connectivity Manager. 1. 연결 관리자(Connectivity Manager)개요
1. 사용 가능한 네트워크에 대한 정보를 조사한다. 2. 각 연결 방법의 현재 상태를 조사한다. 3. 네트워크 연결 상태가 변경될 때 모든 응용 프로그램에게 인텐트로 알린다. 4. 한 연결에 실패하면 대체 연결을 찾는다.

14 Connectivity Manager. 사용 예제 (네트웍을 사용할 시점에서의 체크)
사용 예제 (네트웍을 사용할 시점에서의 체크) Connectivity Manager. 먼저 permission 을 설정한다. 네트웍을 사용하기 위한 permission 은 아래와같다. 이 내용을 AndroidManifest.xml 에 추가한다. INTERNET 만 추가하면 안된다. ACCESS_NETWORK_STATE 도 추가하기 바란다. <uses-permission android:name="android.permission.INTERNET"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> </uses-permission></uses-permission> 다음은 ConnectivityManager 객체를 통해 WIFI 와 3G 상태를 체크할수 있는 객체를 반환해서 상태를 체크한다 ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

15 Connectivity Manager. 사용 예제 (네트웍을 사용할 시점에서의 체크)
사용 예제 (네트웍을 사용할 시점에서의 체크) Connectivity Manager. WIFI, 3G 인지 구분없이 네트웍 연결상태가 제대로 되었는지에 대한 소스는 아래와 같다. isConnectionted 함수를 써서 확인한다. //연결매니저와 3G,wifi정보를 받아올 객체 선언 ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (mobile.isConnected() || wifi.isConnected()){ // WIFI, 3G 어느곳에도 연결되지 않았을때 Log.d(TAG, "Network connect success"); }else{ Log.d(TAG, "Network connect fail"); }

16 사용 예제 (네트웍을 사용할 시점에서의 체크)
Connectivity Manager. 결과화면 3G WiFi

17 Layout Inflater Manager

18 Layout Inflater Manager.
개요 주요 기능 설명 사용 예제

19 Button b = new Button(this) // this 는 Context 를 의미
레이아웃 인플레이터 관리자 개요 Layout Inflater Manager. Layout Inflater Manager? 안드로이드에서  어떤 뷰가 화면에 보일려면 반드시 객체화(인스턴스) 되어 있어야 하는데, 안드로이드에서 뷰 객체를 생성하는 과정은 크게 2가지가 있음. 직접 코드상에서 생성하는 방법이 있고 그리고 xml 파일을 통해서 객체를 생성하는 방법이 있습니다. 즉 인플레이트 라는 것은 xml 파일을 통해서 객체화를 시키는 것을 말합니다. Button b = new Button(this)   // this 는 Context 를 의미

20 Layout Inflater Manager.
2. 레이아웃 인플레이터 관리자 주요기능 Layout Inflater Manager. 인플레이터로 기본적으로 레이아웃을 얻어오는 방식은 두가지가 있음. 각각 차이점은 inflater는 system에서 얻어 오는 방법이고, inflater2는 Activity에서 제공하는 메소드를 이용해 얻어 오는 방법임. - LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); - LayoutInflater inflater2 = getLayoutInflater();

21 Layout Inflater Manager.
2. 레이아웃 인플레이터 관리자 주요기능 Layout Inflater Manager. inflater는 View객체를 반환 해주는 4가지 메소드가 존재함. // 리소스(R.layout.xxx), root inflater.inflate(resource, root); 리소스는 프로젝트/res/layout 폴더에 들어 있는 xml 파일을 지정 하면됨 // XMLparser, root inflater.inflate(parser, root); XMLparser는 잘 안쓰인다고 함. // 리소스(R.layout.xxx), root, attach 조건(보통 false) inflater.inflate(resource, root, attachToRoot); root는 내가 지정한 리소스(xml 파일)이 어디에 붙을 껀지 지정하는 것임(없으면 null 넣으면됨) // XMLparser, root, attach 조건(보통 false) inflater.inflate(parser, root, attachToRoot); attach 조건 이게 좀 복잡한데 이해 하려면  LayoutParams 이란 걸 알아야함. LayoutParams은 xml 상에서 (android:layout_width, android:layout_height) 을 code로 정의 해주는 녀석인데 이녀석에 대한 생성 기준을 어디로 설정 할 것이냐 묻는 것이다.

22 Layout Inflater Manager.
3. 레이아웃 인플레이터 관리자 예제 Layout Inflater Manager. show_item.xml 파일을 list라는 LinearLayout 에다가 add 하고 싶다고 한다면? //  LinearLayout 객체 생성 //  LinearLayout 객체 초기화  //  LayoutInflater 객체 생성 //  View 객체 생성 //  LinearLayout 객체에 View 객체 추가  LinearLayout list = (LinearLayout)findViewById(R.id.list); list.removeAllViews(); LayoutInflater inflater = getLayoutInflater(); View view =inflater.inflater(R.layout.show_item, list(View를 붙일 녀석), false(붙일 조건)); list.add(view);

23 감사합니다 thank you. 이 문서는 나눔글꼴로 작성되었습니다. 다운받기


Download ppt "Application Framework 어플리케이션 프레임워크 발표자 : 김 준 섭"

Similar presentations


Ads by Google