2012年11月27日

【Android】メモリー容量取得


Android開発を相変わらずしておりまして、
端末のメモリ情報をちぃっと取得したいと思いました。

ActivityManager.MemoryInfoってクラスがあるのですが、
API levelによって、totalMemoryが取得出来ないようでしたので、
端末のメモリの最大容量を取得するコードを書いてみました。



メソッドだけですが、貼っておきます。

/**
 * Get total memory size on the device
 * 
 * @return memory size
 */
private long getTotalMemorySize() {
    try {
        Process process = Runtime.getRuntime().exec("cat /proc/meminfo");
        BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()), 1024);
        String line = null;
        while ((line = br.readLine()) != null) {
            // "totalMemTotal:         xxxxxxx kB"の部分だけ抜き出す
            if (line.contains("MemTotal:")) {
                line = line.replaceAll("\\D+", "");
                return Long.parseLong(line) * 1024;
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return 0;
}

AndroidはLinuxなので、/proc/meminfoに情報があります。
それをcatして、ファイルの中身を出力します。

BurreredReaderで読み込み、
totalMem:のある行の数字部分を抜き出します。

totalMem:はkB単位になっているので、
1024を掛けて戻り値とします。
(もしかしたら、MB表記の端末とかもあるかもしれません)