0

在我拍摄 3 张照片后,相机停止响应(崩溃)。如果我尝试重新启动应用程序相机状态 == 锁定并且默认相机也被锁定。示例代码:

private Runnable SimpleShot=new Runnable()
{
    @Override
    public void run()
    {
        int i=0;
        while (i<7)
        {
            simpleShot();
            try
            {
                Thread.sleep(1500);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            i++;
        }

    }
};

private void simpleShot()
{
    //System.gc();
    camera.takePicture(shutterCallback,rawCallback, this);
}

如果我不使用线程相机在第 3 次拍摄后也没有响应。请帮忙。在结束方法 onPictureTaken 中,我调用 camera.startPreview();

LogCat http://pastebin.com/qDcthyNe

    @Override
public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera)
{
    if(Utils.isSDAval() && Utils.PrepareAppFolder())
    {
        String path = Utils.APP_FOLDER+"/"+"APP"+"_"+Utils.getDate()+ CameraPrefsActivity.EXT_PIC;
        try
        {
            FileOutputStream os = new FileOutputStream(path);
            os.write(paramArrayOfByte);
            os.close();

        } catch (Exception e)
        {
            Utils.ShowInfo(this,getString(R.string.app_error_io));
            e.printStackTrace();
        }

        Utils.ShowInfo(this,getString(R.string.app_shot_ok));
        SharedPreferences main_pref = PreferenceManager.getDefaultSharedPreferences(this);
        String string_format = main_pref.getString("pref_preview_time","0");

        int timer_val = -1;
        if(string_format.contains("0"))
        {
            timer_val = -1;
        }

        if(string_format.contains("1"))
        {
            timer_val = 1;
        }

        if(string_format.contains("3"))
        {
            timer_val = 3;
        }

        if(string_format.contains("5"))
        {
            timer_val = 5;
        }

        if(string_format.contains("10"))
        {
            timer_val = 10;
        }

        if(timer_val > 0)
        {
            Intent intent = new Intent(this,CameraPreview.class);
            CameraPreview.setupActivity(path,timer_val);
            startActivity(intent);
        }

    }
    else
    {
        Utils.ShowInfo(this,getString(R.string.app_error_sd));
    }

    paramCamera.startPreview();
}
4

1 回答 1

1

家伙有同样的问题,显然是模拟器,尝试在对他有用的真实设备上运行它。

于 2012-12-26T14:42:01.667 回答