Android - камера с двойным кликом - PullRequest
0 голосов
/ 22 июля 2010

Ниже приведены важные вещи. Проблема заключается в следующем: у меня камера делает снимок, когда я нажимаю на поверхность и сохраняю изображение на SD-карту . Если я щелкну два или более раз, прежде чем камера сохранит изображение, камера зависнет и потребуется перезагрузка телефона. Я думаю, что все материалы для релиза верны. Я даже реализовал логическое значение onProgress, чтобы выполнить какое-то действие, но, похоже, оно не работает.

public void onClick() {
    if(!onProgress)
    mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] imageData, Camera c) {
        onProgress=true;
        if (imageData != null) {
            Intent mIntent = new Intent();
            try {
                FileOutputStream out = new FileOutputStream(
                        "/sdcard/Deltio1.jpg");
                Bitmap e = BitmapFactory.decodeByteArray(imageData, 0,
                        imageData.length);
                e.compress(Bitmap.CompressFormat.JPEG, 65, out);
                out.close();
                Intent i = new Intent(ACT, MediaSend.class);
                ACT.startActivity(i);
            }
            catch (Exception e) {
                Toast
                .makeText(
                        CON,
                        "???ß??µa st?? ap????e?s?.?eßa???e?te ?t? ??ete sdcard e??atest?µ???",
                        Toast.LENGTH_LONG).show();
                ACT.finish();
            }

            // FileUtilities.StoreByteImage(mContext, imageData,
            // 50, "ImageName");

            SystemClock.sleep(2000);
            mCamera.startPreview();

            onProgress=false;

            // setResult(FOTO_MODE,mIntent);
            // finish();
        }
    }
};

Вы можете сослаться на весь код .

1 Ответ

2 голосов
/ 22 июля 2010

Проблема в вашем onProgress флаге.Вам следует установить значение true в

public void onClick() {
        if(!onProgress){
                     **onProgress = true;** 
           mCamera.takePicture(null, mPictureCallback, mPictureCallback);
                  }

    }

Обычно между takePicture() и PictureCallback существует задержка не менее 300-500 миллисекунд, поскольку датчик камеры должен: 1. Выполнить операцию автофокусировки 2.Остановка предварительного просмотра. 3. Захват данных предварительного просмотра. 4. Кодирование необработанных данных. 5. И, наконец, вызов метода PictureCallback.

С уважением, Анируд.

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