Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get TOTAL memory and internal storage size Android?

I'm attempting to get the total memory (RAM) and internal storage size, but every method I have used is reporting it too low. I'm aware the kernel may take up some of it but I need to know how much there is installed in total.

For the memory I first just read from /proc/meminfo/ then used the getMemoryInfo. Each of these reported less than the amount of memory installed (700MB instead of 1GB).

for the internal storage size I am using Environment.getDataDirectory, getBlockSizeLong and getBlockCountLong. The result of this is much lower than the amount of storage I know is installed. The settings in the OS agree with the amount reported by my method but I need to know the total amount installed not just what it thinks is there (Even as I typed that it sounded counter-intuitive in my head).

Edit: I've looked at the questions that are being sent and tried their methods as I said. The values reported are incorrect compared for what I know is installed.

like image 405
jambo Avatar asked Aug 19 '15 11:08

jambo


1 Answers

for RAM:

Total RAM available android APP

Basically is:

MemoryInfo mi = new MemoryInfo();
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long availableMegs = mi.availMem / 1048576L;

Storage:

Available STORAGE Android APP

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;

Good luck!

like image 122
Fer Avatar answered Sep 28 '22 08:09

Fer