iPhoneとiPod Touch
現在書いているiPhone用アプリケーションはカメラは使うが位置情報や近接センサー情報を使わないので、漠然とiPod Touchでも動くだろうと思ってはいたのだが実機が手元に無いので検証しようが無い。 どうしても、どうしても動かしてみたくなったのでiPod Touchを導入した。
Apple iPod touch 32GB White MD058J/A
- 出版社/メーカー: アップル
- 発売日: 2011/10/13
- メディア: エレクトロニクス
- 購入: 9人 クリック: 165回
- この商品を含むブログ (29件) を見る
ハードウェアの違いだが、大まかには以下の違いがある。
機能 | iPhone4S | iPod Touch4G |
---|---|---|
CPU | A5 1Ghz | A4 800Mhz |
RAM容量 | 512MB | 256MB |
LCD方式 | IPS | TN |
GPS搭載 | 有(A-GPS) | 無(Wi-fiによる位置計測有) |
デジタルコンパス | 有 | 無 |
バイブレーション | 有 | 無 |
LEDフラッシュ | 有 | 無 |
カメラ画素 | 5Mピクセル | 2Mピクセル |
AF(オートフォーカス) | 有 | 無 |
近接センサー | 有 | 無 |
HDR撮影 | 有 | 無 |
実のところ開発環境のXcode上ではiPhoneとiPodは分かれていない。ということは上記のハードウェアの違いをきちんと理解していれば、基本的にバイナリには互換性があるということだ。
なお、プラットホームの違いはuname関数で取得することが出来るutsname構造体から得る情報で判定できる。
@implementation DeviceUtil + (NSString*)platformName { struct utsname systemInfo; uname(&systemInfo); return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; } + (BOOL)isiPhone { return [[self platformName] bb_contains:@"iPhone"]; } + (BOOL)isiPad { return [[self platformName] bb_contains:@"iPad"]; } + (BOOL)isiPodTouch { return [[self platformName] bb_contains:@"iPod"]; }
結果から書くとiPhone用のアプリケーションはそのまま、何の手も入れずにiPod Touch上でも動作した。ただしカメラの画素数も少なく、オートフォーカスも効かないし※、フラッシュのトーチモードも無いのでそこは動作しないものとして機能が無効になるように組む必要がある。例えば、上記のisiPhoneの戻り値によってバイブレーションの有無を予め決定しておく、等の考慮が必要だ。
あとはiPod Touch 4GはRAMがiPhone 4Sの半分しか無いのでより頻繁にMemeory warningが飛んでくることになる。メモリ管理はよりシビアにする必要があるようだ。
※QRコードは問題無いが、よりフォーカス精度が必要な1Dバーコードの場合、読み込みは困難だった (ZBar使用)