2013-05-23 32 views
6

Tôi đang làm việc trên một ứng dụng yêu cầu quét mã QR và nhấp vào hình ảnh, nhưng đôi khi ứng dụng máy ảnh gặp sự cố và máy ảnh Android đã ngừng hoạt động và thiết bị cần được khởi động lại để hoạt động tốt.Cách phát hành camera sau khi hoạt động kết thúc trong Android?

Tôi muốn có thể tự giải phóng camera khỏi hoạt động của mình để tránh bị rơi sau này trong mọi trường hợp. Trợ giúp cần thiết!

MÃ CHO QUÉT:

@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(); 
     } 
     } 
    } 

MÃ CHO CÁCH CHỌN HÌNH ẢNH:

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. 
    } 
} 

Trả lời

17

Đặt Dưới mã trong phương pháp onDestroy của bạn hoạt động của bạn:

protected void onDestroy(){ 

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

      camera.release(); 
      camera = null; 
     } 


} 

Nếu bạn đang sử dụng riêng biệt Xem trước lớp rồi thêm mã bên dưới vào:

public void surfaceDestroyed(SurfaceHolder holder) { 

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

      camera.release(); 
      camera = null; 
     } 

    } 
+0

Điều gì sẽ xảy ra nếu tôi chỉ đơn giản truyền ý định cho máy ảnh và ứng dụng quét? Làm thế nào để tôi làm như vậy sau đó? –

+0

sau đó đặt mã đầu tiên vào ứng dụng quét của bạn .. – Riser

+5

Vui lòng thực hiện trong phương thức onPause của Hoạt động của bạn, tốt hơn là giải phóng nó ở đó. –

Các vấn đề liên quan