如何在Android的活动结束后,松开相机? [英] How to release camera after activity ends in Android?

查看:132
本文介绍了如何在Android的活动结束后,松开相机?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的工作,需要扫描QR code,然后点击图片的应用程序,但有时恰巧摄像头应用程序崩溃和它说,Android相机已停止工作,设备需要重新启动正常运作。

我希望能够从我的活动本身释放的相机,以避免后来坠毁在任何情况下。
帮助需要!

code进行扫描:

  @覆盖
 公共无效的onCreate(捆绑savedInstanceState)
   {
  super.onCreate(savedInstanceState);
       尝试{
       意向意图=新意图(com.google.zxing.client.android.SCAN);
          intent.putExtra(SCAN_MODE,QR_ code_MODE);
          startActivityForResult(意向,0);
       }
       赶上(例外五)
       {
         //错误
       }
    }公共无效的onActivityResult(INT申请code,INT结果code,意图意图)
   {
     如果(要求code == 0)
      {
      如果(结果code == RESULT_OK)
     {
        字符串内容= intent.getStringExtra(SCAN_RESULT);
        showPass(内容);     }
      否则,如果(结果code == RESULT_CANCELED)
      {
          showFail();
      }
      }
   }

code对于点击图片:

 公共无效takephoto(视图V)
{     意图cameraIntent =新意图(android.provider.MediaStore.ACTION_IM​​AGE_CAPTURE);
     startActivityForResult(cameraIntent,CAMERA_REQUEST);
}保护无效的onActivityResult(INT申请code,INT结果code,意图数据)
{
    如果(要求code == CAMERA_REQUEST)
    {
              。位图的照片=(位图)data.getExtras()获得(数据);
               //一些动作。
    }
}


解决方案

在您的活动你的的onDestroy 方法,下面放code:

 保护无效的onDestroy(){如果(相机!= NULL){
            camera.stop preVIEW();
            camera.set previewCallback(NULL);            camera.release();
            摄像头= NULL;
        }
}

如果您使用的是独立的preVIEW类,然后在下面添加code在于:

 公共无效surfaceDestroyed(SurfaceHolder持有人){        如果(相机!= NULL){
            camera.stop preVIEW();
            camera.set previewCallback(NULL);            camera.release();
            摄像头= NULL;
        }    }

I am working on an application that requires to scan a QR code and click pictures, but sometimes it so happens that the camera application crashes and it says that the Android Camera has stopped working and the device needs to be restarted for proper functioning.

I want to be able to release the camera from my activity itself to avoid it crashing later in any case. Help needed!

CODE FOR SCANNING:

 @Override
 public void onCreate(Bundle savedInstanceState)
   {
  super.onCreate(savedInstanceState);


       try{
       Intent intent = new Intent("com.google.zxing.client.android.SCAN");
          intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
          startActivityForResult(intent, 0);
       }
       catch(Exception e)
       {
         // ERROR
       }
    }

public void onActivityResult(int requestCode, int resultCode, Intent intent) 
   {
     if (requestCode == 0) 
      {
      if (resultCode == RESULT_OK)
     {
        String contents = intent.getStringExtra("SCAN_RESULT");
        showPass(contents);

     }
      else if (resultCode == RESULT_CANCELED) 
      {
          showFail();
      } 
      }
   }

CODE FOR CLICKING PICTURE :

   public void takephoto(View v)
{

     Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
     startActivityForResult(cameraIntent, CAMERA_REQUEST);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    if (requestCode == CAMERA_REQUEST)
    {
              Bitmap photo = (Bitmap) data.getExtras().get("data");
               // some action.
    }
}

解决方案

Put Below code in your onDestroy method of your activity:

protected void onDestroy(){

if(camera!=null){
            camera.stopPreview();
            camera.setPreviewCallback(null);

            camera.release();
            camera = null;
        }


}

If you are using separate Preview class then add below code in that:

public void surfaceDestroyed(SurfaceHolder holder) {

        if(camera!=null){
            camera.stopPreview();
            camera.setPreviewCallback(null);

            camera.release();
            camera = null;
        }

    }

这篇关于如何在Android的活动结束后,松开相机?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