BLOG ARTICLE 안드로이드 | 8 ARTICLE FOUND

  1. 2010.08.21 Android 간단한 Tip 정리
  2. 2010.06.17 안드로이드 ROM/SD 파일 쓰기

Smart Phone (Mobile)/Android 2010.08.21 00:14

* 화면이 자동으로 꺼지는 것을 막는다.
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

* 카메라 줌 설정하기
    "zoom", "taking-picture-zoom" 두가지 설정 방법이 있다. 하드웨어에 따라 달리 사용된다.
    기본적으로 "zoom"을 사용하면 되나, 갤럭시에서는 "taking-picture-zoom"을 사용해야 된다.
    왜 항상 갤럭시는 혼자 저모양인지 모르겠음. (여튼 개발자 최대의 적은 갤럭시인건 분명하다.)
   1. "zoom" parameter 이용
       Camera.Parameters parmeters = camera.getParameters();
       parmeters.set("zoom", String.valueOf(value));
       camera.setParameters(parmeters);
    2. "taking-picture-zoom" parameter 이용
       Camera.Parameters parmeters = camera.getParameters();
       parmeters.set("taking-picture-zoom", String.valueOf(value));
       camera.setParameters(parmeters);

* 카메라 쵀대줌 값 가져오기
    줌 설정과 마찬가지로 "max-zoom", "taking-picture-zoom-max" 두가지 방법이 있다.
    물론 갤럭시는 "taking-picture-zoom-max"을 사용한다. 젠장할~~
    String maxZoomStr = parameters.get("max-zoom");
        또는
    String takingPicMaxZoomStr = parameters.get("taking-picture-zoom-max");

* Intent를 이용한 Web Browser 띄우기
    String webUrl = http://www.google.co.kr;
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(webUrl));
    intent.putExtra(Browser.EXTRA_APPLICATION_ID, AppConstants.APP_ID_TAG);
    context.startActivity(intent);
    
    Extra에 자신 어플리케이션의 ID를 넘기게 되면 동일한 ID에 대해서는 항상 동일한 창에 띄워준다.

* WiFi Mac Address 가져오기
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    String macAddress = wifiInfo.getMacAddress();

    ACCESS_WIFI_STATE 사용 권한을 줘야 한다.
저작자 표시 비영리 동일 조건 변경 허락
신고

Smart Phone (Mobile)/Android 2010.06.17 17:06

안드로이드 프로그래밍을 하다보면 파일 핸들링을 해야 하는 경우가 있다.
안드로이드에서 파일을 핸들링 할 수 있는 곳은 기본 내장되어 있는 롬(ROM)과 외장메모리(SD 메모리 카드) 이렇게 두 곳을 사용할 수 있다.
그러나 외장메모리는 항상 마운트되어 있다고 보장을 할 수 없으며, 그렇다고 용량이 한정되어 있는 내장 롬을 무조건 사용한다는 것도 좋은 방밥은 아니다.
그래서 외장메모리의 마운트 여부를 확인하여 기본적으로 외장메모리를 사용하게하며, 외장 메모리가 마운트 되어 있지 않다면 내장롬을 사용하게 하는 것이 좋은 방법일 듯 싶다.

아래는 외장메모리의 마운트 여부를 확인하고, 그에 따라 파일을 원하는 위치에 쓰는 샘플이다.

// 외장메모리를 체크하여 최상위 패스를 설정한다.
String saveFilePath = null;
String ext = Environment.getExternalStorageState();
if (ext.equals(Environment.MEDIA_MOUNTED)) {
   
// 외장메모리가 마운트 되어 있을 때
    saveFilePath = Environment.getExternalStorageDirectory().getAbsolutePath();
} else {
   
// 외장메모리가 마운트 되어 있지 않을 때
    saveFilePath = Environment.getDataDirectory().getAbsolutePath();
}

File saveFile = null;
FileOutputStream fos = null;
try {
   
// 파일 저장 디렉토리 설정 (없으면 생성)
    File fold = new File(saveFilePath + File.separator + dir);
    if (!fold.exists()) {
        fold.mkdir();
    }
   
// 파일 저장
    saveFile = new File(saveFilePath + File.separator + dir + File.separator + fileName);
    fos = new FileOutputStream(saveFile);
   
byte[] buf = new byte[2048];
    int readLength = 0;
    while ((readLength = resIn.read(buf)) != -1) {
        fos.write(buf, 0, readLength);
    }
} finally {
    if (resIn != null)  resIn.close();
    if (fos != null) fos.close();
}

외장메모리 쓰기 권한을 주는 것을 잊지 말자!!!
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
저작자 표시 비영리 변경 금지
신고