第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年07月21日 更新
    1. ダイソーで330円の「人感・明暗センサーLEDバーライト(Type-C)」が意外と便利 1人暮らしの帰宅時や非常灯に便利  (2026年07月18日)
    2. なぜ「060」携帯番号は18カ月あっても延期になったのか? それでも「慌てる必要はない」現状 (2026年07月20日)
    3. 専用充電器はもう不要? 中韓スマホから国内勢まで巻き込む「USB PPS」急速充電の新常識 (2026年07月14日)
    4. 「Pixel 11」は何が変わる? メモリ減少で100ドル前後の値上げも? 出そろったうわさを整理する (2026年07月19日)
    5. JR東日本「分かりにくい」新幹線券売機を改善へ なぜ、スマホではなく「駅での最短1分購入」を実現? (2026年07月04日)
    6. 携帯番号に「060」が採用されるワケ 「電話番号とは何か」を歴史とともに振り返る (2024年10月09日)
    7. ショップとAIで差別化を図る「ドコモの銀行」――住信SBIネット銀行ユーザーからは戸惑いも (2026年07月19日)
    8. ミドルハイレンジモデルにも水冷搭載 nubiaから「Neo 5 GT Special Edition」登場 (2026年07月19日)
    9. 最大13日間バッテリー持続、丸型デザインの「CMF Watch 3 Pro」がAmazonで販売中 1万3800円 (2026年07月18日)
    10. “特典終了”が続く「d払い」「dポイント」のお得さはどう変わるのか これからは「dカード」の利用が得策? (2026年07月17日)
    最新トピックスPR

    過去記事カレンダー