Version 3.0.381
19
ShareeBike/ShareeBike.Android/Assets/AboutAssets.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
Any raw assets you want to be deployed with your application can be placed in
|
||||
this directory (and child directories) and given a Build Action of "AndroidAsset".
|
||||
|
||||
These files will be deployed with you package and will be accessible using Android's
|
||||
AssetManager, like this:
|
||||
|
||||
public class ReadAsset : Activity
|
||||
{
|
||||
protected override void OnCreate (Bundle bundle)
|
||||
{
|
||||
base.OnCreate (bundle);
|
||||
|
||||
InputStream input = Assets.Open ("my_asset.txt");
|
||||
}
|
||||
}
|
||||
|
||||
Additionally, some Android functions will automatically load asset files:
|
||||
|
||||
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
|
BIN
ShareeBike/ShareeBike.Android/Assets/Open_Blue.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
ShareeBike/ShareeBike.Android/Assets/Open_Green.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
ShareeBike/ShareeBike.Android/Assets/Open_LightBlue.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
ShareeBike/ShareeBike.Android/Assets/Open_Red.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
123
ShareeBike/ShareeBike.Android/MainActivity.cs
Normal file
|
@ -0,0 +1,123 @@
|
|||
using System.Collections.Generic;
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Content.PM;
|
||||
using Android.Content.Res;
|
||||
using Android.OS;
|
||||
using Android.Util;
|
||||
using Firebase;
|
||||
using Java.Interop;
|
||||
using Java.Security.Acl;
|
||||
using Plugin.Permissions;
|
||||
using Xamarin.Forms.Platform.Android.AppLinks;
|
||||
using static Xamarin.Essentials.Permissions;
|
||||
using Xamarin.Essentials;
|
||||
using Android.Runtime;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace ShareeBike.Droid
|
||||
{
|
||||
[Activity(
|
||||
Label = "Sharee",
|
||||
Icon = "@drawable/app_logo",
|
||||
Theme = "@style/MainTheme",
|
||||
MainLauncher = true,
|
||||
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
|
||||
|
||||
[IntentFilter(new[] { Intent.ActionView },
|
||||
Categories = new[] { Intent.ActionView, Intent.CategoryBrowsable, Intent.CategoryDefault },
|
||||
DataScheme = "https",
|
||||
DataHost = "app.sharee.bike",
|
||||
DataPathPrefix = "/App-shareebike",
|
||||
AutoVerify = true)]
|
||||
|
||||
[IntentFilter(new[] { Intent.ActionView },
|
||||
Categories = new[] { Intent.ActionView, Intent.CategoryBrowsable, Intent.CategoryDefault },
|
||||
DataScheme = "http",
|
||||
DataHost = "app.sharee.bike",
|
||||
DataPathPrefix = "/App-shareebike",
|
||||
AutoVerify = true)]
|
||||
|
||||
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
|
||||
{
|
||||
private void initFontScale()
|
||||
{
|
||||
Configuration configuration = Resources.Configuration;
|
||||
configuration.FontScale = (float)1;
|
||||
//0.85 small, 1 standard, 1.15 big,1.3 more bigger ,1.45 supper big
|
||||
DisplayMetrics metrics = new DisplayMetrics();
|
||||
WindowManager.DefaultDisplay.GetMetrics(metrics);
|
||||
metrics.ScaledDensity = configuration.FontScale * metrics.Density;
|
||||
BaseContext.Resources.UpdateConfiguration(configuration, metrics);
|
||||
}
|
||||
protected override async void OnCreate(Bundle bundle)
|
||||
{
|
||||
initFontScale();
|
||||
|
||||
TabLayoutResource = Resource.Layout.Tabbar;
|
||||
ToolbarResource = Resource.Layout.Toolbar;
|
||||
|
||||
base.OnCreate(bundle);
|
||||
|
||||
global::Xamarin.Forms.Forms.Init(this, bundle);
|
||||
|
||||
FirebaseApp.InitializeApp(this);
|
||||
AndroidAppLinks.Init(this);
|
||||
|
||||
// Initialize xamarin.essentials, see https://docs.microsoft.com/en-us/xamarin/essentials/get-started?tabs=macos%2Candroid.
|
||||
Xamarin.Essentials.Platform.Init(this, bundle);
|
||||
|
||||
// Required for initialization of Maps, see https://developer.xamarin.com/guides/xamarin-forms/user-interface/map/
|
||||
Xamarin.FormsGoogleMaps.Init(this, bundle);
|
||||
|
||||
// Required for initialization of binding package, see https://github.com/nuitsjp/Xamarin.Forms.GoogleMaps.Bindings.
|
||||
Xamarin.FormsGoogleMapsBindings.Init();
|
||||
|
||||
// Get version name of app.
|
||||
Context context = ApplicationContext;
|
||||
new Model.Device.AppInfo(context.PackageManager.GetPackageInfo(context.PackageName, 0).VersionName);
|
||||
|
||||
Xamarin.Forms.Forms.ViewInitialized += (object sender, Xamarin.Forms.ViewInitializedEventArgs e) =>
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(e.View.AutomationId))
|
||||
{
|
||||
e.NativeView.ContentDescription = e.View.AutomationId;
|
||||
}
|
||||
};
|
||||
|
||||
await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
|
||||
await Permissions.RequestAsync<BLEPermissions>();
|
||||
|
||||
LoadApplication(new App());
|
||||
}
|
||||
|
||||
//Bluetooth Permission on Android 12 "Detect Devices nearby"
|
||||
// https://stackoverflow.com/questions/71028853/xamarin-forms-ble-plugin-scan-issue-android-12
|
||||
public class BLEPermissions : BasePlatformPermission
|
||||
{
|
||||
public override (string androidPermission, bool isRuntime)[] RequiredPermissions => new List<(string androidPermission, bool isRuntime)>
|
||||
{
|
||||
(Android.Manifest.Permission.BluetoothScan, true),
|
||||
(Android.Manifest.Permission.BluetoothConnect, true),
|
||||
}.ToArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles opening the dialog to request for permissions.
|
||||
/// </summary>
|
||||
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
|
||||
{
|
||||
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
|
||||
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
|
||||
[Export("TapStation")]
|
||||
public void TapStation(string stationNr)
|
||||
{
|
||||
BackdoorMethodHelpers.DoTapPage(stationNr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
45
ShareeBike/ShareeBike.Android/Model/Device/AppInfo.cs
Normal file
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using ShareeBike.Droid.Model.Device;
|
||||
using ShareeBike.Model.Device;
|
||||
using Xamarin.Forms;
|
||||
|
||||
[assembly: Dependency(typeof(AppInfo))]
|
||||
namespace ShareeBike.Droid.Model.Device
|
||||
{
|
||||
/// <summary> Holds information about the ShareeBike- app. </summary>
|
||||
public class AppInfo : IAppInfo
|
||||
{
|
||||
/// <summary> Holds the the version of the app.</summary>
|
||||
private static Version m_oVersion = null;
|
||||
|
||||
/// <summary> Constructs a app info object. </summary>
|
||||
public AppInfo()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary> Constructs a app info object for initialization. </summary>
|
||||
/// <param name="p_strVersionText"> Version to initializ object with.</param>
|
||||
internal AppInfo(string p_strVersionText)
|
||||
{
|
||||
if (m_oVersion != null)
|
||||
{
|
||||
// Set version only once.
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Version.TryParse(p_strVersionText, out Version l_oVersion))
|
||||
{
|
||||
m_oVersion = new Version(0, 8);
|
||||
}
|
||||
|
||||
m_oVersion = l_oVersion;
|
||||
}
|
||||
|
||||
/// <summary> Get the version of the app. </summary>
|
||||
public Version Version => m_oVersion ?? new Version(0, 9);
|
||||
|
||||
/// <summary> Gets the URL to the app store. </summary>
|
||||
/// <value>The store URL.</value>
|
||||
public string StoreUrl => $"https://play.google.com/store/apps/details?id={Android.App.Application.Context.PackageName}";
|
||||
}
|
||||
}
|
23
ShareeBike/ShareeBike.Android/Model/Device/Device.cs
Normal file
|
@ -0,0 +1,23 @@
|
|||
using ShareeBike.Model.Device;
|
||||
using Xamarin.Essentials;
|
||||
using Xamarin.Forms;
|
||||
|
||||
[assembly: Dependency(typeof(ShareeBike.Droid.Model.Device.Device))]
|
||||
namespace ShareeBike.Droid.Model.Device
|
||||
{
|
||||
public class Device : ISmartDevice
|
||||
{
|
||||
public string Manufacturer => DeviceInfo.Manufacturer;
|
||||
|
||||
public string Model => DeviceInfo.Model;
|
||||
|
||||
public DevicePlatform Platform => DeviceInfo.Platform;
|
||||
|
||||
public string VersionText => DeviceInfo.VersionString;
|
||||
|
||||
/// <summary> Gets unitque device identifier. </summary>
|
||||
/// <returns>Gets the identifies specifying device.</returns>
|
||||
public string Identifier
|
||||
=> Android.Provider.Settings.Secure.GetString(Android.App.Application.Context.ContentResolver, Android.Provider.Settings.Secure.AndroidId);
|
||||
}
|
||||
}
|
70
ShareeBike/ShareeBike.Android/Model/Device/DroidCipher.cs
Normal file
|
@ -0,0 +1,70 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Javax.Crypto;
|
||||
using Javax.Crypto.Spec;
|
||||
using ShareeBike.Droid.Model.Device;
|
||||
using ShareeBike.Model.Device;
|
||||
using Xamarin.Forms;
|
||||
|
||||
[assembly: Dependency(typeof(ShareeBike.Droid.Model.Device.DroidCipher))]
|
||||
namespace ShareeBike.Droid.Model.Device
|
||||
{
|
||||
public class DroidCipher : ICipher
|
||||
{
|
||||
/// <summary> Encrypt data.</summary>
|
||||
/// <param name="key">Key to encrypt data.</param>
|
||||
/// <param name="clear">Data to entrycpt.</param>
|
||||
/// <returns></returns>
|
||||
public byte[] Encrypt(byte[] key, byte[] clear)
|
||||
{
|
||||
SecretKeySpec skeySpec = new SecretKeySpec(key, 0, 24, "AES");
|
||||
Cipher cipher = Cipher.GetInstance("AES/ECB/NoPadding");
|
||||
cipher.Init(CipherMode.EncryptMode, skeySpec);
|
||||
return cipher.DoFinal(clear);
|
||||
}
|
||||
|
||||
/// <summary> Decrypt data. </summary>
|
||||
/// <param name="key">Key to decrypt data with.</param>
|
||||
/// <param name="encrypted">Encrpyted data to decrypt.</param>
|
||||
/// <returns>Decrypted data.</returns>
|
||||
public byte[] Decrypt(byte[] key, byte[] encrypted)
|
||||
{
|
||||
TestDecrypt();
|
||||
|
||||
SecretKeySpec skeySpec = new SecretKeySpec(key, 0, 24, "AES");
|
||||
Cipher cipher = Cipher.GetInstance("AES/ECB/NoPadding");
|
||||
cipher.Init(CipherMode.DecryptMode, skeySpec);
|
||||
return cipher.DoFinal(encrypted);
|
||||
}
|
||||
|
||||
public void TestDecrypt()
|
||||
{
|
||||
byte[] decyptedText;
|
||||
|
||||
var encryptedText = (new sbyte[] { 50, 51, -40, 64, 42, 82, 97, -24, 20, -39, -15, 126, 119, -110, 47, -18 }).Select(x => (byte)x).ToArray();
|
||||
|
||||
var key = (new sbyte[] { -6, 53, 29, -112, 7, -83, -41, -7, 30, 45, -13, -2, -108, -29, -90, 71, 15, -74, -76, 32, 0, 0, 0, 0 }).Select(x => (byte)x).ToArray();
|
||||
|
||||
var expecedResult = (new sbyte[] { 19, -66, 55, 18, -106, -92, 70, -40, 117, -87, -19, 124, 19, 54, -18, -82 }).Select(x => (byte)x).ToArray();
|
||||
|
||||
SecretKeySpec skeySpec = new SecretKeySpec(key, 0, 24, "AES");
|
||||
Cipher cipher = Cipher.GetInstance("AES/ECB/NoPadding");
|
||||
cipher.Init(CipherMode.DecryptMode, skeySpec);
|
||||
decyptedText = cipher.DoFinal(encryptedText);
|
||||
|
||||
if (!expecedResult.SequenceEqual(decyptedText))
|
||||
{
|
||||
throw new System.Exception("Decrypted text does not match expectation.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
using Android.Content;
|
||||
using ShareeBike.Droid.Model.Device;
|
||||
using ShareeBike.Model.Device;
|
||||
using Xamarin.Forms;
|
||||
|
||||
[assembly: Dependency(typeof(ExternalBrowseService))]
|
||||
namespace ShareeBike.Droid.Model.Device
|
||||
{
|
||||
public class ExternalBrowseService : IExternalBrowserService
|
||||
{
|
||||
/// <summary> Opens an external browser. </summary>
|
||||
/// <param name="p_strUrl">Url to open.</param>
|
||||
public void OpenUrl(string p_strUrl)
|
||||
{
|
||||
var uri = Android.Net.Uri.Parse(p_strUrl);
|
||||
var intent = new Intent(Intent.ActionView, uri);
|
||||
|
||||
intent.AddFlags(ActivityFlags.NewTask);
|
||||
|
||||
Android.App.Application.Context.StartActivity(intent);
|
||||
}
|
||||
}
|
||||
}
|
30
ShareeBike/ShareeBike.Android/Model/Device/Gps.cs
Normal file
|
@ -0,0 +1,30 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Locations;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using ShareeBike.Model.Device;
|
||||
using Xamarin.Forms;
|
||||
|
||||
[assembly: Dependency(typeof(ShareeBike.Droid.Model.Device.Gps))]
|
||||
namespace ShareeBike.Droid.Model.Device
|
||||
{
|
||||
public class Gps : IGeolodationDependent
|
||||
{
|
||||
public bool IsGeolcationEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
LocationManager locationManager = (LocationManager)Android.App.Application.Context.GetSystemService(Context.LocationService);
|
||||
return locationManager.IsProviderEnabled(LocationManager.GpsProvider);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
49
ShareeBike/ShareeBike.Android/Model/Device/SpecialFolder.cs
Normal file
|
@ -0,0 +1,49 @@
|
|||
using System;
|
||||
using Serilog;
|
||||
using ShareeBike.Model.Device;
|
||||
using Xamarin.Forms;
|
||||
|
||||
[assembly: Dependency(typeof(ShareeBike.Droid.Model.Device.SpecialFolder))]
|
||||
namespace ShareeBike.Droid.Model.Device
|
||||
{
|
||||
public class SpecialFolder : ISpecialFolder
|
||||
{
|
||||
/// <summary> Get the folder name of external folder to write to. </summary>
|
||||
/// <returns> Name of the external folder. </returns>
|
||||
public string GetExternalFilesDir()
|
||||
{
|
||||
string baseFolderPath = string.Empty;
|
||||
try
|
||||
{
|
||||
var context = Android.App.Application.Context;
|
||||
Java.IO.File[] dirs = context.GetExternalFilesDirs(null);
|
||||
|
||||
foreach (Java.IO.File folder in dirs)
|
||||
{
|
||||
bool IsRemovable = Android.OS.Environment.InvokeIsExternalStorageRemovable(folder);
|
||||
bool IsEmulated = Android.OS.Environment.InvokeIsExternalStorageEmulated(folder);
|
||||
|
||||
if (IsRemovable
|
||||
&& !IsEmulated)
|
||||
{
|
||||
baseFolderPath = folder.Path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
catch (Exception l_oException)
|
||||
{
|
||||
Log.Error("Getting external files directory failed. {@l_oException}", l_oException);
|
||||
}
|
||||
|
||||
return baseFolderPath;
|
||||
}
|
||||
|
||||
/// <summary> Gets the folder name of the personal data folder dir on internal storage. </summary>
|
||||
/// <returns>Directory name.</returns>
|
||||
public string GetInternalPersonalDir()
|
||||
{
|
||||
return Environment.GetFolderPath(Environment.SpecialFolder.Personal);
|
||||
}
|
||||
}
|
||||
}
|
16
ShareeBike/ShareeBike.Android/Model/Device/WebView.cs
Normal file
|
@ -0,0 +1,16 @@
|
|||
using Android.Webkit;
|
||||
using ShareeBike.Model.Device;
|
||||
|
||||
[assembly: Xamarin.Forms.Dependency(typeof(ShareeBike.Droid.Model.Device.WebView))]
|
||||
namespace ShareeBike.Droid.Model.Device
|
||||
{
|
||||
public class WebView : IWebView
|
||||
{
|
||||
/// <summary> Clears the cookie cache for all web views. </summary>
|
||||
public void ClearCookies()
|
||||
{
|
||||
var cookieManager = CookieManager.Instance;
|
||||
cookieManager.RemoveAllCookie();
|
||||
}
|
||||
}
|
||||
}
|
50
ShareeBike/ShareeBike.Android/Properties/AndroidManifest.xml
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.hauffware.sharee" android:versionName="3.0.381" android:versionCode="381">
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="34" />
|
||||
|
||||
<!-- Google Maps related permissions -->
|
||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
||||
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
|
||||
<uses-permission android:name="com.TeilRad.sharee.bike.permission.MAPS_RECEIVE" />
|
||||
<permission android:name="com.TeilRad.sharee.bike.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
|
||||
<!-- Google Maps for Android v2 requires OpenGL ES v2 -->
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
|
||||
<!-- These are optional, but recommended. They will allow Maps to use the My Location provider. -->
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-feature android:name="android.hardware.location" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.location.network" android:required="false" />
|
||||
|
||||
<!-- Network related permissions -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
|
||||
<!-- Bluetooth related permissions -->
|
||||
<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-feature android:name="android.hardware.bluetooth_le" android:required="true" />
|
||||
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<data android:scheme="http" />
|
||||
</intent>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<data android:scheme="https" />
|
||||
</intent>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.SENDTO" />
|
||||
<data android:scheme="mailto" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<application android:icon="@drawable/app_logo" android:label="sharee.bike" android:allowBackup="false">
|
||||
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
|
||||
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
|
||||
<!-- Necessary for apps that target Android 9.0 or higher -->
|
||||
<uses-library android:name="org.apache.http.legacy" android:required="false" />
|
||||
</application>
|
||||
</manifest>
|
43
ShareeBike/ShareeBike.Android/Properties/AssemblyInfo.cs
Normal file
|
@ -0,0 +1,43 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using Android.App;
|
||||
using Xamarin.Forms;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ShareeBike.Android")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ShareeBike.Android")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
|
||||
// Add some common permissions, these can be removed if not needed
|
||||
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
|
||||
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
|
||||
|
||||
#if DEBUG
|
||||
[assembly: Application(Debuggable = true)]
|
||||
#else
|
||||
[assembly: Application(Debuggable = false)]
|
||||
#endif
|
||||
|
||||
[assembly: MetaData("com.google.android.geo.API_KEY", Value = "000000000000000000000000000000000000000")]
|
50
ShareeBike/ShareeBike.Android/Resources/AboutResources.txt
Normal file
|
@ -0,0 +1,50 @@
|
|||
Images, layout descriptions, binary blobs and string dictionaries can be included
|
||||
in your application as resource files. Various Android APIs are designed to
|
||||
operate on the resource IDs instead of dealing with images, strings or binary blobs
|
||||
directly.
|
||||
|
||||
For example, a sample Android app that contains a user interface layout (main.xml),
|
||||
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
|
||||
would keep its resources in the "Resources" directory of the application:
|
||||
|
||||
Resources/
|
||||
drawable-hdpi/
|
||||
icon.png
|
||||
|
||||
drawable-ldpi/
|
||||
icon.png
|
||||
|
||||
drawable-mdpi/
|
||||
icon.png
|
||||
|
||||
layout/
|
||||
main.xml
|
||||
|
||||
values/
|
||||
strings.xml
|
||||
|
||||
In order to get the build system to recognize Android resources, set the build action to
|
||||
"AndroidResource". The native Android APIs do not operate directly with filenames, but
|
||||
instead operate on resource IDs. When you compile an Android application that uses resources,
|
||||
the build system will package the resources for distribution and generate a class called
|
||||
"Resource" that contains the tokens for each one of the resources included. For example,
|
||||
for the above Resources layout, this is what the Resource class would expose:
|
||||
|
||||
public class Resource {
|
||||
public class drawable {
|
||||
public const int icon = 0x123;
|
||||
}
|
||||
|
||||
public class layout {
|
||||
public const int main = 0x456;
|
||||
}
|
||||
|
||||
public class strings {
|
||||
public const int first_string = 0xabc;
|
||||
public const int second_string = 0xbcd;
|
||||
}
|
||||
}
|
||||
|
||||
You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
|
||||
to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
|
||||
string in the dictionary file values/strings.xml.
|
38365
ShareeBike/ShareeBike.Android/Resources/Resource.Designer.cs
generated
Normal file
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 55 KiB |
BIN
ShareeBike/ShareeBike.Android/Resources/drawable/app_logo.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
ShareeBike/ShareeBike.Android/Resources/drawable/battery_0_5.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
ShareeBike/ShareeBike.Android/Resources/drawable/battery_1_5.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
ShareeBike/ShareeBike.Android/Resources/drawable/battery_2_5.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
ShareeBike/ShareeBike.Android/Resources/drawable/battery_3_5.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
ShareeBike/ShareeBike.Android/Resources/drawable/battery_4_5.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
ShareeBike/ShareeBike.Android/Resources/drawable/battery_5_5.png
Normal file
After Width: | Height: | Size: 4 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 3.7 KiB |
BIN
ShareeBike/ShareeBike.Android/Resources/drawable/menu_logo.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
11
ShareeBike/ShareeBike.Android/Resources/layout/Tabbar.axml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/sliding_tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorPrimary"
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
||||
app:tabIndicatorColor="@android:color/white"
|
||||
app:tabGravity="fill"
|
||||
app:tabMode="fixed" />
|
|
@ -0,0 +1,9 @@
|
|||
<android.support.v7.widget.Toolbar
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorPrimary"
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
||||
android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
|
||||
|
36
ShareeBike/ShareeBike.Android/Resources/values/styles.xml
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<resources>
|
||||
|
||||
<style name="MainTheme" parent="MainTheme.Base">
|
||||
</style>
|
||||
<!-- Base theme applied no matter what API -->
|
||||
<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
<!--If you are using revision 22.1 please use just windowNoTitle. Without android:-->
|
||||
<item name="windowNoTitle">true</item>
|
||||
<!--We will be using the toolbar so no need to show ActionBar-->
|
||||
<item name="windowActionBar">false</item>
|
||||
<!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette -->
|
||||
<!-- colorPrimary is used for the default action bar background
|
||||
Was set to sharee.bike color #009899 until switching to gray for theming reasons (needs to look nice with both thmes sharee.bike and Citybike-sample theme) -->
|
||||
<item name="colorPrimary">#a5a5a5</item>
|
||||
<!-- colorPrimaryDark is used for the status bar
|
||||
Was set to sharee.bike like color #006666 until switching to black for theming reasons (needs to look nice with both thmes sharee.bike and Citybike-sample theme) -->
|
||||
<item name="colorPrimaryDark">#262626</item>
|
||||
<!-- colorAccent is used as the default value for colorControlActivated
|
||||
which is used to tint widgets
|
||||
value was #FF4081 (kind of pink) up to 3.0.219 -->
|
||||
<item name="colorAccent">#009899</item>
|
||||
<!-- You can also set colorControlNormal, colorControlActivated
|
||||
colorControlHighlight and colorSwitchThumbNormal. -->
|
||||
<item name="windowActionModeOverlay">true</item>
|
||||
|
||||
<item name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>
|
||||
|
||||
<item name="android:textAllCaps">false</item>
|
||||
</style>
|
||||
|
||||
<style name="AppCompatDialogStyle" parent="Theme.AppCompat.Light.Dialog">
|
||||
<!--value was #FF4081 (kind of pink) up to 3.0.219 -->
|
||||
<item name="colorAccent">#009899</item>
|
||||
</style>
|
||||
</resources>
|
371
ShareeBike/ShareeBike.Android/ShareeBike.Android.csproj
Normal file
|
@ -0,0 +1,371 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{62B8950A-70B8-4F9D-AFFC-0A1EBE7BC9E7}</ProjectGuid>
|
||||
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ShareeBike.Droid</RootNamespace>
|
||||
<AssemblyName>ShareeBike.Android</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AndroidApplication>true</AndroidApplication>
|
||||
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||
<TargetFrameworkVersion>v13.0</TargetFrameworkVersion>
|
||||
<AndroidStoreUncompressedFileExtensions />
|
||||
<MandroidI18n />
|
||||
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
||||
<JavaOptions />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<ReleaseVersion>3.0</ReleaseVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>0</WarningLevel>
|
||||
<AndroidUseSharedRuntime>true</AndroidUseSharedRuntime>
|
||||
<AndroidLinkMode>None</AndroidLinkMode>
|
||||
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
||||
<AotAssemblies>false</AotAssemblies>
|
||||
<EnableLLVM>false</EnableLLVM>
|
||||
<BundleAssemblies>false</BundleAssemblies>
|
||||
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
|
||||
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
|
||||
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
||||
<AndroidPackageFormat>aab</AndroidPackageFormat>
|
||||
<AndroidUseAapt2>true</AndroidUseAapt2>
|
||||
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>
|
||||
<AndroidLinkMode>None</AndroidLinkMode>
|
||||
<AotAssemblies>false</AotAssemblies>
|
||||
<EnableLLVM>false</EnableLLVM>
|
||||
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
|
||||
<BundleAssemblies>false</BundleAssemblies>
|
||||
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
||||
<MandroidI18n />
|
||||
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
||||
<AndroidPackageFormat>aab</AndroidPackageFormat>
|
||||
<AndroidUseAapt2>true</AndroidUseAapt2>
|
||||
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="MultilingualAppToolkit">
|
||||
<MultilingualAppToolkitVersion>4.0</MultilingualAppToolkitVersion>
|
||||
<MultilingualFallbackLanguage>en-US</MultilingualFallbackLanguage>
|
||||
<TranslationReport Condition="'$(Configuration)' == 'Release'">true</TranslationReport>
|
||||
<SuppressPseudoWarning Condition="'$(Configuration)' == 'Debug'">true</SuppressPseudoWarning>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||
<PackageReference Include="Microsoft.NETCore.Platforms" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
|
||||
<PackageReference Include="MonkeyCache">
|
||||
<Version>1.6.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MonkeyCache.FileStore">
|
||||
<Version>1.6.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NETStandard.Library" Version="2.0.3" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="PCLCrypto" Version="2.0.147" />
|
||||
<PackageReference Include="PCLStorage" Version="1.0.2" />
|
||||
<PackageReference Include="PInvoke.BCrypt" Version="0.7.124" />
|
||||
<PackageReference Include="PInvoke.Kernel32" Version="0.7.124" />
|
||||
<PackageReference Include="PInvoke.NCrypt" Version="0.7.124" />
|
||||
<PackageReference Include="PInvoke.Windows.Core" Version="0.7.124" />
|
||||
<PackageReference Include="Plugin.BluetoothLE">
|
||||
<Version>6.3.0.19</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Serilog">
|
||||
<Version>3.1.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.Xamarin" Version="1.0.0" />
|
||||
<PackageReference Include="System.AppContext" Version="4.3.0" />
|
||||
<PackageReference Include="System.Collections" Version="4.3.0" />
|
||||
<PackageReference Include="System.Collections.Concurrent" Version="4.3.0" />
|
||||
<PackageReference Include="System.Collections.NonGeneric" Version="4.3.0" />
|
||||
<PackageReference Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
|
||||
<PackageReference Include="System.Console" Version="4.3.1" />
|
||||
<PackageReference Include="System.Diagnostics.Debug" Version="4.3.0" />
|
||||
<PackageReference Include="System.Diagnostics.Tools" Version="4.3.0" />
|
||||
<PackageReference Include="System.Diagnostics.Tracing" Version="4.3.0" />
|
||||
<PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" />
|
||||
<PackageReference Include="System.Globalization" Version="4.3.0" />
|
||||
<PackageReference Include="System.Globalization.Calendars" Version="4.3.0" />
|
||||
<PackageReference Include="System.IO" Version="4.3.0" />
|
||||
<PackageReference Include="System.IO.Compression" Version="4.3.0" />
|
||||
<PackageReference Include="System.IO.Compression.ZipFile" Version="4.3.0" />
|
||||
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
|
||||
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
|
||||
<PackageReference Include="System.Linq" Version="4.3.0" />
|
||||
<PackageReference Include="System.Linq.Expressions" Version="4.3.0" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="System.Net.Primitives" Version="4.3.1" />
|
||||
<PackageReference Include="System.Net.Sockets" Version="4.3.0" />
|
||||
<PackageReference Include="System.ObjectModel" Version="4.3.0" />
|
||||
<PackageReference Include="System.Private.DataContractSerialization" Version="4.3.0" />
|
||||
<PackageReference Include="System.Reflection" Version="4.3.0" />
|
||||
<PackageReference Include="System.Reflection.Extensions" Version="4.3.0" />
|
||||
<PackageReference Include="System.Reflection.Primitives" Version="4.3.0" />
|
||||
<PackageReference Include="System.Resources.ResourceManager" Version="4.3.0" />
|
||||
<PackageReference Include="System.Runtime" Version="4.3.1" />
|
||||
<PackageReference Include="System.Runtime.Extensions" Version="4.3.1" />
|
||||
<PackageReference Include="System.Runtime.Handles" Version="4.3.0" />
|
||||
<PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" />
|
||||
<PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
|
||||
<PackageReference Include="System.Runtime.Numerics" Version="4.3.0" />
|
||||
<PackageReference Include="System.Runtime.Serialization.Formatters" Version="4.3.0" />
|
||||
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
|
||||
<PackageReference Include="System.Security.Cryptography.Algorithms" Version="4.3.1" />
|
||||
<PackageReference Include="System.Security.Cryptography.Encoding" Version="4.3.0" />
|
||||
<PackageReference Include="System.Security.Cryptography.Primitives" Version="4.3.0" />
|
||||
<PackageReference Include="System.Security.Cryptography.X509Certificates" Version="4.3.2" />
|
||||
<PackageReference Include="System.Text.Encoding" Version="4.3.0" />
|
||||
<PackageReference Include="System.Text.Encoding.Extensions" Version="4.3.0" />
|
||||
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
|
||||
<PackageReference Include="System.Threading" Version="4.3.0" />
|
||||
<PackageReference Include="System.Threading.Tasks" Version="4.3.0" />
|
||||
<PackageReference Include="System.Threading.Timer" Version="4.3.0" />
|
||||
<PackageReference Include="System.Xml.ReaderWriter" Version="4.3.1" />
|
||||
<PackageReference Include="System.Xml.XDocument" Version="4.3.0" />
|
||||
<PackageReference Include="System.Xml.XmlDocument" Version="4.3.0" />
|
||||
<PackageReference Include="Validation" Version="2.5.51" />
|
||||
<PackageReference Include="Xam.Plugin.Connectivity">
|
||||
<Version>3.2.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xam.Plugins.Messaging" Version="5.2.0" />
|
||||
<PackageReference Include="Xamarin.Android.Arch.Core.Common" Version="1.1.1.3" />
|
||||
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.Common" Version="1.1.1.3" />
|
||||
<PackageReference Include="Xamarin.Android.Arch.Lifecycle.Runtime" Version="1.1.1.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Animated.Vector.Drawable" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Annotations" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Compat" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Core.UI" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.CustomTabs" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Fragment" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Media.Compat" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Transition" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.v4" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat" 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.Android.Support.v7.Palette" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.v7.RecyclerView" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable" Version="28.0.0.3" />
|
||||
<PackageReference Include="Xamarin.AndroidX.Core">
|
||||
<Version>1.12.0.4</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.MediaRouter">
|
||||
<Version>1.7.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.Palette">
|
||||
<Version>1.0.0.23</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.AndroidX.RecyclerView">
|
||||
<Version>1.3.2.2</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
|
||||
<PackageReference Include="Xamarin.Build.Download" Version="0.11.4" />
|
||||
<PackageReference Include="Xamarin.CommunityToolkit">
|
||||
<Version>2.0.6</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Essentials">
|
||||
<Version>1.8.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Firebase.Common">
|
||||
<Version>120.4.2.2</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2662" />
|
||||
<PackageReference Include="Xamarin.Forms.AppLinks">
|
||||
<Version>5.0.0.2662</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Forms.GoogleMaps">
|
||||
<Version>5.0.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Forms.GoogleMaps.Bindings" Version="3.0.0" />
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.2.0.6" />
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="118.2.0.6" />
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="118.2.0.2" />
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="118.0.2.7" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Mono.Android" />
|
||||
<Reference Include="Mono.Android.Export" />
|
||||
<Reference Include="mscorlib" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Json" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MainActivity.cs" />
|
||||
<Compile Include="Model\Device\AppInfo.cs" />
|
||||
<Compile Include="Model\Device\Device.cs" />
|
||||
<Compile Include="Model\Device\ExternalBrowseService.cs" />
|
||||
<Compile Include="Model\Device\Gps.cs" />
|
||||
<Compile Include="Model\Device\SpecialFolder.cs" />
|
||||
<Compile Include="Model\Device\WebView.cs" />
|
||||
<Compile Include="Resources\Resource.Designer.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<GoogleServicesJson Include="google-services.json" />
|
||||
<None Include="Resources\AboutResources.txt" />
|
||||
<None Include="Assets\AboutAssets.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\Tabbar.axml" />
|
||||
<AndroidResource Include="Resources\layout\Toolbar.axml" />
|
||||
<AndroidResource Include="Resources\values\styles.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Properties\AndroidManifest.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\LockIt.BLE\LockIt.BLE.csproj">
|
||||
<Project>{bde9ce26-15cf-47da-a4f6-b6956d02d0fc}</Project>
|
||||
<Name>LockIt.BLE</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\LockIt.BusinessLogic\LockIt.BusinessLogic.csproj">
|
||||
<Project>{3589ed1d-e734-429d-976f-1bea4371df14}</Project>
|
||||
<Name>LockIt.BusinessLogic</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SharedBusinessLogic\SharedBusinessLogic.csproj">
|
||||
<Project>{b77f4222-0860-4494-a07c-ee8e09fa9983}</Project>
|
||||
<Name>SharedBusinessLogic</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidAsset Include="Assets\Open_Blue.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidAsset Include="Assets\Open_Green.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidAsset Include="Assets\Open_LightBlue.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidAsset Include="Assets\Open_Red.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-hdpi\app_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-mdpi\app_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xhdpi\app_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi\app_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxxhdpi\app_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\app_logo.png">
|
||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
||||
</AndroidResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\bike_City_SoleHumanPowered_Two.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\bike_Cargo_SoleHumanPowered_Two.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\bike_Cargo_SoleHumanPowered_Trike.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\bike_Cargo_Pedelec_Two.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\battery_undefined.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\battery_0_5.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\battery_1_5.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\battery_2_5.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\battery_3_5.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\battery_4_5.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\battery_5_5.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\menu_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-hdpi\menu_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-mdpi\menu_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xhdpi\menu_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi\menu_logo.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxxhdpi\menu_logo.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\ShareeBike\ShareeBike.projitems" Label="Shared" Condition="Exists('..\ShareeBike\ShareeBike.projitems')" />
|
||||
<Import Project="..\..\SharedGui\SharedGui.projitems" Label="Shared" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Multilingual App Toolkit\Microsoft.Multilingual.Xamarin.Android.targets" Label="MultilingualAppToolkit" Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\Multilingual App Toolkit\v$(MultilingualAppToolkitVersion)\Microsoft.Multilingual.Xamarin.Android.targets')" />
|
||||
<Target Name="MATPrerequisite" BeforeTargets="PrepareForBuild" Condition="!Exists('$(MSBuildExtensionsPath)\Microsoft\Multilingual App Toolkit\Microsoft.Multilingual.Xamarin.Android.targets')" Label="MultilingualAppToolkit">
|
||||
<Warning Text="$(MSBuildProjectFile) is Multilingual build enabled, but the Multilingual App Toolkit is unavailable during the build. If building with Visual Studio, please check to ensure that toolkit is properly installed." />
|
||||
</Target>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<UserProperties TriggeredFromHotReload="False" />
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
15
ShareeBike/ShareeBike.Android/app.config
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="PInvoke.BCrypt" publicKeyToken="9e300f9f87f04a7a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-0.5.0.0" newVersion="0.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Validation" publicKeyToken="2fc06f0d701809a7" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.4.0.0" newVersion="2.4.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
84
ShareeBike/ShareeBike.Android/google-services.json
Normal file
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"project_info": {
|
||||
"project_number": "714659238786",
|
||||
"project_id": "shareebikedeeplinking",
|
||||
"storage_bucket": "shareebikedeeplinking.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:714659238786:android:d45a9f42bdf7c52cdab59b",
|
||||
"android_client_info": {
|
||||
"package_name": "com.TeilRad.LastenradBayern"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "714659238786-212vd9c0958et32cvi0s0ug76r7bttro.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
"android_info": {
|
||||
"package_name": "com.TeilRad.LastenradBayern",
|
||||
"certificate_hash": "1b80c66db9ab80a7f87b6171065fdafce59ed1fe"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "714659238786-lc3ktb9rh2tmc6pmbn4ntdqduj0sb07d.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAPzBFM3yImmcxgtt4Rx3A3_bRJRUISALw"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "714659238786-lc3ktb9rh2tmc6pmbn4ntdqduj0sb07d.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:714659238786:android:503feb0fb8b9966ddab59b",
|
||||
"android_client_info": {
|
||||
"package_name": "com.hauffware.sharee"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "714659238786-ui21aoaetn0hj3gcktsvpot21afg01gu.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
"android_info": {
|
||||
"package_name": "com.hauffware.sharee",
|
||||
"certificate_hash": "adc81d228a5d8dae7d588a6e698eed791c361343"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "714659238786-lc3ktb9rh2tmc6pmbn4ntdqduj0sb07d.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAPzBFM3yImmcxgtt4Rx3A3_bRJRUISALw"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "714659238786-lc3ktb9rh2tmc6pmbn4ntdqduj0sb07d.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|