2013-07-05 7 views
1

Мне нужно запустить два процесса одновременно. Я написал код:Одновременный запуск двух процессов

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: Ошибка при выполнении 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.jar: /system/framework/android.policy.jar: /system/framework/services.jar : /system/framework/apache-xml.jar: /system/framework/sec_edm.jar: /system/framework/seccamera.jar, ANDROID_DATA =/data, LD_LIBRARY_PATH =/vendor/lib:/system/lib, ANDROID_ROOT =/system, ANDROID_PROPERTY_WORKSPACE = 8,66560, VIBE_PIPE_PATH =/dev/pip es]

+1

Я думаю, что это не ясно, что ваш вопрос –

+0

спасибо, исправил – Forme

+0

о одновременно. Стандартное приложение камеры, вспышка срабатывает синхронно с затвором камеры. Я хочу, чтобы тот же результат был достигнут. – Forme

ответ

2

даже используя Threads, ваши процессы будут работать после eche other. Использование Threads означает, что второй процесс не нужно ждать, пока первый выполняется. Но самый простой способ запускать два процесса одновременно - это использование timeout or ProcessBuilder

Также неплохо было бы запустить второй процесс в первом. Что касается меня, это лучшее решение.

P.S. бирючина, пе chasto yvidiw здес svoih s ykrainu)))

+0

privet, da est takoe, no tut proshe отлуч получите, bez holivara. – Forme

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);   
} 
} 
Смежные вопросы