第4回 カメラ機能を使ってカードを作ろう90Xi専用ゲームiアプリ開発講座(1/2 ページ)

» 2004年11月09日 13時15分 公開
[澤橋辰典・武上将樹,ITmedia]

  • 第8回 90xiアプリのこれから
  • 第7回 ネットワークiアプリのためのサーバサイド活用(2)
  • 第6回 ネットワークiアプリのためのサーバサイド活用(1)
  • 第5回  スクラッチパッドへのデータ保存とダウンロードファイルの処理
  • 第4回 カメラ機能を使ってカードを作ろう
  • 第3回 簡単なゲーム作成の流れを身に付ける
  • 第2回 カードゲームをつくってみよう
  • 第1回 90xiの時代に何を作るか
  •  前回は画面遷移を設計して、それをベースにカードゲームを作るサイクルを紹介した(11月1日の記事参照)

    今回からは、900iシリーズならではの機能を利用して、アプリに組み入れてみよう。まずは、カメラの使い方と、その応用で撮影画像を解析してカードの画像とパラメーターを生成する処理を解説する。

    カメラオブジェクトの使い方を知ろう

     Cameraクラスは、カメラ機能を呼び出して、静止画や動画を撮影する機能を持つオブジェクトを定義できる。CameraクラスにあるgetCamera(int id)でカメラIDを指定することで、カメラオブジェクトを用意することができる。カメラIDはゼロから始まるが、900iシリーズには標準で一つ以上のカメラが搭載されているので、引数にゼロを指定すると、デフォルトのカメラをスタンバイする。

    static final Camera cam = Camera.getCamera(0);

     前回のコードにSCENE_DECKという、カード閲覧モードとカード生成モードへのメニューが表示されるシーンを追加した。デッキ:DECKとは、カードゲームで使用するカードが組まれた束のことだ。

    static final int SCENE_DECK  = 2;
    static final int SCENE_DECK_VIEW   = 200;
    static final int SCENE_DECK_CAMERA = 201;

     カード閲覧シーン(SCENE_DECK_VIEW)では取り込んで作成したカードの表示を、カード生成シーン(SCENE_DECK_CAMERA)では、画像の撮影と解析を行う。

     撮影画像をアプリに取り込むために、取り込む画像サイズや、カメラ操作モードの指定などが必要となる。

     Camera.setImageSize(int w, int h)で、撮影画像の幅と高さを指定する。

    cam.setImageSize(PICTURE_WIDTH, PICTURE_HEIGHT);

     Camera.takePicture()を呼び出すと、カメラが静止画撮影モードで立ち上がり、ユーザの操作を待つ状態になる。

    cam.takePicture();

     撮影すると、指定したカメラオブジェクトに撮影画像が格納される。撮影モードを指定せずに撮影すると、1枚だけ画像を保持する。ほかにも連射モード、ムービー撮影モードなどが用意される。撮影された画像はCamera.getImage(int index)で指定したindexの画像のMediaImageを得ることができる。

    MediaImage mi = cam.getImage(0);

     しかし、もしユーザがカメラ起動後にクリアキーなどで撮影をキャンセルしてしまった場合は、画像が保持されないため、この状態でgetImageを実行すると例外ArrayIndexOutOfBoundsExceptionが発生する。

     そのため、Camera.getNumberOfImages()を実行して、保持画像数がゼロの場合には処理を中止するようにしておく。

    if (cam.getNumberOfImages() == 0) {
    //写真を撮らなかった場合の処理
    break;
    }

           1|2 次のページへ

    Copyright © ITmedia, Inc. All Rights Reserved.

    アクセストップ10

    2026年01月06日 更新
    1. 筆者が「楽天モバイル+日本通信+povo2.0」を併用しているワケ あえて複数回線を契約してお得に運用 (2026年01月03日)
    2. 新感覚の折りたたみ「HUAWEI Pura X」レビュー 開くとまるで“ファブレット”のサイズ感、動画も大画面で楽しめる (2026年01月04日)
    3. 令和7年の確定申告は「iPhoneのマイナンバーカード」にも対応 事前準備の方法を解説 (2026年01月05日)
    4. ドコモ、KDDI、ソフトバンク、楽天が2026年年頭所感を発表 「AI」「経済圏」での競争が軸に? (2026年01月05日)
    5. 鉄道駅における「時刻表掲示」が減っている件 仕方ない面もあるからこそ工夫が必要 (2026年01月03日)
    6. メモリ価格の高騰はスマホにも影響あり? スマホを買うべきタイミングはいつか (2026年01月01日)
    7. 「iPad mini(A17 Pro)」128GBモデル(整備済品)が28%オフの7万5810円に:Amazon スマイルSALE (2026年01月05日)
    8. アクションカメラ「DJI Osmo Action 4」がセールで2.9万円に 旧モデルでも実力は衰えない (2026年01月05日)
    9. なぜ今、小型スマホなのか? 5.3型「Mode1 Pocket」誕生の舞台裏 あえて本体を厚く、5G非対応にしたワケ (2025年12月29日)
    10. 多機能ケータイ「AGM M11」発売、モバイルバッテリーやWi-Fiルーターとしても使える AGMから (2026年01月05日)
    最新トピックスPR

    過去記事カレンダー

    2026年