first commit
This commit is contained in:
18
Platforms/Android/AndroidManifest.xml
Normal file
18
Platforms/Android/AndroidManifest.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true">
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
|
||||
</manifest>
|
||||
102
Platforms/Android/AndroidNotificationHelper.cs
Normal file
102
Platforms/Android/AndroidNotificationHelper.cs
Normal file
@ -0,0 +1,102 @@
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using AndroidX.Core.App;
|
||||
using Application = Android.App.Application;
|
||||
namespace HeartRateMonitorAndroid.Platforms.Android
|
||||
{
|
||||
// Android平台特定的通知帮助类
|
||||
public static class AndroidNotificationHelper
|
||||
{
|
||||
// 创建通知渠道
|
||||
public static void CreateNotificationChannel(string channelId, string channelName, string description)
|
||||
{
|
||||
if (OperatingSystem.IsAndroidVersionAtLeast(26))
|
||||
{
|
||||
var context = Application.Context;
|
||||
var channel = new NotificationChannel(channelId, channelName, NotificationImportance.High)
|
||||
{
|
||||
Description = description
|
||||
};
|
||||
|
||||
var notificationManager = context.GetSystemService(Context.NotificationService) as NotificationManager;
|
||||
notificationManager?.CreateNotificationChannel(channel);
|
||||
}
|
||||
}
|
||||
|
||||
// 显示通知
|
||||
public static void ShowNotification(string channelId, int notificationId, string title, string content, int iconResourceId, bool ongoing = true)
|
||||
{
|
||||
var context = Application.Context;
|
||||
|
||||
// 创建PendingIntent用于点击通知时打开应用
|
||||
var intent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName);
|
||||
var pendingIntent = PendingIntent.GetActivity(context, 0, intent, PendingIntentFlags.Immutable);
|
||||
|
||||
// 创建通知内容
|
||||
var notificationBuilder = new NotificationCompat.Builder(context, channelId)
|
||||
.SetContentTitle(title)
|
||||
.SetContentText(content)
|
||||
.SetSmallIcon(iconResourceId)
|
||||
.SetOngoing(ongoing)
|
||||
.SetContentIntent(pendingIntent)
|
||||
.SetPriority(NotificationCompat.PriorityHigh);
|
||||
|
||||
// 显示通知
|
||||
var notificationManager = NotificationManagerCompat.From(context);
|
||||
notificationManager.Notify(notificationId, notificationBuilder.Build());
|
||||
}
|
||||
// 显示普通通知 - 用于重连提示等
|
||||
public static void ShowNormalNotification(string channelId, int notificationId, string title, string content, int iconResourceId, bool isForeground)
|
||||
{
|
||||
var context = Application.Context;
|
||||
var intent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName);
|
||||
intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask);
|
||||
var pendingIntent = PendingIntent.GetActivity(context, 0, intent, PendingIntentFlags.Immutable);
|
||||
|
||||
var builder = new NotificationCompat.Builder(context, channelId)
|
||||
.SetContentTitle(title)
|
||||
.SetContentText(content)
|
||||
.SetSmallIcon(iconResourceId)
|
||||
.SetContentIntent(pendingIntent)
|
||||
.SetAutoCancel(true);
|
||||
|
||||
var notification = builder.Build();
|
||||
// 普通通知
|
||||
var notificationManager = NotificationManagerCompat.From(context);
|
||||
notificationManager.Notify(notificationId, notification);
|
||||
|
||||
}
|
||||
|
||||
// 显示带有扩展内容的通知
|
||||
public static void ShowBigTextNotification(string channelId, int notificationId, string title, string content, string bigText, int iconResourceId, bool ongoing = true)
|
||||
{
|
||||
var context = Application.Context;
|
||||
|
||||
// 创建PendingIntent用于点击通知时打开应用
|
||||
var intent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName);
|
||||
var pendingIntent = PendingIntent.GetActivity(context, 0, intent, PendingIntentFlags.Immutable);
|
||||
|
||||
// 创建通知内容
|
||||
var notificationBuilder = new NotificationCompat.Builder(context, channelId)
|
||||
.SetContentTitle(title)
|
||||
.SetContentText(content)
|
||||
.SetSmallIcon(iconResourceId)
|
||||
.SetOngoing(ongoing)
|
||||
.SetContentIntent(pendingIntent)
|
||||
.SetPriority(NotificationCompat.PriorityHigh)
|
||||
.SetStyle(new NotificationCompat.BigTextStyle().BigText(bigText));
|
||||
|
||||
// 显示通知
|
||||
var notificationManager = NotificationManagerCompat.From(context);
|
||||
notificationManager.Notify(notificationId, notificationBuilder.Build());
|
||||
}
|
||||
|
||||
// 取消通知
|
||||
public static void CancelNotification(int notificationId)
|
||||
{
|
||||
var context = Application.Context;
|
||||
var notificationManager = NotificationManagerCompat.From(context);
|
||||
notificationManager.Cancel(notificationId);
|
||||
}
|
||||
}
|
||||
}
|
||||
12
Platforms/Android/MainActivity.cs
Normal file
12
Platforms/Android/MainActivity.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using Android.App;
|
||||
using Android.Content.PM;
|
||||
using Android.OS;
|
||||
|
||||
namespace HeartRateMonitorAndroid;
|
||||
|
||||
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, LaunchMode = LaunchMode.SingleTop,
|
||||
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode |
|
||||
ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
|
||||
public class MainActivity : MauiAppCompatActivity
|
||||
{
|
||||
}
|
||||
15
Platforms/Android/MainApplication.cs
Normal file
15
Platforms/Android/MainApplication.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using Android.App;
|
||||
using Android.Runtime;
|
||||
|
||||
namespace HeartRateMonitorAndroid;
|
||||
|
||||
[Application]
|
||||
public class MainApplication : MauiApplication
|
||||
{
|
||||
public MainApplication(IntPtr handle, JniHandleOwnership ownership)
|
||||
: base(handle, ownership)
|
||||
{
|
||||
}
|
||||
|
||||
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
|
||||
}
|
||||
6
Platforms/Android/Resources/values/colors.xml
Normal file
6
Platforms/Android/Resources/values/colors.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary">#512BD4</color>
|
||||
<color name="colorPrimaryDark">#2B0B98</color>
|
||||
<color name="colorAccent">#2B0B98</color>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user