gpt4 book ai didi

android - 手电筒在某些设备上不工作

转载 作者:行者123 更新时间:2023-11-30 02:12:58 25 4
gpt4 key购买 nike

我目前制作了一个简单的手电筒应用程序,但它无法在某些带有摄像头 LED 的设备上运行,但在其他设备上运行良好。谁能告诉我我做错了什么?

这是我的主要 Activity :

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 语句为不同类型的设备打开/关闭手电筒。这个问题之前已经被问过好几次了,所以解决这个问题的一个好方法是在这里搜索不同制造商和安卓版本的不同手电筒打开方式。然后编写一些获取设备属性的逻辑,使用 switch-case 或 if-else 测试它们,并为每个供应商做你应该做的事情。至少,这是确保完全兼容的最佳方式。

关于android - 手电筒在某些设备上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29863537/

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