2017-02-02 6 views
0

Мне нужно вспышку фонарика камеры в определенное время, в идеале с точностью около 2 мс каждые 0,5 сек. Со звуком я справился так хорошо, но вызов setTorchMode, похоже, занимает почти 1/2 секунды. Я попытался поместить вызов в Runnable, но он (как и ожидалось) создает отставание. Вот мои измерения времени:setTorchMode очень медленный, как я могу ускорить вызов?

public void doFlash() { 
     if (cameraManager == null) return; 
     try { 
      Log.d(TAG,"1="+System.nanoTime()/1000000); 
      cameraManager.setTorchMode(cameraId, true); 
      Log.d(TAG,"2="+System.nanoTime()/1000000); 
      yield(); 
      Log.d(TAG,"3="+System.nanoTime()/1000000); 
      cameraManager.setTorchMode(cameraId, false); 
      Log.d(TAG,"4="+System.nanoTime()/1000000); 
      Log.d(TAG,"-------------"); 
     } catch (Exception e) { 
      Log.d(TAG, "Could not switch on flash"); 
     } 
    } 
} 

02-02 23: 06: 57,950 17528-17792/tech.glasgowneuro.attyseeg Д/EPFragment: 1 = 1662873286 02-02 23: 06: 58,668 17528-17792/tech.glasgowneuro.attyseeg D/EPFragment: 2 = 1662874004 02-02 23: 06: 58.668 17528-17792/tech.glasgowneuro.attyseeg D/EP: фрагмент: 3 = 1662874004 02-02 23: 06: 59.149 17528-17792/tech.glasgowneuro.attyseeg D/EPFragment: 4 = 1662874484 02-02 23: 06: 59.149 17528-17792/tech.glasgowneuro.attyseeg D/EPFragment: ------------- 02- 02 23: 06: 59.149 17528-17792/tech.glasgowneuro.attyseeg D/EP: 1 = 1662874484 02-02 23: 06: 59.649 17528-17792/tech.glasgowneu ro.attyseeg D/EPFragment: 2 = 1662874985 02-02 23: 06: 59,649 17528-17792/tech.glasgowneuro.attyseeg D/EP. Фрагмент: 3 = 1662874985 02-02 23: 07: 00.074 17528-17792/tech. glasgowneuro.attyseeg D/EPFragment: 4 = 1662875409

Я озадачен, почему эта функция занимает так много времени? Существуют ли другие вызовы, которые быстрее или как это можно сделать в течение 2 мс или меньше?

ответ

0

Вторым - это занимает от 1/3 до 1 секунды (Samsung Galaxy S7). В отличие от старой «камеры» это непригодно, если вы хотите мигать ...

Смежные вопросы