Application Framework 어플리케이션프레임워크 발표자 : 김준섭 이문서는나눔글꼴로작성되었습니다. 다운받기
목차 Application Framework. 1. 통지관리자 (Notification Manager) 2. 리소스관리자 (resource manager) 3. 레이아웃인플레이터매니저 (Layout Inflater Manager)
Notification Manager
Notification Manager. 1. 개요 2. 주요기능설명 3. 사용예제
1. 통지관리자 (Notification Manager) 개요 Notification Manager. Notification? Notification (int icon, CharSequence tickertext, long when) Icon tickertext
2. 통지관리자 (Notification Manager) 주요기능설명 Notification Manager. Main functions. 필드 설명 number 통지아이콘에겹쳐서출력될숫자를지정한다. 예를들어새로운메시지가 10 개도착했으면아이콘과같이 10 이라는숫자가표시된다. sound 통지와함께출력할소리를 Uri 객체로지정한다. vibrate 진동방식을지정한다. 진동할시간과멈출시간을배열로전달함으로써진동의패턴을지정한다. ledargb 불빛의색상을지정한다. lenonms, lefoffms LED를켤시간과끌시간을 1/1000초단위로지정한다. defaults 디폴트로취할통지전달방식을지정한다. flags 통지의동작방식을지정한다.
2. 통지관리자 (Notification Manager) 주요기능설명 Notification Manager. Main functions. PendingIntent 클래스는인텐트를래핑하며다른응용프로그램으로전달하여실행권한을준다는점에서보통의인텐트와다르다. 생성자가따로정의되어있지않으므로아래세개의정적메소드중하나로생성한다. void setlastesteventinfo (Context context, CharSequence contenttitle, CharSequence contenttext, PendingIntent contentintent) PendingIntent getactivity (Context context, int requestcode, Intent intent, int flags) PendingIntent getbroadcast (Context context, int requestcode, Intent intent, int flags) Context PendingIntent Context getservice (Context 통지를 context, 발생시킨 int requestcode, 주체와 Intent 제목 intent, int flags) CharSequence contenttitle 메시지큰글씨 CharSequence 텐트에는 FLAG_ACTIVITY_NEW_TASK contenttext 플래그를 메시지지정해야텍스트한다. PendingIntent contentintent 통지뷰를탭했을때호출할인텐트 intent 는사용자가통지객체를탭했을때의동작을지정한다. 주로 Activity 를띄우는데이경우인
2. 통지관리자 (Notification Manager) 주요기능설명 Notification Manager. Main functions. 통지객체가준비되었으면통지관리자로등록한다. 통지관리자는시스템이제공하는 서비스이므로객체를직접생성할필요없이아래메소드로구한다. getsystemservice 통지관리자는 (NOTIFICATION_SERVICE) 아래세개의메소드를제공한다. void notify (int id, Notification notification) void cancel (int id) void cancelall()
3. 통지관리자 (Notification Manager) 사용예제 Notification Manager. NapAlarm.java --------------------------------------------- // 잠시후에실행하게함. v.postdelayed(new Runnable() { public class NapAlarm extends Activity { public void run() { static final int NAPNOTI = 1; // 상단상태란에나타날메시지를지정한다. NotificationManager mnotimanager; Notification noti = new Notification(R.drawable.icon, " 일어나세요 ", System.currentTimeMillis()); /** Called when the activity is first created. */ noti.defaults = Notification.DEFAULT_SOUND; @Override noti.flags = Notification.FLAG_INSISTENT; public void oncreate(bundle savedinstancestate) { // 사용자가통지를탭했을때출력할창을설정한다. super.oncreate(savedinstancestate); Intent intent = new Intent(NapAlarm.this, NapEnd.class); setcontentview(r.layout.main); NapEnd.java intent.addflags(intent.flag_activity_new_task); public class PendingIntent NapEnd extends content Activity = { PendingIntent.getActivity(NapAlarm.this, 0, intent, 0); // 통지관리자를 protected 가져온다. // 상태란을 void oncreate(bundle 확장시켰을때 savedinstancestate) 보여지는메시지 { 지정. mnotimanager = super.oncreate(savedinstancestate); (NotificationManager) getsystemservice(notification_service); setcontentview(r.layout.napend); // 클릭했을때실행할 Intent 지정. noti.setlatesteventinfo(napalarm.this, " 기상시간 ", " 일어나! 일할시간이야.", content); Button btn = (Button)findViewById(R.id.start); NotificationManager nm = (NotificationManager) getsystemservice(notification_service); btn.setonclicklistener(new Button.OnClickListener() { nm.cancel(napalarm.napnoti); mnotimanager.notify(napalarm.napnoti, noti); public void onclick(view v) { } Toast.makeText(NapAlarm.this, Button btn = (Button)findViewById(R.id.end); " 안녕히주무세요 ", 0).show(); }, 5*1000); btn.setonclicklistener(new Button.OnClickListener() }. { });. public void onclick(view v) { finish(); }. } }); } }getsystemservice } (NOTIFICATION_SERVICE)
3. 통지관리자 (Notification Manager) 사용예제 Notification Manager. 실행화면.
Connectivity Manager
Connectivity Manager. 1. 개요 2. 사용예제 ( 네트웍을사용할시점에서의체크 )
1. 연결관리자 (Connectivity Manager) 개요 Connectivity Manager. Connectivity Manager? ConnectivityManager - 연결관리자의기능 1. 사용가능한네트워크에대한정보를조사한다. 2. 각연결방법의현재상태를조사한다. 3. 네트워크연결상태가변경될때모든응용프로그램에게인텐트로알린다. 4. 한연결에실패하면대체연결을찾는다.
1. 사용예제 ( 네트웍을사용할시점에서의체크 ) 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);
1. 사용예제 ( 네트웍을사용할시점에서의체크 ) 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"); }
1. 사용예제 ( 네트웍을사용할시점에서의체크 ) Connectivity Manager. 결과화면 3G WiFi
Layout Inflater Manager
Layout Inflater Manager. 1. 개요 2. 주요기능설명 3. 사용예제
1. 레이아웃인플레이터관리자개요 Layout Inflater Manager. Layout Inflater Manager? 안드로이드에서어떤뷰가화면에보일려면반드시객체화 ( 인스턴스 ) 되어있어야하는데, 안드로이드에서뷰객체를생성하는과정은크게 2가지가있음. 직접 Button 코드상에서 b = new 생성하는 Button(this) 방법이있고 // this 는 Context 를의미그리고 xml 파일을통해서객체를생성하는방법이있습니다. 즉인플레이트라는것은 xml 파일을통해서객체화를시키는것을말합니다.
2. 레이아웃인플레이터관리자주요기능 Layout Inflater Manager. 인플레이터로기본적으로레이아웃을얻어오는방식은두가지가있음. - LayoutInflater inflater = (LayoutInflater) getsystemservice(context.layout_inflater_service); - LayoutInflater inflater2 = getlayoutinflater(); 각각차이점은 inflater 는 system 에서얻어오는방법이고, inflater2 는 Activity 에서제공하는메소드를이용해얻어오는방법임.
2. 레이아웃인플레이터관리자주요기능 Layout Inflater Manager. inflater는 View객체를반환해주는 4가지메소드가존재함. // 리소스 (R.layout.xxx), root 리소스는프로젝트 /res/layout 폴더에 inflater.inflate(resource, root); 들어있는 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 로정의해주는녀석인데이녀석에대한생성기준을어디로설정할것이냐묻는것이다.
3. 레이아웃인플레이터관리자예제 Layout Inflater Manager. show_item.xml 파일을 list 라는 LinearLayout 에다가 add 하고싶다고한다면? // LinearLayout 객체생성 LinearLayout list = (LinearLayout)findViewById(R.id.list); // LinearLayout 객체초기화 list.removeallviews(); // LayoutInflater 객체생성 LayoutInflater inflater = getlayoutinflater(); // View 객체생성 View view =inflater.inflater(r.layout.show_item, list(view 를붙일녀석 ), false( 붙일조건 )); // LinearLayout 객체에 View 객체추가 list.add(view);
감사합니다 thank you. 이문서는나눔글꼴로작성되었습니다. 다운받기