如果相机已被其他应用程序使用,如何向用户显示消息

时间:2015-04-20 14:42:49

标签: android android-camera

public void onResume() {
    super.onResume();
    boolean error = false;
    try {
    Camera = Camera.open(1);
  } catch (RuntimeException ex) {
    error = true;
    ex.printStackTrace();
}

在这里更改了代码。

如果已在其他应用程序中打开相机,则显示警告对话框消息。

if(error){
        new AlertDialog.Builder(this)
                .setMessage("Camera in use ")
                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                finish();
            }
        })
        .setIcon(android.R.drawable.ic_dialog_alert)
        .show();

    }

这里使用了finish(),只是为了避免应用程序崩溃。

    finish();

     if (mCamera != null) {
            mCamera.startPreview();
           mPreview.setCamera(mCamera);

       }
    }



 public void finish() {
        ViewGroup view = (ViewGroup) getWindow().getDecorView();
        view.removeAllViews();
        super.finish();
    }

它正在进入if条件,但它没有显示警告对话框。相反,它崩溃了应用程序。但是当我关闭if语句后使用finish()时。它只是关闭应用程序而不会崩溃。

E / WindowManager:android.view.WindowLeaked我在应用程序关闭时收到此错误。

如何避免此错误并向用户显示一个对话框。

1 个答案:

答案 0 :(得分:1)

您正在泄露Window,因为您在Dialog完成之前没有解雇Activity。如果另一个Camera正在使用Application并且该应用超出了范围,那么该应用的开发人员就会采用不良做法;系统资源应该尽快发布。