2012-05-20 3 views
4

Я автоматически фокусирую каждые 3 секунды, и мой код работает на моем аппаратном устройстве (Galaxy S), но на моем AVD (виртуальном устройстве) обратный вызов, который должен быть вызван после завершения фокуса, никогда не вызван. Кто-то знает почему?android: onAutoFocus() не запускается на android 4.0 (мороженое сэндвич) виртуальное устройство

public void onPreviewStart(){ 
     Log.v(TAG,"onPreviewStart() focusTimer: "+focusTimer); 
     if(this.autoFocus == true && getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)){ 
      focusTimer = new Runnable() { 
       public void run() { 
        Log.d(TAG, "focus run.."); 
        if(preview != null && preview.camera != null && !saving){ 
         focusing = true; 

         Log.d(TAG, "focusing.."+preview); 
         // ----> this gets called each 3 seconds 
         preview.camera.autoFocus(new Camera.AutoFocusCallback() { 

          public void onAutoFocus(boolean success, Camera camera) { 
           // ----> this never gets called on ICS :(
           Log.d(TAG, "onAutoFocus()"); 
           focusing = false; 
           if(shootButtonWasPressed){ // if shooting was scheduled 
            Log.d(TAG, "shootButtonWasPressed"); 
            shoot(); 
            shootButtonWasPressed = false; 
           } 
          } 
         }); 
        } 
        preview.postDelayed(focusTimer, 3000); 
       } 
      }; 
      Log.v(TAG,"focusTimer run()"); 
      focusTimer.run(); 
     }else{ 
      focusTimer = null; 
     } 
    } 

ответ

2

Вы код, кажется, прав. Проблема в том, что на вашем AVD вы камера - это ваша веб-камера или что-то в этом роде. Эта веб-камера имеет статический фокус, поэтому вы не можете работать с этим кодом ...

Если вы хотите протестировать это, попробуйте обновить свой телефон до 4.0, если вам нужна помощь с вами в галактике s смотрите здесь: http://forum.xda-developers.com/forumdisplay.php?f=656

Надеюсь, что вы увидите проблему сейчас!

С наилучшими пожеланиями

сафари

+1

Я не понимаю, почему getPackageManager(). HasSystemFeature (PackageManager.FEATURE_CAMERA_AUTOFOCUS) возвращает истину тогда. Если веб-камера не имеет функции фокуса, андроид должен обязательно вернуть false здесь. Или я не вижу здесь? – stoefln

+0

Вы правы, он возвращает true, но аппаратный элемент (веб-камера) нормально не поддерживает это. Попробуйте это на реальном устройстве, там он будет работать! – safari

+0

Вы правы - он работает на реальном аппаратном устройстве – stoefln

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