【问题标题】:Mobile Flash Light Turn on with xamarin but it is not turned,Why?手机闪光灯用xamarin打开但没有打开,为什么?
【发布时间】:2013-06-28 12:23:50
【问题描述】:

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

    }

【问题讨论】:

  • Mojtaba,我对 Android 了解不多,尤其不知道如何使用相机,但根据我在 StackOverflow 上看到的其他答案,您的代码似乎是正确的。我唯一的问题是,当您开始活动并调用initCamera() 时,hasCamera 是否实际上是错误的。如果hasCamera 为真,那么它永远不会尝试打开闪光灯。你确定它会进入这段代码吗?
  • 请您发表评论,当然可以

标签: c# .net xamarin


【解决方案1】:

这是我在 ZXing.Net.Mobile 项目中使用的代码,它对我来说运行良好。请记住,FlashModeOn 与 FlashModeTorch 略有不同:

https://github.com/Redth/ZXing.Net.Mobile/blob/master/src/ZXing.Net.Mobile/MonoForAndroid/ZXingSurfaceView.cs#L227-L267

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);
    }
}

【讨论】:

  • @MojtabaSafavi 不确定你的意思
  • 我想打开移动灯,但我的代码和我创建的任何代码都不是 wotking
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2011-06-11
相关资源
最近更新 更多