2012년 5월 24일 목요일

[안드로이드] /system 디렉토리를 쓰기용으로 마운트 하기


당연히 루팅되어 있어야 합니다.

그리고 커맨드 창에서 adb shell로 쉘 진입후,
su 등으로 루트권한 확보 후

mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system


요래 하면 됩니다.

2012년 5월 8일 화요일

[안드로이드] 부팅시간? 켜진시간??


public static final String ACTION_BOOT_COMPLETED

안드로이드가 껐다 켜지면 위와 같은 액션을 브로드케스트 리시버를 달아 받을 수 있다.
하지만 피치 못할 사정으로 브로드케스트 리시버를 사용 할 수 없다면?

SystemClock에 다음과 같은 두 메쏘드가 있다.

static long elapsedRealtime()
딥슬립 시간을 포함한 부팅 후 경과한 시간을 밀리초 단위로 리턴함.

static long uptimeMillis()
딥슬립 시간을 제외한 부팅 후 경과한 시간을 밀리초 단위로 리턴함.

uptimeMillis()의 경우는 딥슬립 시간을 제외 하니 다른 용도로 써야겠고..
elapsedRealtime()을 쓰면 될듯 하다. System.currentTimeMillis() - elapsedRealtime()하면 부팅 시간이니 말이다.

가령 shared_prefernce 등에 시간을 저장해 두고
OnCreate()에서 그값을 읽어와 부팅시간과 비교해
값이 적다면 새로 부팅한거니 그에 따른 처리를 한뒤 shared_prefernce에 다시 값을 넣어 주고,
값이 더 크다면 아무 것도 하지 않으면 된다.

물론 BOOT_COMPLETED를 받아야만 하는 경우도 있겠지만, 단순히 우리 어플리케이션이 안드로이드가 부팅되고 처음 실행 되는 건지 아닌지 정도는 구분할수 있다.