Mobile Dev/Android2011. 11. 29. 02:38
안드로이드에서 설치 된 패키지의 상태를 조회하는 코드

PackageManager pm = getPackageManager();

Method getPackageSizeInfo = pm.getClass().getMethod(
   
"getPackageSizeInfo", String.class, IPackageStatsObserver.class);

getPackageSizeInfo
.invoke(pm, "com.android.mms", new IPackageStatsObserver.Stub() {

       
@Override
       
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
           
throws RemoteException {

           
Log.i(TAG, "codeSize: " + pStats.codeSize); // 사이즈
       
}
   
});
Posted by as.wind.914
Mobile Dev/Android2011. 8. 12. 01:09
내/외장에 저장 된 이미지 파일(PNG or JPEG ...)을 Bitmap으로 읽어 들이는 간단한 코드이다.
이미지 파일을 읽을 때 너무 큰 이미지는 OutOfMemory가 발생한다. 그래서 폰의 화면 해상도에 가장 근접하게 리스케일을 하여 읽어들이게 했다.
코드는 아주 간단하다.

/**

  * 지정한 패스의 파일을 읽어서 Bitmap 리턴 (화면사이즈에 최다한 맞춰서 리스케일한다.)

  *

  * @param context

  *            application context

  * @param imgFilePath

  *            bitmap file path

  * @return Bitmap

  * @throws IOException

  */

public static Bitmap loadBackgroundBitmap(Context context,

        String imgFilePath) throws Exception, OutOfMemoryError { 

    if (!FileUtil.exists(imgFilePath)) {

        throw new FileNotFoundException("background-image file not found : " + imgFilePath);

    }


    // 폰의 화면 사이즈를 구한다.
    Display display = ((WindowManager) context

            .getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

    int displayWidth = display.getWidth();

    int displayHeight = display.getHeight();

 

    // 읽어들일 이미지의 사이즈를 구한다.

    BitmapFactory.Options options = new BitmapFactory.Options();

    options.inPreferredConfig = Config.RGB_565;

    options.inJustDecodeBounds = true;

    BitmapFactory.decodeFile(imgFilePath, options);

 
    // 화면 사이즈에 가장 근접하는 이미지의 리스케일 사이즈를 구한다.
    // 리스케일의 사이즈는 짝수로 지정한다. (이미지 손실을 최소화하기 위함.) 

    float widthScale = options.outWidth / displayWidth;

    float heightScale = options.outHeight / displayHeight;

    float scale = widthScale > heightScale ? widthScale : heightScale;

            

    if(scale >= 8) {

        options.inSampleSize = 8;

    } else if(scale >= 6) {

        options.inSampleSize = 6;

    } else if(scale >= 4) {

        options.inSampleSize = 4;

    } else if(scale >= 2) {

        options.inSampleSize = 2;

    } else {

        options.inSampleSize = 1;

    }

    options.inJustDecodeBounds = false;

 

    return BitmapFactory.decodeFile(imgFilePath, options);

}

Posted by as.wind.914
Mobile Dev/Android2010. 12. 16. 20:04
특정 안드로이드 어플에서 티스토어의 어플 페이지로 링크를 하는 방법이다.
웹 브라우저를 통해서 링크를 할 수도 있지만, 여기서는 티스토어 어플을 실행하고 티스토어 어플에서 해당 PID의 어플 페이지를 보여주는 방법이다.

String tstorePID = "0000056482";
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setClassName("com.skt.skaf.A000Z00040", "com.skt.skaf.A000Z00040.A000Z00040");
intent.setAction("COLLAB_ACTION");
intent.putExtra("com.skt.skaf.COL.URI", ("PRODUCT_VIEW/" + tstorePID + "/0").getBytes());
intent.putExtra("com.skt.skaf.COL.REQUESTER", "A000Z00040"); // tstore app ID
activity.startActivity(newintent);

위와 같이 Intent Call을 하게 되면 단말에 설치 된 티스토어 어플이 실행이되고, 해당 PID의 앱 설명 페이지가 나오게 된다. 물론 단말에 티스토어 어플이 설치되어 있어야 한다.
Posted by as.wind.914