알람(Alarms)이란?
 - Application의 시작, Software Update 체크, 종료와 같이 지정된 일들을 사용자에게 
   알려줍니다.
   알람 기능은 알람을 인텐트와 함께 등록시켜줌으로써 동작되는데, 알람은 정해진 시간이
   되면, 인텐트를 브로드 케스팅 합니다.
   그리고 Sleep Mode인 경우에도 지정된 시간이 되면 지정된 Application을 자동으로 
   수행시킵니다.
   알람은 AlarmManager를 이용하여, 사용자가 지정된 시간에, 원하는 동작을 하도록 
   하는데, AlarmManager의 Method를 다음과 같이 정리하였습니다.

AlarmManager 
   void cancel(PendingIntent intent) : 일치하는 Intent Alarm 제거
   void set(int type, long triggerAtTime, PendingIntent operation) : 알람 설정.
   void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)      : 반복 알람 설정.
   void setTimeZone(String TimeZone) : 알람을 위한 시간대 설정. 

보통 Context.getSystemService(contextALARM_SERVICE) 메서드를 이용하여, 알람 매니저의 인스턴스를 생성합니다.

예제소스
Manifast.xml
 <application android:icon="@drawable/clock">
        <activity android:name=".GenerateAlarm" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".AlarmReceiver" android:process=":remote" />
    </application>

AlarmReceiver.java

 public class AlarmReceiver extends BroadcastReceiver {

    public void onReceiveIntent(Context context, Intent intent) {
        Toast.makeText(context, R.string.app_name, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onReceive(Context context, Intent intent) {

    }
}


GenerateAlarm.java

 public class GenerateAlarm extends Activity {

    Toast mToast;

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        Button button = (Button) findViewById(R.id.set_alarm_button);
        button.setOnClickListener(this.mOneShotListener);
    }

    private OnClickListener mOneShotListener = new OnClickListener() {

        public void onClick(View v) {

            Intent intent = new Intent(GenerateAlarm.this, AlarmReceiver.class);

            PendingIntent appIntent = PendingIntent.getBroadcast(GenerateAlarm.this, 0, intent, 0);

            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.SECOND, 30);

            AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), appIntent);

            if (GenerateAlarm.this.mToast != null) {
                GenerateAlarm.this.mToast.cancel();
            }
            GenerateAlarm.this.mToast = Toast.makeText(GenerateAlarm.this, R.string.alarm_message, Toast.LENGTH_LONG);
            GenerateAlarm.this.mToast.show();
        }
    };

}


'안드로이드' 카테고리의 다른 글

AlarmManager의 Alarm Types  (0) 2011.01.14
Alarms  (0) 2011.01.14
안드로이드 APK 다운로드 홈페이지  (0) 2011.01.13
윈도우 환경에서 안드로이드 풀소스 받기  (0) 2011.01.12
View의 계층 구조  (0) 2011.01.10

'안드로이드' 카테고리의 다른 글

Alarms  (0) 2011.01.14
자주 이용하는 블로그  (0) 2011.01.13
윈도우 환경에서 안드로이드 풀소스 받기  (0) 2011.01.12
View의 계층 구조  (0) 2011.01.10
Activity LifeCycle  (0) 2011.01.10

1. GIT프로그램을 다운받아서 설치합니다.
    - http://code.google.com/p/msysgit/ 에서 받으시면 됩니다.
      파일을 첨부하였으니 받으셔서 사용하셔도 됩니다.
2. GIT프로그램을 설치 하였으면, GIT프로그램을 실행하여 소스를 저장할 곳의 폴더를 생성 
    합니다.   

 cd /c      -> [/드라이브 명 (여기서는 C드라이브를 기준으로 하였습니다.)]
 mkdir android_source     -> [mkdir 다음에는 생성할 폴더 이름입니다.]
 cd android_source         -> [생성한 폴더로 이동입니다.]

    폴더를 생성하였다면, 윈도우에서 autogit.sh라는 파일을 다운로드 받을 폴더에 저장합니
    다.
