C# xamarin手机闪光灯打开,但没有打开,为什么?
我的应用程序被允许使用闪光灯和照相机,但它没有打开。该设备是Nexus三星的。 我尝试将C# xamarin手机闪光灯打开,但没有打开,为什么?,c#,.net,xamarin,C#,.net,Xamarin,我的应用程序被允许使用闪光灯和照相机,但它没有打开。该设备是Nexus三星的。 我尝试将FlashModeOn设置为,但它不起作用。请帮帮我 [Activity(Label = "TurnOnLight", MainLauncher = true, Icon = "@drawable/icon")] public class Activity1 : Activity { public void initCamera() { var b = FindViewBy
FlashModeOn设置为,但它不起作用。请帮帮我
[Activity(Label = "TurnOnLight", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity
{
public void initCamera()
{
var b = FindViewById<Button>(Resource.Id.MyButton);
try
{
if (!hasCamera)
{
mcamera = Camera.Open();
hasCamera = true;
p=mcamera.GetParameters();
var s = p.Get(Camera.Parameters.FlashModeOn);
p.Set(Camera.Parameters.FlashModeTorch,0);
mcamera.SetParameters(p);
mcamera.StartPreview();
}
else
{
}
}
catch (Exception exception)
{
hasCamera = false;
}
}
[活动(Label=“TurnOnLight”,MainLauncher=true,Icon=“@drawable/Icon”)]
公共课堂活动1:活动
{
公共摄像机()
{
var b=findviewbyd(Resource.Id.MyButton);
尝试
{
如果(!hasCamera)
{
mcamera=Camera.Open();
hasCamera=true;
p=mcamera.GetParameters();
var s=p.Get(Camera.Parameters.FlashModeOn);
p、 设置(摄像头参数FlashModeTorch,0);
mcamera.SetParameters(p);
mcamera.StartPreview();
}
其他的
{
}
}
捕获(异常)
{
hasCamera=false;
}
}
以下是我在ZXing.Net.Mobile项目中使用的代码,它对我来说运行良好。请记住FlashModeOn与FlashModeTorch略有不同:
公共无效火炬(bool on)
{
if(!this.Context.PackageManager.HasSystemFeature(PackageManager.FeatureCameraFlash))
{
Android.Util.Log.Info(“ZXING”,“本设备不支持Flash”);
返回;
}
如果(摄像机==null)
{
Android.Util.Log.Info(“ZXING”,“空摄影机”);
返回;
}
var p=camera.GetParameters();
var supportedFlashModes=p.supportedFlashModes;
if(supportedFlashModes==null)
supportedFlashModes=新列表();
var flashMode=string.Empty;
如果(打开)
{
if(supportedFlashModes.Contains(Android.Hardware.Camera.Parameters.FlashModeTorch))
flashMode=Android.Hardware.Camera.Parameters.FlashModeTorch;
else if(supportedFlashModes.Contains(Android.Hardware.Camera.Parameters.FlashModeOn))
flashMode=Android.Hardware.Camera.Parameters.FlashModeOn;
}
其他的
{
if(supportedFlashModes.Contains(Android.Hardware.Camera.Parameters.FlashModeOff))
flashMode=Android.Hardware.Camera.Parameters.FlashModeOff;
}
如果(!string.IsNullOrEmpty(flashMode))
{
p、 FlashMode=FlashMode;
摄像机参数设置(p);
}
}
Mojtaba,我对Android不太了解,尤其不知道如何使用摄像头,但根据我在StackOverflow周围看到的其他答案,您的代码似乎是正确的。我唯一的问题是,当您启动活动并调用initCamera()时,hasCamera
是否实际上是错误的
。如果hasCamera
为真,则它将永远不会尝试打开闪光灯。你确定它会进入这段代码吗?谢谢你的评论,谢谢sure@MojtabaSafavi我不知道你的意思,我想打开移动灯,但我的代码和我创建的任何代码都不起作用
public void Torch(bool on)
{
if (!this.Context.PackageManager.HasSystemFeature(PackageManager.FeatureCameraFlash))
{
Android.Util.Log.Info("ZXING", "Flash not supported on this device");
return;
}
if (camera == null)
{
Android.Util.Log.Info("ZXING", "NULL Camera");
return;
}
var p = camera.GetParameters();
var supportedFlashModes = p.SupportedFlashModes;
if (supportedFlashModes == null)
supportedFlashModes = new List<string>();
var flashMode= string.Empty;
if (on)
{
if (supportedFlashModes.Contains(Android.Hardware.Camera.Parameters.FlashModeTorch))
flashMode = Android.Hardware.Camera.Parameters.FlashModeTorch;
else if (supportedFlashModes.Contains(Android.Hardware.Camera.Parameters.FlashModeOn))
flashMode = Android.Hardware.Camera.Parameters.FlashModeOn;
}
else
{
if ( supportedFlashModes.Contains(Android.Hardware.Camera.Parameters.FlashModeOff))
flashMode = Android.Hardware.Camera.Parameters.FlashModeOff;
}
if (!string.IsNullOrEmpty(flashMode))
{
p.FlashMode = flashMode;
camera.SetParameters(p);
}
}