private synchronized void autoFocusAgainLater() {
   if (!stopped && outstandingTask == null) {
     AutoFocusTask newTask = new AutoFocusTask();
     try {
       newTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
       outstandingTask = newTask;
     } catch (RejectedExecutionException ree) {
       Log.w(TAG, "Could not request auto focus", ree);
     }
   }
 }
 @SuppressLint("NewApi")
 private synchronized void autoFocusAgainLater() {
   if (!stopped && outstandingTask == null) {
     AutoFocusTask newTask = new AutoFocusTask();
     try {
       if (Build.VERSION.SDK_INT >= 11) {
         newTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
       } else {
         newTask.execute();
       }
       outstandingTask = newTask;
     } catch (RejectedExecutionException ree) {
       Log.w(TAG, "Could not request auto focus", ree);
     }
   }
 }
 synchronized void stop() {
   if (useAutoFocus) {
     try {
       camera.cancelAutoFocus();
     } catch (RuntimeException re) {
       // Have heard RuntimeException reported in Android 4.0.x+; continue?
       Log.w(TAG, "Unexpected exception while cancelling focusing", re);
     }
   }
   if (outstandingTask != null) {
     outstandingTask.cancel(true);
     outstandingTask = null;
   }
   active = false;
 }