2010年11月22日月曜日

インターン成果物、解説のコーナー①

インターンで色々やったことちょっとずつ紹介するのコーナー!!

超超時間かかると思いますが、暇な人は覗いてってくださいw

さて、私の作ったものは、こんなものです。



1.写真を撮る。
2.輪郭を取る。その輪郭が迷路のステージになる。
3.ボールとゴールを置く。
4.ユーザはカメラを傾けながらボールを操作する。

が、主な要素。今日は1番のところをメモとして残します。
丁寧な解説はしません。主要な部分だけさくっと書くだけです。
キャプチャの流れとしては次のとおりです。

1.画面をタッチしたら写真を取る
2.写真を撮ったら、バイト列をbitmap型に変換する
てな感じです。

ではさっそく(汚い)コードを見てみましょう。ちなみに、Android SDK のバージョンは2.2です。
全体像は見せたくありません。ベタ書きもいいところで、とてもとても見せられたものではありません。

ちなみに、こんなクラスの中で定義してます。

class Preview extends SurfaceView implements SurfaceHolder.Callback, PictureCallback


さて、まずは1番。画面タッチイのベントハンドラメソッドをオーバーライドします。

@Override
public boolean onTouchEvent(MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
mCamera.takePicture(null, null, this);
//mCamera.startPreview();
}
return true;
}

startPreviewしようとしたらなぜかエラーが止まらない。ということでコメントアウトして使ってます。特に問題はないので。

はい、次は2番。キャプチャのイベントハンドラメソッドをオーバーライドします。

public void onPictureTaken(byte[] data, Camera camera) {

try {
String dataName = "photo.jpg";
saveDataToSdCard(data, dataName);

} catch (Exception e) {
cameraRelease();
}

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
bmpData = BitmapFactory.decodeByteArray(data, 0, data.length, options);
}


SDカードに入れてるのは、特に意味は無いですw
処理時間を短くしたかったので、変換の際に画素数を落としています。縦横共に1/4になります。

以上~w

次は画像処理まわりですねw いつになることやらw

1 件のコメント:

  1. SECRET: 0
    PASS:
    絶対すばらしいゲームだよ!iPhoneバーションを開発すれば、僕に伝えてください!

    返信削除