通过编程方式访问USB设备内存。
我知道内部/外部存储器的存储器大小
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
String availableMemory = Formatter.formatFileSize(this, availableBlocks * blockSize);
Log.i("","Available MB : " + availableMemory);
在此代码中,无法识别USB设备内存。
如何找到USB Device Memory
。
提前致谢。
答案 0 :(得分:2)
您好请使用以下代码...
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
long blockSize = statFs.getBlockSize();
long totalSize = statFs.getBlockCount()*blockSize;
long availableSize = statFs.getAvailableBlocks()*blockSize;
long freeSize = statFs.getFreeBlocks()*blockSize;
如果你对MB很好,那么
long megAvailable = availableSize/ (1024 * 1024);
Log.e("","Available MB : "+megAvailable);
答案 1 :(得分:2)
使用此助手类使用StatFs类:
public class MemoryUsage{
/*
Returns size in MegaBytes.
*/
public int TotalMemory()
{
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
int Total = (statFs.getBlockCount() * statFs.getBlockSize()) / 1048576;
return Total;
}
public int FreeMemory()
{
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
int Free = (statFs.getAvailableBlocks() * statFs.getBlockSize()) / 1048576;
return Free;
}
public int BusyMemory()
{
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
int Total = (statFs.getBlockCount() * statFs.getBlockSize()) / 1048576;
int Free = (statFs.getAvailableBlocks() * statFs.getBlockSize()) / 1048576;
int Busy = Total - Free;
return Busy;
}
}
如果您需要计算内部记忆,请更改:
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
到此:
StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
答案 2 :(得分:1)
你需要比“不工作”更具体。
一个很好的例子:Android get free size of internal/external memory
此外,如果未将默认存储设置为USB设备,则难以检测USB设备。所有Environment。*文件夹/路径API都将返回
参考:http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()
注意:不要在这里混淆“外部”这个词。这个目录 可以更好地被视为媒体/共享存储。它是一个文件系统 可以容纳相对大量的数据,并且可以共享 所有应用程序(不强制执行权限)。传统上这是 SD卡,但它也可以作为内置存储器实现 与受保护的内部存储区别的设备,可以是 作为文件系统安装在计算机上。
然后还有另一个API可能是您要检查的而不是数据目录。
摩托罗拉提供了处理此类案件的特定API,但根据您的具体问题,这可能不再符合您的要求:http://developer.motorola.com/docs/motorola-external-storage-api/
在任何情况下,我希望这有助于解决您的问题。如果没有,请提供更多信息,StackOverflow的优秀人员将以他们惯常的方式提供帮助。
希望这有帮助。