Посмотрел в интернете, ничего не нашел. Мне трудно поверить, что для этого нужно использовать Bluetooth.
Очевидно, мой вопрос выходит за рамки. Я пытаюсь задать этот вопрос без особой надежды.
Я пробовал с BroadcastReceiver и ActionMediaButton, но ничего не получаю. Априори код хорош, поскольку он работает с android.intent.action.PHONE_STATE, который позволяет мне отключать воспроизведение музыки во время игры на телефоне.
Это код:
Код: Выделить всё
public class MainActivity : MauiAppCompatActivity
{
private PhoneCallReceiver _phoneCallReceiver;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
IntentFilter filterPhone = new IntentFilter();
filterPhone.AddAction("android.intent.action.MEDIA_BUTTON");
filterPhone.AddAction("android.intent.action.PHONE_STATE");
_phoneCallReceiver = new Platforms.Android.PhoneCallReceiver();
if (Build.VERSION.SdkInt >= BuildVersionCodes.Tiramisu) // Android 33
{
RegisterReceiver(_phoneCallReceiver, filterPhone, ReceiverFlags.Exported);
}
else
{
RegisterReceiver(_phoneCallReceiver, filterPhone);
}
}....
Another file
[BroadcastReceiver(Enabled = false, Exported = true)]
public class PhoneCallReceiver : BroadcastReceiver
{
public delegate void PlayMusic();
static public PlayMusic DelegatePlayMusic;
static bool tantQuePasRacroche = false ;
public override void OnReceive(Context context, Intent intent)
{
System.Diagnostics.Debug.WriteLine("MaMusique", intent.Action);
if (intent.Action == "android.intent.action.PHONE_STATE")
{
System.Diagnostics.Debug.WriteLine("MaMusique", "android.intent.action.PHONE_STATE");
string state = intent.GetStringExtra(TelephonyManager.ExtraState);
if (state == TelephonyManager.ExtraStateRinging)
{
// Traitement à effectuer lors d'un appel entrant
//Toast.MakeText(context, "Appel entrant détecté", ToastLength.Long).Show();
if (!tantQuePasRacroche)
{
tantQuePasRacroche = true;
DelegatePlayMusic();
}
}
else if (state == TelephonyManager.ExtraStateIdle)
{
// Traitement à effectuer lors de la fin de l'appel
//Toast.MakeText(context, "Appel terminé", ToastLength.Long).Show();
DelegatePlayMusic();
tantQuePasRacroche = false;
}
}
else if (intent.Action == "android.intent.action.MEDIA_BUTTON")
{
// Traitement à effectuer lors de l'appui sur un bouton de commande de la musique
//Toast.MakeText(context, "Bouton de commande de la musique appuyé", ToastLength.Long).Show();
System.Diagnostics.Debug.WriteLine("MaMusique", "android.intent.action.MEDIA_BUTTON");
KeyEvent keyEvent;
if (Build.VERSION.SdkInt >= BuildVersionCodes.Tiramisu) // Android 13 (API 33)
{
keyEvent = intent.GetParcelableExtra(Intent.ExtraKeyEvent, Java.Lang.Class.FromType(typeof(KeyEvent))) as KeyEvent;
}
else
{
keyEvent = (KeyEvent)intent.GetParcelableExtra(Intent.ExtraKeyEvent);
}
System.Diagnostics.Debug.WriteLine($"Sending KeyEvent multimédia appuyé keycode = {keyEvent.KeyCode}");
if (keyEvent != null && keyEvent.Action == KeyEventActions.Down)
{
if (keyEvent.KeyCode == Keycode.MediaPlayPause)
{
//Gérer l'événement du bouton multimédia ici
System.Diagnostics.Debug.WriteLine("MaMusique", "Sending KeyEvent Pause appuyé");
}
else if (keyEvent.KeyCode == Keycode.MediaNext)
{
//Gérer l'événement du bouton multimédia ici
System.Diagnostics.Debug.WriteLine("MaMusique", "Sending KeyEvent Next appuyé");
}
else if (keyEvent.KeyCode == Keycode.MediaPrevious)
{
//Gérer l'événement du bouton multimédia ici
System.Diagnostics.Debug.WriteLine("MaMusique", "Sending KeyEvent Previous appuyé");
}
else if (keyEvent.KeyCode == Keycode.MediaPlay)
{
System.Diagnostics.Debug.WriteLine("MaMusique", "Sending KeyEvent Play appuyé");
}
}
}
}

Но я должен сказать, что я использую MediaElement Nuget в своем приложении для прослушивания музыки, и в итоге я подумал, что именно nuget получает MediaButton, и именно поэтому Я ничего не получал в BroadcastReveiver. У меня нет другого приложения. Я работал с GitHub Copilot, который предлагал мне 36 000 вариантов кода, но ни один из них не работал. Он даже делает совершенно безумные предложения. Он не может сказать, что я не знаю.
Подробнее здесь: https://stackoverflow.com/questions/790 ... n-earphone
Мобильная версия