Skip to content

Commit 1e9f485

Browse files
update to night mode support
1 parent 1d92be7 commit 1e9f485

File tree

4 files changed

+46
-14
lines changed

4 files changed

+46
-14
lines changed

Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<PackageVersion Include="Camera.MAUI.ZXing" Version="1.0.0" />
1212
<PackageVersion Include="ClosedXML" Version="0.105.0" />
1313
<PackageVersion Include="CommunityToolkit.Maui" Version="12.1.0" />
14-
<PackageVersion Include="CommunityToolkit.Maui.Camera" Version="99.0.11" />
14+
<PackageVersion Include="CommunityToolkit.Maui.Camera" Version="99.0.0-preview" />
1515
<PackageVersion Include="CommunityToolkit.Maui.Maps" Version="3.0.2" />
1616
<PackageVersion Include="CommunityToolkit.Maui.MediaElement" Version="6.1.1" />
1717
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" />
156 KB
Binary file not shown.
-156 KB
Binary file not shown.

MauiIpCamera/Platforms/Android/LocalIpService.cs

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,56 @@
22

33
using System.Net;
44
using Android.Content;
5+
using Android.Net;
56
using Android.Net.Wifi;
7+
using Java.Net;
68

79
public class LocalIpService : ILocalIpService
810
{
911
public IPAddress GetLocalIpAddress()
1012
{
11-
var context = Android.App.Application.Context;
12-
var wifiManager = (WifiManager)context.GetSystemService(Context.WifiService);
13-
var ip = wifiManager?.ConnectionInfo?.IpAddress ?? 0;
14-
15-
var ipAddress = string.Format(
16-
"{0}.{1}.{2}.{3}",
17-
(ip & 0xFF),
18-
(ip >> 8) & 0xFF,
19-
(ip >> 16) & 0xFF,
20-
(ip >> 24) & 0xFF
21-
);
22-
23-
return IPAddress.Parse(ipAddress);
13+
if (OperatingSystem.IsAndroidVersionAtLeast(23))
14+
{
15+
var connectivityManager = (ConnectivityManager?)Android.App.Application.Context.GetSystemService(Context.ConnectivityService);
16+
17+
var activeNetwork = connectivityManager?.ActiveNetwork;
18+
if (activeNetwork == null)
19+
{
20+
return IPAddress.Loopback;
21+
}
22+
23+
var linkProperties = connectivityManager?.GetLinkProperties(activeNetwork);
24+
if (linkProperties?.LinkAddresses == null)
25+
{
26+
return IPAddress.Loopback;
27+
}
28+
29+
foreach (var linkAddress in linkProperties.LinkAddresses)
30+
{
31+
var address = linkAddress.Address;
32+
if (address is not Inet4Address || address.IsLoopbackAddress)
33+
{
34+
continue;
35+
}
36+
37+
var hostAddress = address.HostAddress;
38+
if (!string.IsNullOrEmpty(hostAddress) && IPAddress.TryParse(hostAddress, out var ipAddress))
39+
{
40+
return ipAddress;
41+
}
42+
}
43+
}
44+
else
45+
{
46+
var context = Android.App.Application.Context;
47+
var wifiManager = (WifiManager?)context.GetSystemService(Context.WifiService);
48+
var ip = wifiManager?.ConnectionInfo?.IpAddress ?? 0;
49+
50+
var ipAddress = $"{(ip & 0xFF)}.{(ip >> 8) & 0xFF}.{(ip >> 16) & 0xFF}.{(ip >> 24) & 0xFF}";
51+
52+
return IPAddress.Parse(ipAddress);
53+
}
54+
55+
return IPAddress.Loopback;
2456
}
2557
}

0 commit comments

Comments
 (0)