在我的应用程序中,我有一个图像按钮,基本上可以打开和关闭闪光LED。代码第一次正常运行,即首先点击它开关LED和第二次点击它关闭它。但是后来没有任何事情发生了点击。我在Nexus S上测试它。
以下是ImageButton点击方法的代码。
public void ToggleTorch(){
final ImageButton tt = (ImageButton)findViewById(R.id.tt);
tt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
if (isFlashOn){
mycam.stopPreview();
isFlashOn = false;
} else {
mycam.startPreview();
isFlashOn = true;
}
}
});
}
从我的想法来看,它必须用SurfaceView做一些事情,因为我认为它在调用stopPreview时没有被破坏,但我不确定..
以下是onCreate方法的代码。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Check if Flash Light is Available
Boolean has_flash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
if(has_flash){
setContentView(R.layout.activity_main);
SurfaceView preview = (SurfaceView)findViewById(R.id.pSv);
SurfaceHolder holder = preview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
disableSleepMode();
initFlashLight();
ToggleTorch();
screenTorchOn();
} else {
setContentView(R.layout.activity_main);
disableSleepMode();
screenTorchOn();
}
}
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
而不是调用停止预览释放相机并使相机实例为空。要重新启动相机,请再次初始化相机。制作两种不同的方法,一种用于初始化相机,另一种用于释放相机。这将解决您的问题。