Unity Androidのストレージ残量を取得(Android4.4.2、5.1.1、6.0.0による確認済み)


下記URLを参考にしました。
http://qiita.com/snaka/items/35a6389d35447c2db272

ボタンを押すとプラグイン内のメソッドを呼ぶようにサンプルプログラムを作る。

■クリックが押されると計算用処理を呼ぶ

using UnityEngine;
using System.Collections;

public class testClick : MonoBehaviour {

    public void OnClick()
    {
        CallPlugIn.test();
    }

}

■各サイズを取得

using UnityEngine;
using System.Collections;


public class CallPlugIn : MonoBehaviour {

    public static void test()
    {
        Debug.Log("1");
        var statFs = new AndroidJavaObject("android.os.StatFs", Application.temporaryCachePath);
        Debug.Log("2");
        // 指定したファイルシステムでアプリケーションが利用できる領域のブロックサイズを返します。
        var availableBlocks = statFs.Call<long>("getAvailableBlocksLong");
        Debug.Log("3");
        // 指定したファイルシステムで利用できる領域のブロックサイズを返します。返されるブロックにはアプリケーションから利用できない領域を含みます。
        var freeBlocks = statFs.Call<long>("getFreeBlocksLong");
        Debug.Log("4");
        // ファイルシステムのブロックサイズを返します。単位はByte。
        var blockSize = statFs.Call<long>("getBlockSizeLong");
        Debug.Log("5");
        // ファイルシステムの総ブロック数を返します。
        var blockCount = statFs.Call<long>("getBlockCountLong");

        Debug.Log("■getAvailableBlocks=" + availableBlocks.ToString());
        Debug.Log("■getFreeBlocks=" + freeBlocks.ToString());
        Debug.Log("■getBlockSize=" + blockSize.ToString());
        Debug.Log("■getBlockCount=" + blockCount.ToString());
    }
}

■空き容量を求める

availableBlocksblockSize掛け合わせると空き容量の合計バイト数が計算できる。

メガバイトに変換するには

 availableBlocks*blockSize/(1024*1024) とする。