这是我自己写的程序,中间也在网上搜索了一些方法,结合他们的方法写出来的
SDinfo .java
// 获取手机空间信息
public void getMemorySize() {
List count = new ArrayList();
String[] s1;
long[] l;
long phoneMemorySize = Phoneinfo.getTotalInternalMemorySize()
/ (1024 * 1024);// 手机总空间
long phoneUseMemorySize = Phoneinfo.getAvailableInternalMemorySize()
/ (1024 * 1024);// 手机可用空间大小
long usedSize = phoneMemorySize - phoneUseMemorySize;// 手机已用空间大小
String status = Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED)) {
s1 = new String[] { "手机总空间", "手机可用空间", "手机已用空间", "SD卡总空间",
"SD卡可用空间", "SD卡已用空间" };
// 存在SDcard
long SDmemorySize = SDcardinfo.getTotalExternalMemorySize()
/ (1024 * 1024);// sd卡总空间
long SDUseSize = SDcardinfo.getAvailableExternalMemorySize()
/ (1024 * 1024);// sd卡 可用空间
long SDUsed = SDmemorySize - SDUseSize;
l = new long[] { phoneMemorySize, phoneUseMemorySize, usedSize,
SDmemorySize, SDUseSize, SDUsed };
} else {
// 不存在SDcard
l = new long[] { phoneMemorySize, phoneUseMemorySize, usedSize };
s1 = new String[] { "手机总空间", "手机可用空间", "手机已用空间" };
}
List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < s1.length; i++) {
HashMap<String, Object> item = new HashMap<String, Object>();
item.put("name", s1[i]);
item.put("size", l[i] + "M");
data.add(item);
}
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item1,
new String[] { "name", "size" }, new int[] { R.id.name,
R.id.size });
lv.setAdapter(adapter);
l = null;
s1 = null;
}
Phoneinf .java
public class Phoneinfo {
/**
* @author jack
*/
//这个是手机内存的总空间大小
static public long getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
//这个是手机内存的可用空间大小
static public long getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
SDinfo .java
public class SDcardinfo {
//这个是手机sdcard的可用空间大小
static public long getAvailableExternalMemorySize() {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
//这个是手机sdcard的总空间大小
static public long getTotalExternalMemorySize() {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
}