3. GIT 창에서 autogit.sh라는 명령어를 실행하면 안드로이드 풀소스를 다운받을 수
   있습니다.
 sh autogit.sh  -> [http://android.git.kernel.org/ 에서 다운로드 명령]

   보통 다운로드하는데 시간이 오래 걸리므로 이 점을 가만하셔야 합니다.
   저는 보통 5~6시간이상 걸린것같네요. ^^;


만약 모듈별로 받고 싶다면 http://android.git.kernel.org/ 에 접속한 후 원하는 모듈을 받아서 알집 같은 압축프로그램으로 풀면 됩니다.

         

'안드로이드' 카테고리의 다른 글

자주 이용하는 블로그  (0) 2011.01.13
안드로이드 APK 다운로드 홈페이지  (0) 2011.01.13
View의 계층 구조  (0) 2011.01.10
Activity LifeCycle  (0) 2011.01.10
Activity Stack  (0) 2011.01.10
위의 그림과 같이 여러 뷰들이 모여서 위젯이 구성이되고 나중에는 Application이 구성이 되는 것입니다.

위의 View들은 기본 Class Method에 접근이 가능하며, 해당 View들의 Method를 다음과 같이 간단하게 정리하여 보았습니다.

1. View
setBackgroundColor(int color) : 백그라운드 색상 설정.
setBackgroundDrawable(Drawable d) : 백그라운드 이미지 설정.
setMinimumHeight(int minHeight) : 최소 높이 설정.
setMinimumWidth(int minWight) : 최소 넓이 설정.
setPadding(int left, int right, int top, int bottom) : 여백 사이즈 설정.
setClickable(boolean c) : 엘리먼트의 클릭 가능 여부 체크.
setFocusable(boolean f) : 엘리먼트의 포커스 가능 여부 체크.
setOnClickListener(OnClickListener l) : 클릭 이벤트 발생 여부 체크 설정.
setOnFocusChangeListener(OnFocusChangeListener l) :
                                                               포커스 이벤트 발생 여부 체크 설정.
setLayoutPalams(ViewGroup.LayoutParams l) : 레이아웃 파라미터 설정.

2. TextView
setGravity(int gravity) : 중력(위, 아래, 오른쪽 등) 셋팅
setHeight(int height) : 높이 셋팅
setWidth(int width) : 넓이 셋팅
setTypeFace(TypeFace face) : 서체 셋팅
setText(CharSequence text) : 텍스트 셋팅

3. ListView
setEmptyView(View EmptyView) : List Item이 없을경우 사용할 View 설정
setItemCanFocus(boolean bFocus) : 각 항목에 Focus를 줄것인지 말것인지를
                                                     설정.
setChoiceMode(int choiceMode) : 선택할 수 있는 항목이 하나인지 다수인지를
                                                 설정.
setAdapter(ListAdapter adapter) : List에 넣을 항목들을 설정.
addFooterView(View v) : 항상 List의 마지막에만 존재하는 항목 추가.
addHeaderView(View v) : 항상 List의 맨 위에만 존재하는 항목 추가.


'안드로이드' 카테고리의 다른 글

안드로이드 APK 다운로드 홈페이지  (0) 2011.01.13
윈도우 환경에서 안드로이드 풀소스 받기  (0) 2011.01.12
Activity LifeCycle  (0) 2011.01.10
Activity Stack  (0) 2011.01.10
안드로이드 우선순위  (0) 2011.01.10
안드로이드쪽 일을 하면서 가장 중요하다고 생각되는 부분은 Activity Lifecyrcle이라고 생각이 듭니다. 이 파트를 이해를 해야지만이 Activity를 구현하는데 있어서 가장 효율적으로 구현을 할수 있다고 생각하기 때문입니다.

안드로이드는 자신의 프로세스 수명을 직접제어 하지 않습니다. 이를 제어하는 것은 안드로이드 런타임이며, 이는 각각의 프로세스와 Activity들을 관리를 합니다.

여기서는 Activity가 생성되고 종료되는 과정을 정리하였습니다.

안드로이드가 제공하는 각 LifeCycle method들은 분명한 목적을 가지고 있으며,
Foreground, Visible, Entire LifeCycle Mode에서 수행되고 있습니다.
그림으로 정리를 하자면 다음과 같습니다.


 
Foreground phase : 수행중인 Activity를 뜻하며, 다른 모든 것들 보다 최상위에 위치합니다.
                             이는 사용자와 Activity들간의 상호작용을 하는 과정을 뜻합니다.
Visible phase : 수행중인 Activity는 화면에는 나타나지만, 사용자와의 상호작용이 발생되지
                      않습니다.
Entire lifecycle : 화면에 나타나지 않은 상태에서 Activity가 만들어 지기 전에 호출되거나 
                       종료에 앞서 Activity가 종료되는 단계에서 호출되는 Mehtod


 
public class Activity extends ApplicationContext {
     
protected void onCreate(Bundle savedInstanceState);

     
protected void onStart();
     
     
protected void onRestart();

     
protected void onResume();

     
protected void onPause();

     
protected void onStop();

     
protected void onDestroy();
 
}

onCreate() : Activity가 새성될 때 호출. 이전에 저장된 Bundle형태의 데이터에 접근 가능.
onRestart() : Activity가 재시작 되는 과정에서 호출.
                   새로 시작하는 것이 아닌 멈추었던 작업을 재개하는 것.
onStart() : Activity가 화면에 보이는 단계.
onResume() : Activity를 사용자가 사용할 때 호출.(Activity가 시작하거나 재시작시 호출.)
onPause() : Activity가 중단되거나 CPU와 다른 자원들을 요청할 때 호출.
onStop() : Activity 를 중단시키고 화면에서 보이지 않는 상태로 바꾸기 위해 호출.
onDestroy() : Activity가 시스템 메모리에서 완전히 제거될 때 호출.
                   onFinish() Method가 직접 호출 되거나 시스템이 Resource들을 확보하기 
                   위해 Activity를 중단할 때 호출.

'안드로이드' 카테고리의 다른 글

윈도우 환경에서 안드로이드 풀소스 받기  (0) 2011.01.12
View의 계층 구조  (0) 2011.01.10
Activity Stack  (0) 2011.01.10
안드로이드 우선순위  (0) 2011.01.10
어플리케이션의 구성요소  (0) 2011.01.09
각각의 Activity들은 Activity Stack으로 관리를 하고 있습니다.
기존의 Activity가 실행중이면서, 새로운 Activity가 발생하게 되면, Activity Stack에서는
현재 실행중인 Activity의 위로 들어가게 됩니다.
이를 다시 정리하자면, Activity가 실행중인지 아닌지는 Activity가 Stack의 Top이냐 아니냐에 따라 현재 실행중인지 아닌지를 결정하게 되는 것입니다.

'안드로이드' 카테고리의 다른 글

View의 계층 구조  (0) 2011.01.10
Activity LifeCycle  (0) 2011.01.10
안드로이드 우선순위  (0) 2011.01.10
어플리케이션의 구성요소  (0) 2011.01.09
Application 의 종류  (0) 2011.01.09
안드로이드 플랫폼에서 자원이 부족하게 될 경우에는 실행되고 있는 프로세스들을 정리하기 시작하게 됩니다.
이를 정리하기 위해서는 다음과 우선순위를 가지는데요. 
자원을 정리할때 우선순위가 낮은 프로세스 부터 처리하게 됩니다.
잠시 알아둘 필요가 있을것 같아서 정리를 하였습니다.

안드로이드 우선순위
1. Foreground에서 실행되고 있는 액티비티를 가진 프로세스
2. 화면에는 보이지만 Foreground는 아닌 액티비티를 가진 프로세스
3. 백그라운드에서 실행되는 액티비티를 가진 프로세스
4. 액티비티 또는 서비스, 브로드 캐스트 리시버를 가지지 않는 Empty 프로세스

'안드로이드' 카테고리의 다른 글

Activity LifeCycle  (0) 2011.01.10
Activity Stack  (0) 2011.01.10
어플리케이션의 구성요소  (0) 2011.01.09
Application 의 종류  (0) 2011.01.09
짱수의 안드로이드 시작  (0) 2011.01.09

안드로이드를 개발을 하다보면 여러 구성요소들이 있습니다.
그 구성요소는 다음과 같습니다.

 1. Activity
 2. Service
 3. Content Providers
 4. Intents
 5. Broadcast Receivers
 6. Notification
보통 위와 같은 구성요소들로 구성되어 있으며, 가장 중점적으로 공부해야될 것은
저의 생각으로는 Activity와 Service 그리고 Intents와 Broadcast Receivers입니다.
나머지 것들은 책을 보거나 인터넷에 자세히 설명이 나와있기도 하지만 저의 경험상으로는
특정한 곳 외에는 잘 사용하지 않기 때문입니다.
하지만 Activity, Service, Intents, Broadcast Receivers는 자주 사용하며, 문제가 발생시에는 대부분 이곳에서 나타나기 때문에 위의 4개는 확실하게 알아둘 필요가 있습니다.

나중에 차차 조금씩 정리를 할 것이지만 간단하게 소개를 하자면 다음과 같습니다.
1. Activity : 안드로이드에서 보통 화면에 보여주는 부분을 구성하는 역활을 합니다.
2. Service : 화면에는 보이지는 않지만 지속적으로 실행을 하는 역활을 합니다.
3. Content Providers : 공유할 수 있는 데이터들의 저장소이며, 이는 DB를 관리합니다.
4. Intents : 간단한 메세지를 전달하는 역활을 하며, 보통 각각의 Activity에 정보를 주거나
                시스템 으로 데이터를 보낼때 사용합니다.
5. Broadcast Receivers : Intent에서는 정보를 보내주는 역활을 했다면,
                                    Broadcast Receivers는 받는 역활을 합니다.
6. Notification : 사용자에게 알려주기 위한 알림 프레임 워크로써, 보통 사용자가
                      게임을 하거나, 문서작업을 하고 있는데, 갑자기 전화가 오거나, 메세지가
                       오면, 전화 수신 화면으로 넘어 가거나 아미면 상단에 문자 메세지 아이콘
                      이 나타납니다. 이러한 역활을 해주는 것이 Notification입니다

이러한 요소들을 안드로이드에서는 보통 Manifast.xml에서 관리를 하는데 아래와 같은 형식으로 사용합니다.

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.csjung.helloandroid"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".helloAndroid"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="8" />

</manifest>


일단 Activity만 보였으나 차츰 하나씩 정리를 하면서, 간단한 예를 써놓도록 하겠습니다.

'안드로이드' 카테고리의 다른 글

Activity LifeCycle  (0) 2011.01.10
Activity Stack  (0) 2011.01.10
안드로이드 우선순위  (0) 2011.01.10
Application 의 종류  (0) 2011.01.09
짱수의 안드로이드 시작  (0) 2011.01.09

처음에 시작하기에는 어플리케이션의 종류가 뭐가 중요하냐고 생각이 들수 있습니다.
하지만 조금씩 하다보면 어떤 종류의 어플을 사용해야되는지 고민을 하게 됩니다.
이를 고민하기 위해서는 각각의 어플이 어떤 종류의 어플이 있고 어떤 역할을 해야되는지를
알아야합니다.
여기서 제가 말하고자 하는것은 간단하게 나마 어떤 종류의 어플들이 있는지를 알아야 되지 않을까 생각이 들어서 이렇게 정리를 하였습니다.

Foreground Activity : Foreground에 있을때만 쓸모있는 어플리케이션.
                              화면에 보이지 않을때는 일시 중지됨.
Background Service : 화면에 보이지 않은 채로 실행되는 상호작용이 제한된 어플리케이션.
Intermittent Activity : 백그라운드에서 수행을 하고 있다가 나중에 화면을 통해 사용자에게
                            통지를 함. 일반적인 예로는 미디어 플레이어가 이와 같이 동작함.




'안드로이드' 카테고리의 다른 글

Activity LifeCycle  (0) 2011.01.10
Activity Stack  (0) 2011.01.10
안드로이드 우선순위  (0) 2011.01.10
어플리케이션의 구성요소  (0) 2011.01.09
짱수의 안드로이드 시작  (0) 2011.01.09

+ Recent posts