【问题标题】:Why is my Android app camera preview running out of memory on my AVD?为什么我的 AVD 上的 Android 应用程序相机预览内存不足?
【发布时间】:2010-04-27 22:47:10
【问题描述】:

我还没有在实际设备上尝试过这个,但期待类似的结果。 无论如何,长话短说,每当我在模拟器上运行我的应用程序时,它都会由于内存不足异常而崩溃。

我的代码实际上与 google 的相机预览 API 演示基本相同,运行良好。

应用程序中的唯一文件(我创建/使用)如下-

package berbst.musicReader;

import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

/*********************************
* Music Reader v.0001
* Still VERY under construction.
* @author Bryan
*
*********************************/

public class MusicReader extends Activity {
private MainScreen main;
    @Override
    //Begin activity
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        main = new MainScreen(this);
        setContentView(main);

    }

class MainScreen extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder sHolder;
    Camera cam;

    MainScreen(Context context) {
        super(context);

        //Set up SurfaceHolder
        sHolder = getHolder();
        sHolder.addCallback(this);
        sHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        // Open the camera and start viewing
        cam = Camera.open();
        try {
           cam.setPreviewDisplay(holder);
        } catch (IOException exception) {
            cam.release();
            cam = null;
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // Kill all our crap with the surface
        cam.stopPreview();
        cam.release();
        cam = null;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        // Modify parameters to match size.
        Camera.Parameters params = cam.getParameters();
        params.setPreviewSize(w, h);
        cam.setParameters(params);
        cam.startPreview();
    }

}

}

【问题讨论】:

  • 我现在可以确认这也发生在真实设备上。

标签: android android-emulator


【解决方案1】:

确保在 AndroidManifest.xml 中添加了相机权限。显然,如果你不这样做(出于某种奇怪的原因),你会得到一个内存不足的异常。无论如何,它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2016-03-18
    相关资源
    最近更新 更多