2011-09-02 2 views
0

Я хочу, чтобы захватить изображения через IntentЗахват изображений с умыслом без нажатия на кнопку камеры снова

Intent cameraIntent = новый Intent (android.provider.MediaStore.ACTION_IMAGE_CAPTURE)

, но проблема в том, что с этим кодом камера запускается, и пользователь должен щелкнуть по кнопке камеры, чтобы захватить изображение, но я хочу, чтобы камера начинала и снимала изображение без какого-либо взаимодействия с пользователем.

Я хочу сделать это с помощью INTENT

ответ

0

Это невозможно. Существует только два варианта:

  1. Запуск приложения камеры с помощью намерения. Затем пользователь использует приложение «Камера» обычным способом - т. Е. Нажимает кнопку при ее готовности.

  2. Использование Camera класс - это гораздо больше работы по сравнению с запуском приложения камеры с помощью намерения. Но это дает вам полный контроль.

0

При вызове Намерение камеры вы в основном «запустить» приложение камеры (или другое приложение, которое зарегистрировано на этом намерении), так что в принципе, вы можете не контроль, как это работает. Вы можете использовать API камеры ... посмотрите here

1

То есть, как я это сделал: Объявите экземпляр Camera и SurfaceHolder.

Создание CallBackPicture объекта и реализует метод на PictureTaken (метод запущен, когда вы хотите сфотографировать)

    mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
       Camera.PictureCallback mCall = new Camera.PictureCallback() 
       {  
        @Override 
        public void onPictureTaken(byte[] data, Camera camera) 
        { 
              //DO YOUR STUFF 
        } 
       }; 

       // Open the instance of camera 
       mCamera = Camera.open(); 
       try { 
       // Call the preview (not sure if it is working without this call 
       mCamera.setPreviewDisplay(mSurfaceHolder); 
       mCamera.startPreview(); 
       } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       } 

       if(mCamera == null) Log.i(TAG, "mCamera is null"); 
       // Will call the onPictureTaken implemented above 
       // Look at the documentation : public final void takePicture 

       mCamera.takePicture(null, null, mCall); 
       mCamera.stopPreview(); 
       mCamera.release(); 

Изменяя это, вы должны быть в состоянии делать то, что вы хотите .. Don Не забудьте также изменить Manifest.XML, но я думаю, вы уже это сделали!

EDIT: иногда есть некоторая проблема с stoppreview() и Release() .. Итак, вещь я сделал это:

if (mCamera != null) { 
    mCamera.release(); 
    mCamera = null; 
} 
mCamera = Camera.open(); 
etc... 
Смежные вопросы