5

呼び出しアクティビティが続行される前に、PictureCallback が発生するのを待ちたい Android アプリを作成しています。

import android.hardware.Camera;

private Camera camera
private Bitmap picture;

camera.takePicture(null, null, new PictureCallback() {
  @Override
  public void onPictureTaken(byte[] data, Camera camera) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 1;
    picture = BitmapFactory.decodeByteArray(data , 0, data.length, options);
  }
}

... do some other logic with picture

他のロジックを分離したままにしたいので、これを takePicture 関数でコーディングすることは避けたいと思います。

これを達成することは可能ですか?

4

2 に答える 2

0

バックグラウンド作業を行っている間、UI スレッドをブロックするのは悪い習慣です。

組み込みの Camera アクティビティを呼び出すと、アクティビティはバックグラウンドになります。写真を撮ってカメラ アクティビティを閉じた後、アクティビティに戻るまでに、写真は既に保存されています。

独自のCamera実装を使用する場合は、を表示する必要ProgressDialogがあります。バックグラウンドで行う作業がある場合は、別のスレッドで行う必要があります。

于 2012-08-09T13:26:31.327 に答える
0

2 つのスレッドで実装できます。次に、PictureCallback が呼び出された直後に、現在のスレッドで wait() を呼び出します。次に、PictureCallback が終了したら、notify() を呼び出して、待機中のスレッドに終了してもよいことを知らせます。しかし、メインスレッドをブロックしたくありません。必要に応じて行うこともできますが、お勧めできません。

于 2012-08-09T13:27:50.510 に答える