こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

カメラアプリの排他制御(android)

はじめまして。android初心者の学生です。
androidでカメラアプリを作っていますが、エラーで落ちてしまいます。
端末はgalaxy note IIIです。

画面タッチでオートフォーカスを呼び出し、フォーカスが終わったらパシャリ。というシンプルなものなのですが・・・

具体的には
「オートフォーカス最中に3回程タッチすると、たまにフリーズして落ちる」
といった状況です。そこで多重撮影を防止するため、排他制御とやらをしたいのですが・・・うまくいかず困っています。オートフォーカス中にタッチしても、オートフォーカスを呼び出さない・・・というところまでは作った(考えた)つもりです。が、恐らくおかしなソースになっていると思われます。

@Override
public boolean onTouchEvent(MotionEvent event) {

switch(event.getAction()&MotionEvent.ACTION_MASK){
           case MotionEvent.ACTION_DOWN:
if(mTouch==false) camera.autoFocus(this);
break;
case MotionEvent.ACTION_CANCEL:
break;
}
return true;
}

public synchronized void onAutoFocus(boolean success, Camera camera) {

mTouch = true;
camera.autoFocus(mAutoFocusListener);
}

private Camera.AutoFocusCallback mAutoFocusListener =
new Camera.AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
camera.takePicture(null, null, mPictureListener);
}
};


private Camera.PictureCallback mPictureListener =
new Camera.PictureCallback() {

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

BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length, options);

MediaStore.Images.Media.insertImage(getContext().getContentResolver(), bmp, "", null);


camera.startPreview();
mTouch = false;
};

できるのなら一度画面に触れたら、タッチを無効にしたいです。
初歩的な問題だとは思いますが、ご指南いただけたらと思います。
よろしくお願いします。

投稿日時 - 2012-10-16 16:06:42

QNo.7751391

すぐに回答ほしいです

質問者が選んだベストアンサー

>しかしその場合、具体的にどう書くのがベストなのか?
>もしよろしければ詳しく書いてくださると助かります。
手っ取り早いのはフラグ用の変数を用意して最初のタッチイベント開始時に
フラグを立ててその後のタッチイベントではそのフラグをキーにして処理をスキップさせる。

撮影処理が終了時にフラグ変数をリセットすれば良いだけ。

投稿日時 - 2012-10-16 18:55:09

お礼

ありがとうございます!
フラグを立ててのスキップは一応やっていたつもりでしたが、スキップする場所が怪しかったようです。

実機で実行が出来ていないのですが、明日試してみます。
私の質問なんぞにご親切に答えていただき、本当にありがとうございました☆

投稿日時 - 2012-10-17 00:24:16

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

だったら排他制御ではなくて撮影処理中はタッチイベントの処理をスキップするようにすればいいのでは?

投稿日時 - 2012-10-16 18:16:03

補足

なるほど・・・!
今からやってみます。光が見えてきました・・・

しかしその場合、具体的にどう書くのがベストなのか?
もしよろしければ詳しく書いてくださると助かります。

投稿日時 - 2012-10-16 18:44:50

あなたにオススメの質問