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枚目以降も反応しません。助けてください。end メソッド 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 に答える