2014-11-17 2 views
0

Мне нужно использовать камеру телефона для приложения, но я новый программист, и я не мог найти сайт в любом месте с полным ответом.Принимать несколько фотографий с помощью камеры приложения на программирование Android

Это моя основная активность:

общественный класс MainActivity расширяет активность {

private Camera cameraObject; 
    private ShowCamera showCamera; 
    public static Camera isCameraAvailiable(){ 
     Camera object = null; 
     try { 
     object = Camera.open(); // attempt to get a Camera instance 
     } 
     catch (Exception e){ 
     // Camera is not available (in use or does not exist) 
     } 
     return object; // returns null if camera is unavailable 
    } 

    private PictureCallback capturedIt = new PictureCallback() { 

     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 

     Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data .length); 
     if(bitmap==null){ 
     Toast.makeText(getApplicationContext(), "not taken", Toast.LENGTH_SHORT).show(); 
     } 
     else 
     { 
     Toast.makeText(getApplicationContext(), "taken", Toast.LENGTH_SHORT).show();  
     } 
     cameraObject.release(); 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
     cameraObject = isCameraAvailiable(); 
     showCamera = new ShowCamera(this, cameraObject); 
     FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview); 
     preview.addView(showCamera); 
} 

    public void snapIt(View view){ 
     cameraObject.takePicture(null, null, capturedIt); 
    } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

+0

Вы можете запустить цикл, который вызывает 'cameraObject.takePicture (null, null, captureIt);' несколько раз после определенного количества времени. –

+0

, вы также можете использовать обработчик касания для объекта 'showCamera', который внутренне вызывает ваш метод' snapIt'. –

+0

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

ответ

0

Создать фрагмент, раскладка для получения изображений использование предпринимает (может быть ImageView только для последнего, GridView со всеми сделанными фотографиями, w/e имеет больше смысла для вашего приложения) и кнопкой «Новая картинка». Затем вам просто нужно добавить onClickListener к кнопке, которая снова вызывает активность камеры и добавляет фотографию туда, где вы планируете их хранить. И тогда просто позвоните этому фрагменту, когда вы возьмете pic (Внутри обратного вызова, когда он берет рис) и прибыль!

+0

спасибо, everythimg работает, за исключением кнопки, которая позволяет мне взять новый рисунок, как перезапустить предварительный просмотр камеры? –

+0

Сделайте обратный вызов активности, вызывающей функцию snapIt – holandaGo