gpt4 book ai didi

android - Android 应用无法打开手电筒/手电筒

转载 作者:搜寻专家 更新时间:2023-11-01 07:57:13 26 4
gpt4 key购买 nike

我正在练习构建 Android 应用程序,并认为从手电筒开始是一个很好的初学者步骤。在我的代码多次崩溃后,我的应用程序变得稳定,不再强制关闭。

但是,LED 相机闪光灯并没有像我希望的那样打开。

任何关于我做错了什么的见解都会很有帮助。

public class PMATorch extends Activity {

private Camera camera;
private Button button;
private Camera.Parameters param;
private boolean torchStat = false;
public Camera getCameraInstance() {
Camera c = null;
try {
c = camera.open();
} catch (Exception e) {
}
return c;
}

private void torchOn(){
if (camera != null){
Parameters param = camera.getParameters();
param.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(param);
camera.startPreview();
torchStat = true;
}
}
private void torchOff(){
if (camera != null){
Parameters param = camera.getParameters();
param.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(param);
camera.stopPreview();
torchStat = false;
}
}

@Override
protected void onDestroy() {
if (camera != null) {
camera.release();
camera = null;
}
super.onDestroy();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pmatorch);
camera = getCameraInstance();
button = (Button) findViewById(R.id.torchOnOff);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

if (torchStat = false) {
torchOn();

} else {
torchOff();
}
}
});
}
}

编辑:我在 AndroidManifest.xml 中设置了权限和功能。

编辑 2:将代码更新为我刚刚尝试运行的代码。

最佳答案

private Camera camera;

从未被分配任何东西。因此 if (camera != null){torchOn 中不会执行任何操作。你可能想做类似的事情:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
camera = getCameraInstance(); // <<

public Camera getCameraInstance() {
Camera c = null;
try {
c = camera.open();
} catch (Exception e) {
}
return c;
}

还有两个小问题:* catch (Exception e) {} 隐藏了此处可能出错的任何内容。我至少会添加一个日志语句,例如 Log.e("PMATorch", "getCameraInstance", e)。* 外观问题:camera.open() 乍一看会尖叫 NullPointerException。更改为 Camera.open() - 该方法是静态的并且属于该类。

例如(如果你去掉局部变量,IMO 会更好读,所以我也删除了它)

public Camera getCameraInstance() {
try {
return Camera.open();
} catch (Exception e) {
Log.e("PMATorch", "getCameraInstance", e);
return null;
}
}

进一步帮助调试此类问题。将Log添加到实际导致看似不起作用的 Action 的地方。

private void torchOn(){
if (camera != null){
Log.d("PMATorch", "now actually turning on");
...

您会发现,在很多情况下,您认为不起作用的代码实际上并没有执行。发生这种情况时,使用更多日志或使用调试器并单步执行代码,追溯通往那里的路径。

关于android - Android 应用无法打开手电筒/手电筒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26620401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com