Переходите от приложения к камере, делайте фотографии и сохраняйте их в колонке - PullRequest
3 голосов
/ 10 декабря 2011

У меня есть требование, что я хочу перейти от своего приложения к камере, и затем снимок фотографии должен быть сохранен в базе данных, затем из базы данных я хочу показать данные столбца в виде списка с другими данными. У меня есть представление о представлении списка, использовании представления изображения и т. Д. Я просто не знаю, с чего начать в отношении доступа к камере и сохранения ее в столбце в базе данных ?? какие-нибудь советы или даже учебник, на которые я мог бы взглянуть, которые были бы полезны?

public class CameraAPI extends Activity implements SurfaceHolder.Callback{

public Camera camera;
MediaRecorder mediaRecorder;



public void onCreate (Bundle savedInstanceState){

    super.onCreate(savedInstanceState);
    setContentView(R.layout.camera);

    SurfaceView surface = (SurfaceView)findViewById(R.id.acccam);
    SurfaceHolder holder = surface.getHolder();
    holder.addCallback(this);
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

        public void tackPhoto(View view){
            takePicture();

    }




public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {
    // TODO Auto-generated method stub

}



public void surfaceCreated(SurfaceHolder holder) {
    // TODO Auto-generated method stub
    if (mediaRecorder == null){
        try{
            camera = camera.open();
            camera.setPreviewDisplay(holder);
            camera.startPreview();

        }catch (IOException e){
            Log.d("CAMERA", e.getMessage());
        }

    }
}



public void surfaceDestroyed(SurfaceHolder holder) {
    // TODO Auto-generated method stub
    camera.stopPreview();
    camera.release();
}

public void takePicture(){
    camera.takePicture(shutterCallback, rawCallback, jpegCallback);

}


ShutterCallback shutterCallback= new ShutterCallback()
{
    public void onShutter(){

    }
};

    PictureCallback rawCallback = new PictureCallback(){
        public void onPictureTaken(byte[] data, Camera camera){

        }
    };

    PictureCallback jpegCallback = new PictureCallback(){
        public void onPictureTaken(byte[] data, Camera camera){
            FileOutputStream outStream = null;
            try{
                outStream = new FileOutputStream("/sdcard/Image.jpg");
                outStream.write(data);
                outStream.close();
            } catch (FileNotFoundException e){
                Log.d("CAMERA", e.getMessage());
            } catch (IOException e){
                Log.d("CAMERA", e.getMessage());
            }
        }
};
}

это код API моей камеры ... есть ли способ настроить его, а затем добавить в базу данных вместо карты SD?

спасибо,

Stefan

Ответы [ 3 ]

0 голосов
/ 10 декабря 2011

Перейдите по следующей ссылке.Хороший пример захвата изображения из вашего приложения: Захват изображения из вашего приложения с помощью камеры

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

0 голосов
/ 12 декабря 2011
  1. Сначала сохраните сделанные снимки в кэш-памяти устройства, преобразуйте это сохраненное изображение в ByteArray, а затем сохраните его в базе данных. Сделайте это в фоновом потоке, чтобы не мешать потоку пользовательского интерфейса. Не забудьте удалить это изображение из кэша, как только ваше изображение будет сохранено в вашей базе данных.

  2. Или попробуйте напрямую сохранить этот переданный байтовый массив в вашей базе данных

    values.put (MyBaseColumn.MyTable.ImageColumn, data);

и вставьте эти данные в вашу базу данных.

Надеюсь, это сработает.

Перейдите по ссылке , которая поможет сохранить изображение в базе данных

0 голосов
/ 10 декабря 2011

Запустите здесь для справки по использованию камеры, затем прочитайте эту страницу , чтобы узнать об использовании базы данных SQLite.

...