1

2 つのプロセスを同時に実行する必要があります。私はコードを書きました:

    public void starttwoprocessing () {
    final Thread tworunprocessing = new Thread(new Runnable() {
            public void run() {
            FlashLight.onFlashResume();
            handler.post(new Runnable() {
                public void run() {
                    camera.takePicture(null, null, photoCallback);                      
                }
            });
        }
    });
    tworunprocessing.start();
}

最初の開始:

camera.takePicture(null, null, photoCallback);

二番目:

FlashLight.onFlashResume();

同じ結果で場所を変更した後。この場合、私は最初のショットを取得し、フラッシュは後で開始されます。 Thread.sleep(...);助けにならない

同時にフラッシュを開始し、すぐに写真を撮る方法は? ありがとう


次のように書かれています。

public class Launcher
{
    public void main(String args[]) throws IOException, InterruptedException
      {

        try {
        Process[] proc = new Process[2];
        proc[0] = new ProcessBuilder("FlashPreview.onFlashResumeStart()").start();
        Thread.sleep(3000);
        proc[1] = new ProcessBuilder("camera.takePicture(null, null, photoCallback)").start();

        try {
            Thread.sleep(3000);
        }
        catch (InterruptedException ex)
        {
        }
        proc[0].destroy();
        Thread.sleep(3000);
        proc[1].destroy();

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
      }
}

呼ばれる:

mk = new Launcher();
        try {
            mk.main(null);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

何かが間違っています。まったく機能せず、クラッシュはありませんが、ログに書き込みました:07-05 16:38:58.217: W/System.err(30934): java.io.IOException: Error running exec(). コマンド: [FlashPreview.onFlashResumeStart()] 作業ディレクトリ: null 環境: [ANDROID_SOCKET_zygote=9, SECONDARY_STORAGE=/storage/extSdCard:/storage/UsbDriveA:/storage/UsbDriveB:/storage/UsbDriveC:/storage/UsbDriveD:/storage/ UsbDriveE:/storage/UsbDriveF、ANDROID_BOOTLOGO=1、EXTERNAL_STORAGE=/storage/sdcard0、ANDROID_ASSETS=/system/app、PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin、 ASEC_MOUNTPOINT=/mnt/asec、LOOP_MOUNTPOINT=/mnt/obb、BOOTCLASSPATH=/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/framework_ext.

4

2 に答える 2

2

スレッドを使用しても、プロセスは他のプロセスの後に実行されます。スレッドを使用すると、最初のプロセスが完了するまで 2 番目のプロセスを待機する必要がなくなります。しかし、2 つのプロセスを同時に起動する最も簡単な方法は、timeout または ProcessBuilderを使用することです。

また、最初のプロセスで 2 番目のプロセスを実行することをお勧めします。私にとっては、それが最善の解決策です。

PS privet, ne chasto yvidiw zdes svoih s ykrainu)))

于 2013-07-05T12:33:38.853 に答える
0

私は以下を実装しました:

class MyTask extends AsyncTask<Void, Void, Integer> {
@Override
protected void onPreExecute() {
  super.onPreExecute();
  FlashLight.onFlashResume();
}


@Override
protected Integer doInBackground(Void... params) {
  return null;
}

@Override
protected void onPostExecute(Integer result) {
  super.onPostExecute(result);
  camera.takePicture(null, null, photoCallback);         
}
}
于 2013-07-06T09:10:52.783 に答える