안드로이드 개발(150)
-
안드로이트폰 켤 때마다 자동으로 서비스가 실행되도록 만들기
검색 능력이 떨어진 것인지, 서비스 자동 실행과 관련된 예제를 못찾다가 개발 서적의 샘플 소스에서 찾았다. 같은 정보를 찾고 있는 분들께 조금이나마 도움이 되기를 바라며 정리해둔다. 먼저 메니페스트 파일을 열고 다음과 같이 액티비티 다음에 리시버와 서비스를 추가해준다. 당연히 BOOT_COMPLETED 액션을 받을 수 있도록 퍼미션도 지정해준다. MyServiceReceiver.java 파일을 만들고 다음 내용을 추가해준다. BOOT_COMPLETED 액션이 전달되면 서비스를 시작하도록 코딩한다. public class MyServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent in..
2010.03.25 -
타이머 사용하기
안드로이드에서는 자바에서 제공하는 타이머를 사용하는 것이 좋지 않다고 해서, Handler를 이용하여 타이머와 유사하게 구현을 해야한다. Handler는 지정한 딜레이 타임 이후에 명령을 수행시키는 기능을 가지고 있기 때문에 다음과 같이 코드를 작성해주면 된다. public void runNext() { Handler mHandler = new Handler(); mHandler.postDelayed(new Runnable() { @Override public void run() { //수행할 명령 runNext(); } }, 1000); } 이렇게 하면 1초에 한번씩 지정한 명령을 수행하는 타이머처럼 동작된다. WM이나 iPhone에서처럼 그냥 타이머를 사용하는게 좋은데... 쩝
2010.03.19 -
멀티 터치 처리하기
다행히 좋은 레퍼런스 사이트를 찾아서 금방 해결했다. http://blogs.zdnet.com/Burnette/?p=1847 public boolean onTouchEvent(MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_POINTER_2_DOWN : { float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); oldDistance = FloatMath.sqrt(x * x + y * y); newDistance = 0.0f; if (oldDistance > 10f) { mode = "zoom"; } else { mode = "norm..
2010.03.18 -
파일 입출력 시 한글 처리
파일 생성이 안되어 한참 헤메다가 새삼스럽게 퍼미션 문제가 생각이 나서 금방 해결해버렸다. -_-;;; 아직도 안드로이드 시스템에 대한 적응 부족인 듯하다. 안드로이드 어플리케이션에서 한글을 저장하면 기본적으로 UTF-8로 저장이 된다. 문자열을 저장 시에 길이와 String형 변수를 byte형으로 바꿔 저장을 한다. File file = new File(myDir, filename); FileOutputStream fileStream = new FileOutputStream(file); string = "한글 테스트"; byte []tempByte = string.getBytes(); int length = string.length(); fileStream.write(length); fileStream..
2010.03.15 -
실행 중인 프로세스 죽이기
ActivityManager의 restartPakage() 메소드를 사용하면 손쉽게 프로세스를 죽이는 것이 가능하다. restartPackage() 메소드는 지정한 어플리케이션 패키지와 관련된 모든 것을 강제로 종료시키는 기능을 가지고 있다. 아래 코드는 ActivityManager를 이용하여 실행 중인 프로세스 목록을 가져오는 소스에 restartPackage() 메소드 호출만 추가한 것이다. ActivityManager.RunningAppProcessInfo runApp = adaptedAppList.getItem(arg2); activityManager.restartPackage(runApp.processName); Manifest 파일에는 반드시 RESTART_PACKAGES 퍼미션을 지정해주어야..
2010.03.11 -
간단한 SMS 발송 안될 경우 체크해야할 것
Manifest 파일에 다음과 같이 SEND_SMS 이외에 READ_PHONE_STATE도 퍼미션을 지정해주어야 한다. 복잡한 기능도 아닌데 SMS 예제 조차 자꾸 문제가 생겨서 Exception을 찍어보았더니, 어이 없게도 이것도 추가해줘야 한단다. 예전에는 SEND_SMS 퍼미션만 지정해주면 되었던 것 같은데, 아마도 안드로이드 버전마다의 차이로 인해서 발생하는 문제일 듯.
2010.03.11