2013-01-20 62 views
1

我有一個手電筒活動。通常它工作正常,但當我去任何其他活動,它停止工作!使用onResume刷新活動()

所以我想在我回到手電筒活動時刷新代碼。

我覺得使用onResume()刷新會幫助我最好,但怎麼做呢?

public class FlashLightActivity extends Activity { 

//flag to detect flash is on or off 
private boolean isLighOn = false; 

private Camera camera; 

private Button next1, next2; 

@Override 
protected void onStop() { 
    super.onStop(); 

    if (camera != null) { 
     camera.release(); 
    } 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


     next1 = (Button) findViewById(R.id.ebtn28_answer); 
     next1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(view.getContext(), FullScreen.class); 
       startActivityForResult(myIntent, 0); 
      } 

     }); 

    next2 = (Button) findViewById(R.id.buttonFlashlight); 

    Context context = this; 
    PackageManager pm = context.getPackageManager(); 

    // if device support camera? 
    if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { 
     Log.e("err", "Device has no camera!"); 
     return; 
    } 

    camera = Camera.open(); 
    final Parameters p = camera.getParameters(); 

    next2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      if (isLighOn) { 

       Log.i("info", "torch is turn off!"); 

       p.setFlashMode(Parameters.FLASH_MODE_OFF); 
       camera.setParameters(p); 
       camera.stopPreview(); 
       isLighOn = false; 

      } else { 

       Log.i("info", "torch is turn on!"); 

       p.setFlashMode(Parameters.FLASH_MODE_TORCH); 

       camera.setParameters(p); 
       camera.startPreview(); 
       isLighOn = true; 

      } 

     } 
    }); 

} 
    }                

回答

2

您需要重寫onPause和onResume。在onPause中,您需要釋放相機。在onResume中,您需要重新請求它。如果您不是活動活動時試圖保持它,相機不會喜歡它。

public void onPause(){ 
    super.onPause(); 
    if(camera != null){ 
     camera.release(); 
     camera = null; 
    } 
} 

public void onResume(){ 
    super.onResume(); 
    //Need to release if we already have one, or we won't get the camera 
    if(camera != null){ 
     camera.release(); 
     camera = null;   
    } 
    try { 
     camera = Camera.open(); 
    } 
    catch (Exception e){ 
    } 

} 
+0

你是對的。但是,你可以在這裏給你建議的代碼很新手嗎? –