0

プログラムでUSBデバイスメモリにアクセスします。

  1. USBデバイスの合計メモリサイズを取得します。
  2. 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

前もって感謝します。

4

3 に答える 3

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);
于 2012-07-12T12:22:57.263 に答える
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());
于 2012-07-12T12:28:27.793 に答える
1

「機能しない」よりも具体的にする必要があります。

  1. あなたが発見した行動は何でしたか?
  2. エラーが発生しましたか、それともゼロになりましたか?
  3. エミュレーターまたはデバイスを使用していましたか?
  4. 複数の外部ストレージを備えたシステムを使用していましたか?

良い例:Androidは内部/外部メモリの空きサイズを取得します

また、デフォルトのストレージがUSBデバイスに設定されていない場合、USBデバイスを検出するのは困難です。すべてのEnvironment。*フォルダー/パスAPIは、

参照:http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()

注:ここで「外部」という言葉と混同しないでください。このディレクトリは、メディア/共有ストレージと考えるとよいでしょう。これは、比較的大量のデータを保持でき、すべてのアプリケーション間で共有されるファイルシステムです(権限を強制しません)。従来、これはSDカードですが、保護された内部ストレージとは異なり、コンピューターにファイルシステムとしてマウントできるデバイスに組み込みストレージとして実装することもできます。

そして、data-directoryの代わりにチェックしようとしているものである可能性のある別のAPIがあります。

参照:http://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory(java.lang.String)

このようなケースを処理するための特定のAPIを備えたMotorolaを次に示しますが、特定の問題によっては、これが探しているものではない場合があります:http: //developer.motorola.com/docs/motorola-external-storage-api/

いずれにせよ、これがあなたの問題に役立つことを願っています。そうでない場合は、より多くの情報を提供してください。StackOverflowの優秀な人材が通常のすばらしい方法でお手伝いします。

お役に立てれば。

于 2012-07-12T12:48:33.907 に答える