所以我遇到了一个小问题。我知道解决方案是明显而简单的,但我是编程的新手,似乎无法理解它。
基本上,我一直在使用Android Studio关注Flashlight教程。在本教程中,他们使用了一个简单的按钮,可以切换到Flashlight ON和Flashlight OFF模式。
我不想只使用一个按钮,而是想要使用ImageButton
代替整个屏幕,点击图像会打开手电筒并更改图像。
因此,我只是在闪存转为setImageResource
更改后修改代码。但不幸的是,点击该图片会让应用程序崩溃:(
希望有人可以帮助一个菜鸟!下面是我的主Java文件。
package com.dbz.flash;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.Toast;
public class MainActivity extends Activity {
private boolean isFlashOn = false;
private Camera camera;
private ImageButton btnSwitch;
@Override
protected void onStop() {
super.onStop();
if (camera != null) {
camera.release();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSwitch = (ImageButton) findViewById(R.id.btnSwitch);
Context context = this;
PackageManager pm = context.getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Log.e("err", "Device has no camera!");
Toast.makeText(getApplicationContext(),
"Your device doesn't have camera!",
Toast.LENGTH_SHORT).show();
return;
}
camera = Camera.open();
final Parameters p = camera.getParameters();
btnSwitch.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
if (isFlashOn) {
Log.i("info", "torch is turned off!");
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
isFlashOn = false;
//button.setText("Torch-ON");
btnSwitch.setImageResource(R.drawable.off);
} else {
Log.i("info", "torch is turned on!");
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
isFlashOn = true;
//button.setText("Torch-OFF");
btnSwitch.setImageResource(R.drawable.on);
}
}
});
}
}
`