Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 120 additions & 4 deletions BrickController2.sln

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.scn.BrickController2" android:installLocation="auto" android:versionCode="49" android:versionName="3.3">
<uses-sdk android:targetSdkVersion="31" android:minSdkVersion="19" />
<uses-sdk android:targetSdkVersion="34" android:minSdkVersion="21" />
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.TRANSMIT_IR" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
<application android:label="BrickController2.Android" android:icon="@mipmap/ic_launcher"></application>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,164 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net8.0-android</TargetFrameworks>
<OutputType>Exe</OutputType>

<SupportedOSPlatformVersion>21.0</SupportedOSPlatformVersion>
<RootNamespace>BrickController2.Droid</RootNamespace>
</PropertyGroup>

<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A82CFFAA-423D-473B-820C-174F7AE48B7E}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TemplateGuid>{c9e5eea5-ca05-42a1-839b-61506e0a37df}</TemplateGuid>
<OutputType>Library</OutputType>
<RootNamespace>BrickController2.Droid</RootNamespace>
<AssemblyName>BrickController2.Android</AssemblyName>
<AndroidApplication>True</AndroidApplication>

<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<TargetFrameworkVersion>v12.0</TargetFrameworkVersion>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>

<AndroidKeyStore>false</AndroidKeyStore>
<AndroidSigningKeyStore>C:\Users\imurv\AppData\Local\Xamarin\Mono for Android\Keystore\keystore\keystore.keystore</AndroidSigningKeyStore>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidLinkMode>None</AndroidLinkMode>
<LangVersion>latest</LangVersion>
<MandroidI18n />
<AotAssemblies>false</AotAssemblies>
<EnableLLVM>false</EnableLLVM>
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
<BundleAssemblies>false</BundleAssemblies>
<AndroidPackageFormat>apk</AndroidPackageFormat>
<AndroidUseAapt2>true</AndroidUseAapt2>
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidManagedSymbols>true</AndroidManagedSymbols>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
<AndroidLinkMode>None</AndroidLinkMode>
<AndroidSupportedAbis>armeabi-v7a;arm64-v8a</AndroidSupportedAbis>
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
<MandroidI18n />
<LangVersion>latest</LangVersion>
<AotAssemblies>false</AotAssemblies>
<EnableLLVM>false</EnableLLVM>
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
<BundleAssemblies>false</BundleAssemblies>
<AndroidPackageFormat>aab</AndroidPackageFormat>
<AndroidUseAapt2>true</AndroidUseAapt2>
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
</PropertyGroup>

<ItemGroup>
<Reference Include="Mono.Android" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Xml" />
<None Remove="Resources\mipmap-hdpi\ic_launcher.png" />
<None Remove="Resources\mipmap-mdpi\ic_launcher.png" />
<None Remove="Resources\mipmap-xhdpi\ic_launcher.png" />
<None Remove="Resources\mipmap-xxhdpi\ic_launcher.png" />
<None Remove="Resources\mipmap-xxxhdpi\ic_launcher.png" />
<None Remove="Resources\values-night\colors.xml" />
<None Remove="Resources\values-night\styles.xml" />
<None Remove="Resources\values\colors.xml" />
<None Remove="Resources\values\styles.xml" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Autofac">
<Version>6.5.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.4</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.v4" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.v7.CardView" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.v7.MediaRouter" Version="28.0.0.3" />
<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.3.1.1" />
<PackageReference Include="Xamarin.AndroidX.Palette" Version="1.0.0.15" />
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2545" />
<PackageReference Include="Autofac" />
<PackageReference Include="Microsoft.Maui.Controls" />
</ItemGroup>
<ItemGroup>
<Compile Include="PlatformServices\BluetoothLE\BluetoothLEDevice.cs" />
<Compile Include="PlatformServices\BluetoothLE\BluetoothLENewScanner.cs" />
<Compile Include="PlatformServices\BluetoothLE\BluetoothLEOldScanner.cs" />
<Compile Include="PlatformServices\BluetoothLE\BluetoothLEService.cs" />
<Compile Include="PlatformServices\BluetoothLE\GattCharacteristic.cs" />
<Compile Include="PlatformServices\BluetoothLE\GattService.cs" />
<Compile Include="PlatformServices\BluetoothLE\Helper.cs" />
<Compile Include="PlatformServices\BluetoothLE\ScanRecordProcessor.cs" />
<Compile Include="PlatformServices\DI\PlatformServicesModule.cs" />
<Compile Include="PlatformServices\GameController\GameControllerService.cs" />
<Compile Include="PlatformServices\Infrared\InfraredService.cs" />
<Compile Include="MainActivity.cs" />
<Compile Include="MainApplication.cs" />
<Compile Include="PlatformServices\Localization\LocalizationService.cs" />
<Compile Include="PlatformServices\Permission\BluetoothPermission.cs" />
<Compile Include="PlatformServices\Permission\ReadWriteExternalStoragePermission.cs" />
<Compile Include="PlatformServices\SharedFileStorage\SharedFileStorageService.cs" />
<Compile Include="PlatformServices\Versioning\VersionService.cs" />
<Compile Include="Resources\Resource.Designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SplashActivity.cs" />
<Compile Include="UI\CustomRenderers\ColorImageRenderer.cs" />
<Compile Include="UI\CustomRenderers\ExtendedSliderRenderer.cs" />
<Compile Include="UI\Services\DI\UIServicesModule.cs" />
<ProjectReference Include="..\BrickController2\BrickController2.csproj" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\AboutResources.txt" />
<None Include="Assets\AboutAssets.txt" />
<None Include="Properties\AndroidManifest.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\layout\Tabbar.axml" />
<AndroidResource Include="Resources\layout\Toolbar.axml" />
<AndroidResource Include="Resources\values\styles.xml" />
<AndroidResource Include="Resources\values\colors.xml" />
</ItemGroup>
<ItemGroup>
<Folder Include="Resources\drawable-hdpi\" />
<Folder Include="Resources\drawable-mdpi\" />
<Folder Include="Resources\drawable-xhdpi\" />
<Folder Include="Resources\drawable-xxhdpi\" />
<Folder Include="Resources\drawable-xxxhdpi\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BrickController2\BrickController2.csproj">
<Project>{852D9034-471A-42D0-8701-63D12E2EDACA}</Project>
<Name>BrickController2</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\mipmap-hdpi\ic_launcher.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\mipmap-mdpi\ic_launcher.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\mipmap-xhdpi\ic_launcher.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\mipmap-xxhdpi\ic_launcher.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\mipmap-xxxhdpi\ic_launcher.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\splash_screen.xml" />
<MauiSplashScreen Include="Resources\launcher.svg" BaseSize="128,128" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
<UserProperties TriggeredFromHotReload="False" />
</VisualStudio>
</ProjectExtensions>
</Project>
66 changes: 14 additions & 52 deletions BrickController2/BrickController2.Android/MainActivity.cs
Original file line number Diff line number Diff line change
@@ -1,54 +1,33 @@
using Android.App;
using Android.Content;
using BrickController2.Droid.PlatformServices.GameController;
using Android.App;
using Android.Content.PM;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Autofac;
using BrickController2.CreationManagement.DI;
using BrickController2.Database.DI;
using BrickController2.DeviceManagement.DI;
using BrickController2.Droid.PlatformServices.GameController;
using BrickController2.Droid.PlatformServices.DI;
using BrickController2.Droid.UI.Services.DI;
using BrickController2.UI.DI;
using BrickController2.BusinessLogic.DI;
using Xamarin.Forms;
using Xamarin.Essentials;
using Android.Runtime;
using Android.OS;

