表題の通りです。

いまさらな感じの内容なエントリです。。


アプリケーションのサイズをとりたかったのだけど

色々と迷った挙句なんとなくたどりついたのでメモしておきます。


単純にアプリのサイズを取りたい的な検索すると

「IPackageStatsObserver.aidl」 & 「PackageStats.aidl」を使って

getPackageSizeInfoでとれるよな回答があります。


うん、確かにとれるんですよ。

色々と取れたりするんですよ。


でも肝心のアプリのサイズってGooglePlayの表記と違うんですよねー。。

ちなみに取れるデータはアプリの詳細画面と同じデータですね。

詳細画面って何ぞやって方はこちらを参考にしてください。

≫[メモ]端末付属のアプリ詳細画面を直接開く方法



ここらへんは作り手の考え方にもよると思いますが

なるべくインストール前に見ているGooglePlayのサイズに

合わせたほうがユーザー的にいいんじゃない?と個人的には思いました。。


んでもにょもにょとしてきました。はい。


色々いいましたが本題に戻ると

単純に


File (PackageInfo.applicationInfo.publicSourceDir).length()


で普通にファイルサイズとればいいんじゃない?

というところに落ち着きました。

これで取れる結果をいくつか見たところGooglePlayと同じサイズになってました。

*間違ってたらごめんなさい。。


簡単にソースかくとこんな感じでしょうか。


//--------------------------------------------------

public class Util {


//サイズを取得

protected static float isGetPackageSize(final PackageInfo info) {

Long length = new File (info.applicationInfo.publicSourceDir).length();

return Util.isConvertSize(length,100);


}




public static float isConvertSize_f(final long size) {

float f = (float)size;

if (f >= 1024.0F) {

//KBに
f = (float)(f / 1024.0D);

if (f >= 1024.0F) {
//MBに

f = (float)(f / 1024.0D);

if (f >= 1024.0F) {

//GBに

f = (float)(f / 1024.0D);
}
}
}

return f;
}


}

//--------------------------------------------------


あとは適当に四捨五入したりすればいいんじゃない。

って感じです。


色々探したりしたけど結果みると数行で終わる作業でした。。。。



最後に。。

「IPackageStatsObserver.aidl」 & 「PackageStats.aidl」に興味があれば

こちらのNikolaiさんのページが参考になるかと。

http://nsamteladze.blogspot.jp/2012/10/get-apks-code-size-in-android.html