尝试复制byte []时内存不足

时间:2014-05-19 15:03:49

标签: android out-of-memory

我想从相机的手机中取出相框并将其发送给"处理器",所以我喜欢以下内容:

mCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() {
        int frame = 0;

        public synchronized void onPreviewFrame(byte[] data, Camera camera) {
            try {
                super.clone();
            } catch (CloneNotSupportedException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            frame++;
            if (frame == 1) {
                timestamp = System.currentTimeMillis();
            }
            duration = (System.currentTimeMillis() - timestamp) / 1000;
            Log.v("Time", "Time = " + duration);
            System.out.println("" + frame);

            try {
                camera.addCallbackBuffer(data);
                if (duration != 0) {
                    // dataArr.add(data);
                    if (duration <= 15) {
                        msg = handler.obtainMessage();
                        msg.obj = (byte[]) data.clone();
                        handler.sendMessage(msg);
                        // System.out.println("Sent from main!!");
                    } else {
                        stopVideo();
                    }                       
                }
                // Log.v("time", ""+dataArr.size());

但是,当我运行我的应用程序时,我得到了一个460816字节分配的内存不足&#34;错误。我的logcat喜欢:

FATAL EXCEPTION:main
java.lang.OutOfMemoryError
java.lang.Object.internalClone(Native Method)
java.lang .Object.clone(Object.jave.158)
at com.example.dechme.MainActivity$3.onPreviewFrame(MainActivity.java:151)

MainActivity中的第151行是

    msg.obj = (byte[]) data.clone();

我不知道如何解决此错误。如果你有一些线索,请告诉我。 感谢

0 个答案:

没有答案