为什么我的手电筒在单击具有意图功能的按钮时关闭?

时间:2015-10-06 20:54:09

标签: android android-activity android-camera

我是Android编程的新手,我不明白为什么我的手电筒在点击按下Activity Intent的另一个按钮时会关闭?我搜索过这个,但没有发现类似的东西。我查看了其他人的想法,但最接近的是在我的主要活动中使用Service而不是Activity。可以将我的Activity更改为Service,还是另一种解决方法?

 tbOnOff = (ToggleButton) findViewById(R.id.togglebutton);

 tbOnOff.setOnCheckedChangeListener(new     CompoundButton.OnCheckedChangeListener() {
 public void onCheckedChanged(CompoundButton buttonView,
         boolean isChecked) {
     if (isChecked) {
         if (camera == null) {
             camera = Camera.open();
             parameters = camera.getParameters();
             parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
             camera.setParameters(parameters);
         }
     } else {
         if (camera != null) {
             parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
             camera.setParameters(parameters);
             camera.release();
             camera = null;
         }
     }
 }
 });

 boolean checkFlash = context.getPackageManager().hasSystemFeature(
     PackageManager.FEATURE_CAMERA_FLASH);
 if (!checkFlash) {
 tbOnOff.setEnabled(false);
 Toast.makeText(context, "LED Not Available!", Toast.LENGTH_LONG)
         .show();
 }
}

// release camera when onPause called

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    if (camera != null) {
        parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
        camera.setParameters(parameters);
        camera.release();
        camera = null;
    }
}

public void send(View arg1) {
    Intent i = new Intent(this, InformationActivity.class);         
    startActivity(i);
}

这是我的LED灯代码和意图。

1 个答案:

答案 0 :(得分:2)

当你开始一个新的Activity时,它将立即被带到前台,这意味着你原来的Activity也将被立即暂停。因为你关掉了onPause()中的手电筒,所以就是这样。

至于你的另一个问题,是的,如果你希望手电筒独立于Activity lifecycle,那么Service将是一种方法,就像其他任何事情一样你希望独立于Activity生命周期。