2013. 5. 11. 10:44

C언어를 공부하다보면

#if, #ifdef 같은 눈에 익지 않은 명령어가 나올 때가 있다. 이들은 무엇이냐.

이렇게 앞에 '#'이 붙은 친구들을 컴파일러 지시자라 하는데, 간단한 예시로 한번에 이해 하면 됩니다.


#include #define TRUE 1 #define FALSE 0 int main(){ #if TRUE printf("a"); #endif #if FALSE printf("b"); #endif }

#if에 관한 코드입니다.
이 지시자는 #if뒤에 상수가 참이면 #endif와의 사이에 있는 코드를 실행합니다.
즉, 위의 결과는 a만 나오겠지요.


다음은 #ifdef에 대해 알아봅시다.
벌써 예상하셨다시피 뒤에 def는 define에 약자인듯 하네요.

 

#include

#define what 1
//#define wow 1

int main(){

#ifdef what
	printf("what");
#endif

#ifdef wow
	printf("wow");
#endif

}

#ifdef라는 친구는 '해당 상수가 선언 되있다면'으로 해석하시면 될 듯 하네요.

위에 코드에서 what은 선언 되있고, wow는 선언이 안되있으니 결과는 'what'이겠지요.





Posted by 나돌라
2012. 7. 27. 15:18

알람매니저를 이용해서 App을 만드려고 할 때 알람매니저를 이용한 예제들은 많았지만,

 다 Notification을 실행해서 Activity를 실행하는데 꽤나 애먹었던 기억이 있기에,

 행여나 저같은 사람이 있을까봐 올려봐요~





main Code

버튼하나를 만들고 버튼을 누르면 3초 뒤에 알람이 울리게 하는 코드입니다.

	package com.naddola.mytemp_alarmactivity;
	import java.util.Date;
	
	import android.app.Activity;
	import android.app.AlarmManager;
	import android.app.PendingIntent;
	import android.content.Intent;
	import android.os.Bundle;
	import android.view.View;
	import android.view.View.OnClickListener;
	import android.widget.Button;
	import android.widget.Toast;
	
	public class MyTemp_AlarmActivityActivity extends Activity {
		
		MyListener myListener;
	
		Button buttonConfirm;
	
		private Intent intent;
		private PendingIntent ServicePending;
		private AlarmManager AM;
	
		//초기화과정
		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.main);
			
			myListener = new MyListener();
			
			buttonConfirm = (Button) findViewById(R.id.Confirm);
			buttonConfirm.setOnClickListener(myListener);
	
			AM = (AlarmManager) getSystemService(ALARM_SERVICE);
		}
	
		class MyListener implements OnClickListener {
	
			@Override
			public void onClick(View v) {
				switch (v.getId()) {
				
				case R.id.Confirm:
	
					//Receiver로 보내기 위한 인텐트
					intent = new Intent(getApplicationContext(), AlarmReceiver.class);
					ServicePending = PendingIntent.getBroadcast(
							MyTemp_AlarmActivityActivity.this, 0, intent, 0);
					//현재 시간보다 3초뒤에 pendingIntent를 실행
					Date t = new Date();
					t.setTime(java.lang.System.currentTimeMillis() + 3 * 1000);
					AM.set(AlarmManager.RTC_WAKEUP, t.getTime(), ServicePending);
					
					Toast.makeText(getBaseContext(), "3초뒤에 알람", Toast.LENGTH_SHORT).show();
					break;
				}
			}
		}
	}


Receiver Code

보내준 알람을 받아서 새로운 Activity를 실행시키는 코드입니다.

package com.naddola.mytemp_alarmactivity;

import android.app.PendingIntent;
import android.app.PendingIntent.CanceledException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class AlarmReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		
		try {
			intent = new Intent(context, MyActivity.class);
			PendingIntent pi = PendingIntent.getActivity(context, 0, intent,
					PendingIntent.FLAG_ONE_SHOT);

			pi.send();
			
		} catch (CanceledException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

AlarmActivity Code

새로운 Activity 실행

 package com.naddola.mytemp_alarmactivity;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity {

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.alarm);
	}
}

manifest.xml

Reciever와 새 Activity를 추가해줍니다.





    

    
        
            
                

                
            
        
        
        
    

Posted by 나돌라
2012. 7. 17. 14:08

안드로이드 개발 과정을 배우는데 이게 계속 나와서 무슨말인가하고 찾아봤네요



1. 파싱(Pharsing) : 

 어떠한 데이터가 있는데 이를 다른 모양으로 만들어서 이용하는 것을 파싱이라고 한다.
   XML같은 특정 파일들을 읽어서 이를 다른 프로그램이나 서브루틴이 사용할 수 있는 표현 방식으로 변환시켜 주는 것이다. XML 문서를 보시면 HTML처럼 <>태그가 보이는데 이는 사용자가 이렇게 입력하지만 컴퓨터가 알아 볼 수 있도록 바꿔주는 과정을 의미합니다. 

   2)  컴파일러의 일부로써 원시 프로그램의 명령문이나 온라인 명령문, HTML 문서등에서 마크업태그등을 입력으로 받아들여서 구문을 해석 할수 있는         단위로 여러부분으로 분할해 주는 역할을 한다.



2. 파서(Pharser) :

   파싱을 하는 프로세서를 파서라고 부립니다. 즉, 파서가 파싱 작업을 하는 것.


Posted by 나돌라
2012. 6. 25. 13:52

 

 

Android 개발을 열심히 하고

실행 하려면 항상 가상 머신이 실행 시키니라 지치는 경우가 허다합니다.

그래서 조금 바꾸고 확인 하기 위한 컴파일 하기가 무섭죠 ㅜㅜ

그래서 저는

핸드폰에 직접 연결해서 실행한답니다.

이미 켜진 단말기를 이용하기에 훨씬 빠른 것을 알 수 있을거에요

 

연결하기 위해 필요한 것

Android기반의 단말기, usb연결 케이블, 컴퓨터

 

1. 컴퓨터에 단말기의 usb드라이버를 설치를 합니다.

삼성 모바일 : http://www.samsung.com/sec/support/pcApplication/KIES

LG 전자 : http://www.lgmobile.co.kr/lgmobile/front/download/retrieveDownloadMain.dev

SKY(베가 시리즈) : http://www.skyservice.co.kr/main.sky

위 주소로 가셔서 usb드라이버를 설치 하세요!

 

2.  단말기 디버깅 활성화

 

설정 - 응용프로그램 이나  설정 - 개발자옵션에 가시면

디버깅 모드를 설정 할 수 있습니다. 설정!

p.s usb를 연결하면 바로 뜨기도 합니다.

 

3. 이제 eclipse를 다시 실행합니다!

 

그 후에 컴파일을 해보면 깔끔하게 핸드폰에서 실행되는 앱을 볼 수 있을겁니다.

 

4. 이렇게 했는데 안된다면...

작업관리자에서 adb.exe를 종료 시키고 다시 eclipse를 실행하시면 됩니다.

 

 

 

Posted by 나돌라