如何收听.NET MAUI(ios&Android)中的音量按钮? 我正在开发一个.NET MAUI应用程序,并希望检测用户何时按下iOS和Android上的音量上下按钮。我的目标是每当按下卷按钮时触发功能...

问题描述 投票:0回答:1
// IVolumeButtonService.cs public interface IVolumeButtonService { event EventHandler VolumeButtonPressed; }

秒,您可以创建一个服务来处理Android项目中的音量按钮。

using Android.Views; using Microsoft.Maui.Controls.Compatibility.Platform.Android; [assembly: Dependency(typeof(VolumeButtonService))] public class VolumeButtonService : IVolumeButtonService { public event EventHandler VolumeButtonPressed; public bool OnKeyDown(Keycode keyCode, KeyEvent e) { if (keyCode == Keycode.VolumeUp || keyCode == Keycode.VolumeDown) { VolumeButtonPressed?.Invoke(this, EventArgs.Empty); return true; } return false; } }

,然后您需要在主动脉中覆盖onekeydown和onkeyup方法。

public override bool OnKeyDown(Keycode keyCode, KeyEvent e) { var volumeService = DependencyService.Get<IVolumeButtonService>() as VolumeButtonService; if (volumeService != null && volumeService.OnKeyDown(keyCode, e)) { return true; } return base.OnKeyDown(keyCode, e); }
.net maui cross-platform
1个回答
0
投票
在您的iOS项目中,请创建一个服务来处理音量按钮按下。

using AVFoundation; using MediaPlayer; using UIKit; [assembly: Dependency(typeof(VolumeButtonService))] public class VolumeButtonService : IVolumeButtonService { public event EventHandler VolumeButtonPressed; public VolumeButtonService() { var volumeView = new MPVolumeView(); volumeView.ShowsVolumeSlider = false; volumeView.ShowsRouteButton = false; UIApplication.SharedApplication.KeyWindow.AddSubview(volumeView); foreach (var view in volumeView.Subviews) { if (view is UISlider slider) { slider.ValueChanged += (sender, e) => { VolumeButtonPressed?.Invoke(this, EventArgs.Empty); }; } } } }

在您的.NET MAUI项目中,使用服务来收听音量按钮按下。
public MainPage() { InitializeComponent(); var volumeService = DependencyService.Get<IVolumeButtonService>(); volumeService.VolumeButtonPressed += OnVolumeButtonPressed; } private void OnVolumeButtonPressed(object sender, EventArgs e) { DisplayAlert("Volume Button Pressed", "A volume button was pressed!", "OK"); }


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.