namespace BrickController2.Droid
{
[Activity(
Label = "BrickController2",
Icon = "@mipmap/ic_launcher",
Theme = "@style/MainTheme",
MainLauncher = false,
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity
MainLauncher = true,
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
public class MainActivity : MauiAppCompatActivity
{
private GameControllerService _gameControllerService;
private readonly GameControllerService _gameControllerService;

#region Activity
public MainActivity()
{
// inject the controller
_gameControllerService = IPlatformApplication.Current.Services.GetRequiredService<GameControllerService>();
}

#region Activity
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

base.OnCreate(bundle);

Window.AddFlags(WindowManagerFlags.KeepScreenOn);

Platform.Init(this, bundle);

Forms.SetFlags("SwipeView_Experimental");
Forms.Init(this, bundle);

var container = InitDI();
_gameControllerService = container.Resolve<GameControllerService>();

var app = container.Resolve<App>();
LoadApplication(app);
}

public override bool OnKeyDown([GeneratedEnum] Keycode keyCode, KeyEvent e)
Expand All @@ -73,23 +52,6 @@ public override void OnRequestPermissionsResult(int requestCode, string[] permis
}

#endregion

private IContainer InitDI()
{
var builder = new ContainerBuilder();

builder.RegisterInstance(this).As<Context>().As<Activity>();
builder.RegisterModule(new PlatformServicesModule());
builder.RegisterModule(new UIServicesModule());

builder.RegisterModule(new BusinessLogicModule());
builder.RegisterModule(new DatabaseModule());
builder.RegisterModule(new CreationManagementModule());
builder.RegisterModule(new DeviceManagementModule());
builder.RegisterModule(new UiModule());

return builder.Build();
}
}
}

41 changes: 27 additions & 14 deletions BrickController2/BrickController2.Android/MainApplication.cs
Original file line number Diff line number Diff line change
@@ -1,24 +1,37 @@
using Android.App;
using Android.Runtime;
using System;
using Autofac;
using BrickController2.DI;
using BrickController2.Droid.PlatformServices.DI;
using BrickController2.Droid.UI.CustomRenderers;
using BrickController2.Droid.UI.Services.DI;
using BrickController2.UI.Controls;

namespace BrickController2.Droid
{
#if DEBUG
[Application(Debuggable = true)]
#else
[Application(Debuggable = false)]
#endif
public class MainApplication : Application
[Application]
public class MainApplication : MauiApplication
{
public MainApplication(IntPtr handle, JniHandleOwnership transer)
: base(handle, transer)
public MainApplication(IntPtr handle, JniHandleOwnership ownership) : base(handle, ownership)
{
}

public override void OnCreate()
{
base.OnCreate();
}
protected override MauiApp CreateMauiApp() => ApplicationBuilder.Create()
// per platform handlers
.ConfigureMauiHandlers(handlers =>
{
handlers
.AddHandler<ExtendedSlider, ExtendedSliderHandler>()
;
})
.ConfigureContainer((containerBuilder) =>
{
containerBuilder.Register<Android.Content.Context>((c) => Android.App.Application.Context).SingleInstance();
containerBuilder.RegisterModule<PlatformServicesModule>();
containerBuilder.RegisterModule<UIServicesModule>();
})
// finally build
.Build()
;
}
}
}
Loading