ZXing ZXingScannerPage:手电筒/手电筒不工作 (Xamarin.Forms)

时间:2021-06-11 08:52:53

标签: xamarin xamarin.forms zxing flashlight

我想通过启动扫描仪页面来激活手电筒/手电筒,但它不起作用。没有错误信息。

-(AudioBufferList *) getBufferListFromData: (NSData *) data
{
       if (data.length > 0)
       {
            NSUInteger len = [data length];
            //I guess you can use Byte*, void* or Float32*. I am not sure if that makes any difference.
            Byte * byteData = (Byte*) malloc (len);
            memcpy (byteData, [data bytes], len);
            if (byteData)
            {
                 AudioBufferList * theDataBuffer =(AudioBufferList*)malloc(sizeof(AudioBufferList) * 1);
                 theDataBuffer->mNumberBuffers = 1;
                 theDataBuffer->mBuffers[0].mDataByteSize = len;
                 theDataBuffer->mBuffers[0].mNumberChannels = 1;
                 theDataBuffer->mBuffers[0].mData = byteData;
                 // Read the data into an AudioBufferList
                 return theDataBuffer;
             }
        }
        return nil;
}

AndroidManifest:

<?xml version="1.0" encoding="utf-8" ?>
<zxing:ZXingScannerPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:zxing="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms"
             x:Class="de.scanner.Pages.ScanPage"
             NavigationPage.HasNavigationBar="True"
             NavigationPage.HasBackButton="True"
             OnScanResult="Handle_OnScanResult"
             IsScanning="False"
             IsTorchOn="True">
</zxing:ZXingScannerPage>

使用 FreshMvvm 从另一个页面:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />

1 个答案:

答案 0 :(得分:1)

您可以改用 ZXingScannerView 并使用按钮打开手电筒。

<Button  BackgroundColor="Chocolate" Clicked="Button_Clicked"/>
    <zxing:ZXingScannerView    x:Name="_scanView" OnScanResult="Handle_OnScanResult" IsScanning="true"
                            WidthRequest="200" HeightRequest="200" />

 private void Button_Clicked(object sender, EventArgs e)
    {
        _scanView.IsTorchOn = true;
    }
相关问题