Android 手电筒在某些设备上不工作
我目前制作了一个简单的手电筒应用程序,但它在一些带有摄像头LED的设备上不起作用,但在其他设备上效果很好。谁能告诉我我做错了什么 以下是我的主要活动:Android 手电筒在某些设备上不工作,android,camera,led,flashlight,Android,Camera,Led,Flashlight,我目前制作了一个简单的手电筒应用程序,但它在一些带有摄像头LED的设备上不起作用,但在其他设备上效果很好。谁能告诉我我做错了什么 以下是我的主要活动: public class MainActivity extends Activity { private Camera camera; private Camera.Parameters parameters; private ImageButton flashLightButton; boolean isFla
public class MainActivity extends Activity {
private Camera camera;
private Camera.Parameters parameters;
private ImageButton flashLightButton;
boolean isFlashLightOn = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
flashLightButton = (ImageButton)findViewById(R.id.flashlight_button);
flashLightButton.setOnClickListener(new FlashOnOffListener());
if (isFlashSupported()) {
camera = Camera.open();
parameters = camera.getParameters();
} else {
showNoFlashAlert();
}
}
private class FlashOnOffListener implements View.OnClickListener{
@Override
public void onClick(View v) {
if(isFlashLightOn){
flashLightButton.setImageResource(R.drawable.flashlight_off);
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
camera.stopPreview();
isFlashLightOn = false;
}else{
flashLightButton.setImageResource(R.drawable.flashlight_on);
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
camera.startPreview();
isFlashLightOn = true;
}
}
}
private void showNoFlashAlert() {
new AlertDialog.Builder(this)
.setMessage("Your device hardware does not support flashlight!")
.setIcon(android.R.drawable.ic_dialog_alert).setTitle("Error")
.setPositiveButton("Ok", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
}).show();
}
private boolean isFlashSupported() {
PackageManager pm = getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
}
@Override
protected void onDestroy() {
if(camera != null){
camera.stopPreview();
camera.release();
camera = null;
}
super.onDestroy();
}
}
你现在面临的问题是,某些制造商如何以不同的方式将相机LED置于手电筒模式,以及一些运行过时android版本的旧设备如何启用LED。三星和HTC通常都有问题,所以解决这个问题的最简单方法是使用开关箱语句来打开/关闭不同类型设备的手电筒。这个问题已经被问过好几次了,所以一个很好的解决方法就是在这里搜索不同制造商和安卓版本的手电筒的不同开启方式。然后编写一些逻辑来获取设备的属性,使用switch case或if-else测试它们,并为每个供应商执行您应该执行的操作。至少,这是确保完全兼容的最佳方式。你能分享不起作用的代码吗?另外,也许可以给出一些它可以工作的设备和一些不起作用的设备的例子?我已经分享了代码,看看这个它在karbonn、samusung、lava、micromax的一些设备上不起作用,gionee和其他使用不同android版本的人。你能告诉我怎么做吗?shahraiz。因为我是个乞丐,对安卓不太了解