проблема с фотографированием с помощью камеры Android - PullRequest
3 голосов
/ 31 августа 2011

У меня есть приложение, в котором я использую камеру Android для съемки. Я построил свою собственную камеру Android. И фотографии делаются нажатием кнопки.

Примерно так:

  public void onClick(View arg0) {
  mCamera.takePicture(null, mPictureCallback, mPictureCallback);
  }


Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] imageData, Camera c) {

        if (imageData != null) {
            Intent mIntent = new Intent();


            Bundle b = new Bundle();
            b.putByteArray("imageData", imageData);
            Intent i = new Intent(mContext, ViewPhoto.class);
            i.putExtras(b);
            startActivity(i);

            setResult(FOTO_MODE, mIntent);
            finish();

        }
    }
};

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

Большая проблема состоит в том, что если я делаю несколько фотографий, одну за другой, нажимая кнопку, мое приложение вылетает в этой строке:

mCamera.takePicture(null, mPictureCallback, mPictureCallback);

Вот так выглядит мой logcat:

java.lang.RuntimeException: takePicture failed
at android.hardware.Camera.native_takePicture(Native Method)
at android.hardware.Camera.takePicture(Camera.java:746)
at android.hardware.Camera.takePicture(Camera.java:710)
at com.Xperiaproject.TakePhoto.onClick(TakePhoto.java:216)
at android.view.View.performClick(View.java:2534)
at android.view.View$PerformClick.run(View.java:9210)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
at dalvik.system.NativeStart.main(Native Method)

Есть идеи, как это решить?

РЕДАКТИРОВАТЬ: Я также пытался:

mCamera.takePicture(null, null, mPictureCallback);

но вылетает после нескольких картинок !!!

!!!!!!!! Это весь мой код: http://pastebin.com/0U1pQSak

Ответы [ 3 ]

6 голосов
/ 31 августа 2011

Убедитесь, что вы снова позвонили Camera.startPreview() после того, как сделали снимок.

8) После съемки изображения предварительный просмотр остановится.Чтобы сделать больше фотографий, сначала вызовите startPreview () снова.

из документации класса Camera

2 голосов
/ 03 октября 2011

У меня была похожая проблема в этой теме , и мне удалось ее решить, добавив System.gc() непосредственно перед вызовом takePicture().

System.gc();
CameraParameters.mCamera.takePicture(null, null, jpegCallback);
1 голос
/ 01 сентября 2011

Вот код, который я использовал, и он работает https://github.com/commonsguy/cw-advandroid/blob/master/Camera/Picture/src/com/commonsware/android/picture/PictureDemo.java

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