2013-05-23 13 views
6

QRコードをスキャンして画像をクリックする必要があるアプリケーションで作業していますが、ときどきカメラアプリケーションがクラッシュし、Android Cameraが正常に機能しなくなり、正常に機能するためにデバイスを再起動する必要があることがあります。Androidでアクティビティが終了した後にカメラを解放するには?

どのような場合でも後でクラッシュするのを防ぐために、自分のアクティビティからカメラを解放したいと考えています。 ヘルプが必要です!

スキャンするためCODE:画像をクリックFOR

@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:あなたは別のを使用している場合

protected void onDestroy(){ 

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

      camera.release(); 
      camera = null; 
     } 


} 

:あなたの活動のあなたのonDestroy方法でコードの下に入れて

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

答えて

17

プレビュークラスを開き、以下のコードを追加してください:

public void surfaceDestroyed(SurfaceHolder holder) { 

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

      camera.release(); 
      camera = null; 
     } 

    } 
+0

私は単にカメラとスキャンアプリケーションにインテントを渡すだけですか?私はどうしたら同じことをするのですか? –

+0

あなたのスキャンアプリケーションに最初のコードを入れてください。 – Riser

+5

あなたのアクティビティのonPauseメソッドでそれを実行してください。 –

関連する問題