Skip to content

Commit e5de43f

Browse files
committed
3.1.0
1 parent a41aca0 commit e5de43f

4 files changed

Lines changed: 43 additions & 26 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
dotnet-version: 10.0.x
3535

3636
- name: Install MAUI workload
37-
run: dotnet workload install maui --skip-manifest-update
37+
run: dotnet workload install maui
3838

3939
- name: Build generic .NET library
4040
run: >
@@ -67,11 +67,6 @@ jobs:
6767
with:
6868
dotnet-version: 10.0.302
6969

70-
- name: Select Xcode 26.6
71-
run: |
72-
sudo xcode-select --switch /Applications/Xcode_26.6.app/Contents/Developer
73-
xcodebuild -version
74-
7570
- name: Install MAUI workloads
7671
run: dotnet workload install maui-ios maui-maccatalyst --version 10.0.302.0
7772

BarcodeScanning.Native.Maui/BarcodeScanning.Native.Maui.csproj

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
1111
<IsAotCompatible>true</IsAotCompatible>
1212
<Nullable>enable</Nullable>
13-
<Version>3.0.6</Version>
13+
<Version>3.1.0</Version>
1414
<Authors>Alen Friščić</Authors>
1515
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1616
<PackageReadmeFile>README.md</PackageReadmeFile>
@@ -26,10 +26,6 @@
2626
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
2727
</PropertyGroup>
2828

29-
<PropertyGroup Condition="$(TargetFramework.StartsWith('net10.0-android')) Or $(TargetFrameworks.Contains('net10.0-android'))">
30-
<NoWarn>$(NoWarn);NU1608</NoWarn>
31-
</PropertyGroup>
32-
3329
<ItemGroup Condition="$(TargetFramework.StartsWith('net10.0-android')) != true">
3430
<Compile Remove="**\Android\**\*.cs" />
3531
<None Include="**\Android\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
@@ -58,6 +54,15 @@
5854
<PackageReference Include="Xamarin.Google.MLKit.BarcodeScanning" Version="117.3.0.8" />
5955
<PackageReference Include="Xamarin.AndroidX.Camera.View" Version="1.6.1.1" />
6056
<PackageReference Include="Xamarin.AndroidX.Camera.Camera2" Version="1.6.1.1" />
57+
58+
<!-- Align transitive AndroidX KTX dependencies with their resolved core package versions to prevent NU1608 warnings. -->
59+
<PackageReference Include="Xamarin.AndroidX.Fragment.Ktx" Version="1.8.9.3" />
60+
<PackageReference Include="Xamarin.AndroidX.Activity.Ktx" Version="1.13.0.1" />
61+
<PackageReference Include="Xamarin.AndroidX.Collection.Ktx" Version="1.6.0.1" />
62+
<PackageReference Include="Xamarin.AndroidX.Lifecycle.ViewModel.Ktx" Version="2.11.0.1" />
63+
<PackageReference Include="Xamarin.AndroidX.SavedState.SavedState.Ktx" Version="1.5.0.1" />
64+
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Runtime.Ktx.Android" Version="2.11.0.1" />
65+
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Runtime.Ktx" Version="2.11.0.1" />
6166

6267
<AndroidNativeLibrary Include="**\Android\Native\arm64-v8a\libInvertBytes.so" />
6368
<AndroidNativeLibrary Include="**\Android\Native\armeabi-v7a\libInvertBytes.so" />

BarcodeScanning.Native.Maui/Platform/Windows/Methods.cs

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,49 @@
11
using System.Runtime.InteropServices;
22
using System.Runtime.InteropServices.Marshalling;
33
using Windows.Graphics.Imaging;
4+
using Windows.Storage.Streams;
45
using ZXingCpp;
56

67
namespace BarcodeScanning;
78

89
public static partial class Methods
910
{
1011
public static async Task<IReadOnlySet<BarcodeResult>> ScanFromImageAsync(byte[] imageArray)
11-
=> await ScanFromStreamAsync(new MemoryStream(imageArray));
12+
{
13+
using var stream = new MemoryStream(imageArray);
14+
using var randomStream = stream.AsRandomAccessStream();
15+
return await ProcessBitmapAsync(randomStream);
16+
}
1217
public static async Task<IReadOnlySet<BarcodeResult>> ScanFromImageAsync(FileResult file)
13-
=> await ScanFromStreamAsync(await file.OpenReadAsync());
14-
public static async Task<IReadOnlySet<BarcodeResult>> ScanFromStreamAsync(Stream stream)
1518
{
16-
var decoder = await BitmapDecoder.CreateAsync(stream.AsRandomAccessStream());
19+
using var stream = await file.OpenReadAsync();
20+
using var randomStream = stream.AsRandomAccessStream();
21+
return await ProcessBitmapAsync(randomStream);
22+
}
23+
public static async Task<IReadOnlySet<BarcodeResult>> ScanFromImageAsync(string url)
24+
{
25+
using var randomStream = await RandomAccessStreamReference.CreateFromUri(new Uri(url)).OpenReadAsync();
26+
return await ProcessBitmapAsync(randomStream);
27+
}
28+
public static async Task<IReadOnlySet<BarcodeResult>> ScanFromImageAsync(Stream stream)
29+
{
30+
var randomStream = stream.AsRandomAccessStream();
31+
return await ProcessBitmapAsync(randomStream);
32+
}
33+
34+
private static async Task<IReadOnlySet<BarcodeResult>> ProcessBitmapAsync(IRandomAccessStream stream)
35+
{
36+
var decoder = await BitmapDecoder.CreateAsync(stream);
1737
using var softwareBitmap = await decoder.GetSoftwareBitmapAsync();
1838

19-
var bitmap = softwareBitmap.BitmapPixelFormat switch
20-
{
21-
BitmapPixelFormat.Bgra8 => softwareBitmap,
22-
BitmapPixelFormat.Rgba8 => softwareBitmap,
23-
BitmapPixelFormat.Gray8 => softwareBitmap,
24-
_ => SoftwareBitmap.Convert(softwareBitmap, BitmapPixelFormat.Gray8)
25-
};
39+
using var barcodeBitmap =
40+
softwareBitmap.BitmapPixelFormat is
41+
BitmapPixelFormat.Bgra8 or
42+
BitmapPixelFormat.Rgba8 or
43+
BitmapPixelFormat.Gray8
44+
? null
45+
: SoftwareBitmap.Convert(softwareBitmap, BitmapPixelFormat.Gray8);
46+
var bitmap = barcodeBitmap ?? softwareBitmap;
2647

2748
using var buffer = bitmap.LockBuffer(BitmapBufferAccessMode.Read);
2849
using var reference = buffer.CreateReference();

README.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@ This library was inspired by existing MAUI barcode scanning libraries: [BarcodeS
1919
10. Android only - Ability to invert source image to scan natively unsupported inverted barcodes, but at a performance cost.
2020
11. From version 3.0.1 Windows support
2121

22-
## Notice
23-
24-
When building your Android app, you may encounter NU1608 and XA4301 warnings. These warnings occur because the library references newer Android package versions to improve camera performance and compatibility. In this case, they can be safely ignored.
25-
2622
## Usage
2723
1. Install [Nuget package](https://www.nuget.org/packages/BarcodeScanning.Native.Maui),
2824
2. Initialize the plugin in your `MauiProgram.cs`:

0 commit comments

Comments
 (0)