3

Androidの合計空き容量を確認したい場合は、通常、内部ストレージ外部ストレージ(SDカード)の両方を確認します。

SOの回答のいくつかで読んだ内容に基づいて、次のような内部ストレージデータ(空き領域、使用可能な領域など)が見つかります。

 File path            = Environment.getDataDirectory();
 StatFs stat          = new StatFs(path.getPath());
 long blockSize       = stat.getBlockSize();
 long totalBlocks     = stat.getBlockCount();
 long availableBlocks = stat.getAvailableBlocks();
 //Logging added to make sure I am not going mad
 Log.v(TAG,"Available Blocks: "+Long.toString(availableBlocks));
 Log.v(TAG,"Total Blocks: "+Long.toString(totalBlocks));
 Log.v(TAG,"Block size: "+Long.toString(blockSize));

Androidデバイスの外部ストレージ(SDカード)を取得したい場合は、次のようなコードを実行します。

  FilePath path           = Environment..getExternalStorageDirectory();
  StatFs stat             = new StatFs(Environment.getPath());
  this.extblockSize       = stat.getBlockSize();
  long exttotalBlocks     = stat.getBlockCount();
  long extavailableBlocks = stat.getAvailableBlocks();
  //More logging to ensure I am not mad!
  Log.v(TAG,"EXTAvailable Blocks: "+Long.toString(extavailableBlocks));
  Log.v(TAG,"EXTTotal Blocks: "+Long.toString(exttotalBlocks));
  Log.v(TAG,"EXTBlock size: "+Long.toString(extblockSize));

これは、Androidデバイスで外部ストレージと内部ストレージを読み取る方法です。

私が正しいと仮定すると、私は少し問題があります。上記のコードをSamsungGalaxySIIIで実行すると、上記のコードはまったく同じ量のメモリを返します。これで、Samsungに約25GBの内部メモリがあり、4GBのSDカードが入っていることがわかりました。

ただし、これらのコードは両方とも、合計25GBが正しく、23GBが無料で、これも正しいですが、内部ストレージに対してのみ返されます。SDカードのファイルシステム情報の読み方がわからない。出力される実際の値については、以下のログ出力を参照してください。

01-14 20:49:25.485: V/VLRApplication(730): Available Blocks: 6031460
01-14 20:49:25.485: V/VLRApplication(730): Total Blocks: 6702651
01-14 20:49:25.485: V/VLRApplication(730): Block size: 4096

01-14 20:49:25.485: V/VLRApplication(730): EXTAvailable Blocks: 6031460
01-14 20:49:25.485: V/VLRApplication(730): EXTTotal Blocks: 6702651
01-14 20:49:25.485: V/VLRApplication(730): EXTBlock size: 4096

だから私はこの概念を誤解しているに違いありません。誰かが私のためにこれを明確にしてくれませんか?Environment.getExternalStorageDirectory()SDカードへのパスを設定しないように呼びかけていますか?ちなみに、私はAVDエミュレートされたデバイスでこれを試していません。

4

1 に答える 1

1

ほとんどの人の外部の概念はGoogleの概念とは異なります。内部スペースは、SDカードとともに外部ストレージディレクトリとしてカウントされます。

問題は、物理SDカードが同じファイルシステム内にマウントされており、場所がメーカー/ROMによって異なることです。ここここに、この問題に関するいくつかの質問があります。残念ながら、デバイスユニバーサルソリューションはないようです。

于 2013-01-14T19:13:07.227 に答える