C# xamarin手机闪光灯打开,但没有打开,为什么?

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

我的应用程序被允许使用闪光灯和照相机,但它没有打开。该设备是Nexus三星的。 我尝试将
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);
    }
}