Я портирую приложение Linux C ++ на Android NDK, и мое приложение вызывает free
в оболочку, чтобы увидеть, сколько памяти доступно на машине для целей ведения журнала. На моем порте Android это не с ошибкой:
sh: free: не найден
На машине с Centos v4 Linux я получаю такой результат:
total used free shared buffers cached
Mem: 8308648 3904076 4404572 0 454956 1593844
-/+ buffers/cache: 1855276 6453372
Swap: 2031608 208 2031400
Есть ли что-то еще, что я могу сделать здесь, чтобы приблизить это на Android?
Похоже, это должно работать:
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks();
long megAvailable = bytesAvailable / (1024 * 1024);
Log.e("","Available MB : "+megAvailable);
Источник: Android-Droid
Других решений пока нет …