Java 未检测到闪光灯
我正在尝试编写一个应用程序,当按下按钮时打开闪光灯。问题是应用程序没有检测到我手机上的闪光灯。我在网上搜索了很多。当然,其他人也遇到了这个问题,我也应用了这些解决方案,但它们似乎不起作用。我不知道是什么导致了这个问题。在此处发布代码:Java 未检测到闪光灯,java,android,camera,flashlight,Java,Android,Camera,Flashlight,我正在尝试编写一个应用程序,当按下按钮时打开闪光灯。问题是应用程序没有检测到我手机上的闪光灯。我在网上搜索了很多。当然,其他人也遇到了这个问题,我也应用了这些解决方案,但它们似乎不起作用。我不知道是什么导致了这个问题。在此处发布代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_starting_point);
if(! getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) // checking if flash light is available inn android phone
{
Toast.makeText(StartingPoint.this, "Sorry this app can't work without flash light", Toast.LENGTH_LONG).show();
finish();
}
cam = Camera.open();
param = cam.getParameters();
}
@Override
public void onClick (View v)
{
if(!flashOn)
{
i=0;
flashOn=true;
param.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(param);
cam.startPreview();
}
else{
i=0;
flashOn=false;
param.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(param);
cam.stopPreview();
}
}
我也在Android清单中添加了这些权限
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
关于我认为您没有再次设置参数: 我用这个来检查是否有手电筒:
public static Boolean hasFlashLight(Context context){
return context.getApplicationContext().getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
}
要关闭和打开它,请执行以下操作:
Parameters params = mCamera.getParameters();
if (!isFlashlightOn) {
params.setFlashMode(Parameters.FLASH_MODE_OFF);
} else {
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(params);
让我知道它是否也适用于您。我也有同样的问题。用这个
if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
//Flash ok
Parameters params = mCamera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
} else {
//Flash not supported
}
确定您的设备是否有闪光灯。我有一个应用程序,它可以检查闪光灯功能,并且工作正常。下面是我用来检查用户是否有灯的代码:
if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
new AlertDialog.Builder(this)
.setTitle("Sorry")
.setMessage("It appears that your device is incompatible with this app. Sorry for the inconvenience.")
.setNeutralButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
finish();
}
}).show();
return;
}
现在,为了让灯光真正工作,我制作了一个切换按钮,并编写了以下代码:
private boolean isLightOn = false;
private Camera camera;
private ToggleButton button;
public Vibrator v;
if (camera == null) {
camera = Camera.open();
}
final Parameters p = camera.getParameters();
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (isLightOn) {
Toast.makeText(context, "Light off!", Toast.LENGTH_SHORT).show();
v.vibrate(40);
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();
isLightOn = false;
} else {
Toast.makeText(context, "Light on!", Toast.LENGTH_SHORT).show();
v.vibrate(40);
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();
isLightOn = true;
}
}
});
最后,这里是我使用的唯一权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
注意:以上所有代码都在我的活动的onCreate方法中
希望这有助于解决您的问题 有些相机需要表面支架,否则会挡住闪光灯
SurfaceView preview = (SurfaceView) findViewById(...);
SurfaceHolder holder = preview.getHolder();
holder.addCallback(this);
Camera camera = Camera.open();
camera.setPreviewDisplay(holder);
你试过把这些线放在cam=Camera.open()上吗;param=cam.getParameters();在onCreate()上的第一个if()语句之前?您在所有设备上都测试过吗?请在XOLO A600或Moto G上测试@Ilya_Gazman的代码……好的,我知道了,您在哪台设备上测试这个?你对其他设备也有同样的问题吗?@Niko没有,我只是想在屏幕上看到我的图标Hehe Soooo搞笑我对这个问题感到绝望,现在我的问题是我的应用程序在我所有的设备上都能工作,我没有一个设备不能与旧代码一起工作。。。我在XOLO A600上发现了这个问题,这是在Moto G上发生的吗?