thanks for attention, I am working in project where it capture frames fps 
from camera of mobile phone. after each frame is processed to get bitmap 
using a native library with opencv SDK and after this bitmap is showed in 
an ImageView. this process to consume heap memory and to affect the 
performance the app. I add the next tag in the manifest.xml to increase the 
heap memory:

    <application
    android:name="app"
    android:largeHeap="true" />

With this, the app work fine when to generate an apk version in debug modem 
but when to generate an apk version in release mode, the app is very slow 
and doesn't fine, there is issues in the performance.

I worked with a logic using a SurfaceView component to get frames from 
camera, I use a SurfaceView because I need to use in background inside of 
the app, I want to ask you, how do I solve this problem, counting on your 
help.

I am using this logic to get frames:

    public synchronized void onPreviewFrame(final byte[] data, final Camera 
camera) {
        executorService.execute(new Runnable() {
            public void run() {

                            
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);

                    Camera.Parameters parameters = camera.getParameters();
                    orientation = 
OrientationDevice.getOrientationDevice().getOrientation();
                    orientation = normalize(orientation);

                   //converter yuv to bitmap
                   int width = parameters.getPreviewSize().width;
                   int height = parameters.getPreviewSize().height;
                   YuvImage yuv = new YuvImage(data, 
parameters.getPreviewFormat(), width, height, null);
                   ByteArrayOutputStream out = new ByteArrayOutputStream();
                  yuv.compressToJpeg(new Rect(0, 0, width, height), 80, out);
                 byte[] bytes = out.toByteArray();
                 Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, 
bytes.length);

               // rotate image 
               if (cameraId == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                    matrix.setScale(-1, 1);
                    matrix.postTranslate(bitmap.getWidth(), 0);
                    matrix.postRotate(rotation + 90);
                } else {
                    matrix.postRotate(rotation + 90);
                }                        

               // process bitmap from method jni
                ....

            if (bitmap != null && !bitmap.isRecycled()) {
                bitmap.recycle();
                bitmap = null;
            }


               camera.addCallbackBuffer(data);

                return;

        });

    }

};

Thanks for your attention, can you help me, please.

-- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/android-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/android-developers/7453281f-ca9a-4a8b-9f9e-96242604ff5a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to