2010-11-23 5 views
1

実行中のデバイスの製造元とモデル(ハードディスクのサイズを含む)を検出する必要のあるアプリケーションを作成しています。私は、さまざまなiPhoneモデルを識別する方法についてのポストをたくさん見つけましたが、HDサイズを検出するための参照は見つかりませんでした。iPhone/iPod/iPadの容量を検出する

これも可能ですか?事前に

おかげで、 オリ

+0

私はこれが可能である疑い。 Appleは、プログラムがデバイス自体について何かを知りたいのではなく、Appのサンドボックス外のドライブ上の領域にアクセスする方法を望んでいません。 –

+0

あなたはそうだと思いますが、スティーブン、しかし、私は最近、マニュアルページの形式で文書化された基本的なUnix関数が許可されていることを読みました。私の見落としのようです。 –

+0

iOS SDKにヘッダーファイルがあるものは、おそらく公正なゲームです。 2つの「ディスク」デバイスがあることに注意してください。 1つは(多かれ少なかれ)ファームウェアイメージであり、もう1つはユーザーデータパーティションです。 –

答えて

1

もう少し掘り下げた後、私は次のようにアプローチしました。これは最も単純なように見え、うまくいくようです。

あなたのソリューションのBastiBenseに感謝します。私は今後さらにPOSIXを検討します。

NSDictionary *fsAttr = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil]; 
float diskSize = [[fsAttr objectForKey:NSFileSystemSize] doubleValue]/1000000000; 
NSLog(@"Disk Size: %0.0f",diskSize); 
2

私はデフォルトPOSIXの物事はiOSの上で利用可能であるべきだと思います。

statvfs(標準Cライブラリの一部)を見て、空きディスク容量を読み込むことができます。これはCocoa APIの一部ではありませんが、意味があります。

文書はお使いのマシンにインストールする必要があります。ターミナルで:man statvfs

希望に役立ちます。あなたが必要とする情報を得るためには5ライナーでなければなりません。 :)

1

POSIXバージョン(ハックのビット):

#include <sys/statvfs.h> 

double get_disk_capacity (char * path) 
{ 
    struct statvfs sfs; 
    unsigned long long result = 0; 
    double disk_capacity = 0; 

    if (statvfs (path, &sfs) != -1) 
    { 
     result = (unsigned long long)sfs.f_frsize * sfs.f_blocks; 

     if (result > 0) 
     { 
      disk_capacity = (double)result/(1024*1024); 
     } 
    } 

    return disk_capacity; 
} 

// Sum the size of the two logical partitions (root + user space) 
double total_capacity = get_disk_capacity("/") + get_disk_capacity("/private/var"); 

printf("%.2f MB", total_capacity); 
+0

うわー、ありがとう! – faroligo

関連する問題