저작권 문제 있으면 삭제 하겠습니다.

android.os.Environment.getExternalStorageDirectory().getAbsolutePath();

/sdcard/ 가 기본 경로인듯 하다.

또 sdcard에 파일을 쓰려고 한다면,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
을 반드시 주어야 함.
수행 시간이 오래 걸리는 작업이 있으면 수행 시간을 측정하고 Thread로 뺄 수 있을 지 고민해야 한다.

long start = System.currentTimeMillis();
// 시간이 걸리는 작업
long end = System.currentTimeMillis();
Log.w("IntroActivity", "reload end" + ( end - start )/1000.0);
androidpub의 금강석정님의 comment를 그대로 가져왔습니다.
혹시 작성하신 분께서 불편하시다면 지우겠습니다.
이걸 이용해서 어느정도 불법 복제에서 자유로울 수 있지 않을까 합니다.
참조: http://www.androidpub.com/368036

froyo에는 개발자가 app을 어디에 설치할 것인가를 정하는 것이 있는 데 manifest에 android:installLocation을 설정하는 것입니다. 

개발자가  (manifest에 android:installLocation으로) "internalOnly"(default임) 또는 "auto" 또는 "preferExternal"로 설정할 수가 있는 데 이중에서 "auto" 와 "preferExternal"로 설정한 app만 외장메모리에 설치할 수가 있습니다. "auto"는 default인 내장메모리가 full인 때에 자동으로 외장메모리에 설치하도록하는 것입니다.  "preferExternal"는 외장메모리에 우선적으로 설치하도록 하는 것이며 이때 외장메모리가 full이거나 사용불가하면 내장메모리에 설치합니다. 

app이 외장메모리에 설치될 때

1) .apk는 외장에설치되지만 DB등 app data는 여전히 내장메모리에설치됩니다.

2) .apk를 담아두는 영역은 key로 암호화되어 설치한 기기에서만 실행되며 SD 카드를 다른기기에 이동시켜서는 실행이 되지않습니다.

    단, 한 대의 기기에 여러개의 SD카드는 지원합니다.

3) 사용자의 요구에 따라 app은 내부메모리로 이동할 수도 있습니다.

  내장메모리, 외장메모리 자유롭게 이동하려면 개발자가  "auto" 또는 "preferExternal"로 설정해주어야하는 데   이전 버전에는 없었던 manifest의  android:installLocation에  "internalOnly"로 설정하든가 아예 manifest의  android:installLocation을 설정하지 않는다면(기존의 app들의 경우에 해당) 모두 내장메모리에만 설치되는 것입니다.


OS upgrade와 app upgrade모두 요구되는 상황입니다.


예제가 아닌 첫번째 안드로이드 어플

하지만, 아이폰의 무료 신문사 앱들을 보고 더이상 진행하지 않기로 했다.
액티비티, 컨텐트 프로바이더, 서비스를 써봤고
RSS로부터 데이터를 읽어와 파싱하는 로직이 포함되어 있음
신문사 선택 기능을 넣으려 했으나 현재 한겨례만 선택됨


Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
d.setBounds(0, 0, w, h);
d.draw(canvas);
안드로이드는 에디트 창을 누르기만 하면 IME가 활성화된다.

만약 (SDK 2.1에서) IME를 띄우고 싶지 않다면

editText.setInputType(0);

ps> XML은 동작하지 않는 것 같다. 버그인듯;;

어제 밤에 같이 봤으면 좋았을 텐데 오늘 아침에 확인했다.

Intent에 대한 이해와 공부가 더 있어야 할 것 같다.


일단 현재 이해한 것은

Intent는 메시지 프레임워크다. ( 책에 적힌 말 )
Activity들이 서로 통신하기 위해서는 이 Intent를 만들어서 전달해주면 된다.

1) 새로운 Activity를 호출하고 싶다면
    :  Intent를 만들어 startActivity 또는 startActivityForResult를 호출한다.

2) 이 때, 정보를 넘겨주고 싶다면, (호출하는 Activity에서)
    : putExtra( keyString, value)를 호출한다.

3) 넘겨준 정보를 받고 싶다면 (호출받은 Activity에서)
    : getIntent().getStringExtra(keyString)의 리턴을 받는다.
          -> getIntent()는 현재 호출한 Activity가 만들어 넘겨준 Intent를 반환한다고 한다.
          -> get[변수타입]Extra()함수는 변수타입별로 존재하며, 인자도 타입따라 다르다.
          -> 귀찮으면 Singleton을 써도 될 것 같다.

4) 인텐트 지연해서 호출하기
   : PendingIntent를 사용한다.

아 걸음마 단계를 언제 뗄래나..
목차로 이동

Activity는 어플리케이션의 프레젠테이션 계층이라고 한다.
별로 와닿지 않는 말이다. 그냥 간단히 화면 하나하나라고 생각하기로 했다.

대부분의 어플리케이션들은 하나 이상의 화면으로 이루어진다.
따라서 화면이 여러개라면 Activity를 여러개 만들어야 한다.

기본적으로 안드로이드 프로젝트를 수행하면 하나의 Activity가 존재한다.

1) 하나를 더 만든다. (몰라서 View도 새로 만들었다.)

2) 새로 만든 Activity를 메니페스트 파일에 추가한다.

3) 호출하고 싶을 때 Intent를 이용해 호출한다.


+ Recent posts