xamarin.forms - 音量增大和减小键的事件侦听器
Posted
技术标签:
【中文标题】xamarin.forms - 音量增大和减小键的事件侦听器【英文标题】:xamarin.forms - event listener for volume up and down keys 【发布时间】:2018-02-27 20:46:45 【问题描述】:我正在编写一个 xamarin.forms 应用程序,我想在同时按下音量增大和减小按钮时打开“特殊设置”页面。
有没有办法在 xamarin.forms 中做到这一点?
目前,我已经完成了一个事件监听器,它可以正常工作。现在我需要做的最后一件事是将绑定上下文传递给设置页面。
List<Keycode> _pressedKeys = new List<Keycode>();
public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
if(keyCode == Keycode.VolumeDown)
_pressedKeys.Add(keyCode);
CheckBoth();
return true;
if (keyCode == Keycode.VolumeUp)
_pressedKeys.Add(keyCode);
CheckBoth();
return true;
return base.OnKeyDown(keyCode, e);
public override bool OnKeyUp(Keycode keyCode, KeyEvent e)
if (keyCode == Keycode.VolumeDown)
_pressedKeys.Remove(keyCode);
return true;
if (keyCode == Keycode.VolumeUp)
_pressedKeys.Remove(keyCode);
return true;
return base.OnKeyUp(keyCode, e);
public void ChangePage()
((App)App.Current).ChangeScreen(new SettingsPage());
public void CheckBoth()
try
if (_pressedKeys.Contains(Keycode.VolumeDown) &&
_pressedKeys.Contains(Keycode.VolumeUp))
Console.WriteLine("It works!");
((App)App.Current).ChangeScreen(new SettingsPage());
_pressedKeys.Clear();
catch (Exception e)
Console.WriteLine(e);
解决了。我添加了以下行:
var vm= App.Current.MainPage.BindingContext as MainViewModel;
【问题讨论】:
到目前为止你做了什么?展示你的努力? 我添加到我的 MainActivity.csOnKeyUp
方法中,这是 Barney Chambers 建议的。现在我正在挖掘谷歌以找到答案如何更改页面。
请用新信息更新您的问题。您的代码也应该很有帮助。
问题已更新
请查看此链接希望对您有所帮助***.com/a/38816510/3701787
【参考方案1】:
我认为您可能必须针对特定平台使用此实现,但这里是用于处理音量按钮按下的 android 实现:
public override bool OnKeyUp(Keycode keyCode, KeyEvent e)
if (keyCode == Keycode.VolumeDown)
//Dostuff();
return true;
if (keyCode == Keycode.VolumeUp)
//Dostuff();
return true;
return base.OnKeyUp(keyCode, e);
【讨论】:
好的。我将您的代码添加到 .android 主要活动中。好在它检测到点击。但是现在..现在如何更改页面? @GrzegorzG。对音量键监听器使用依赖服务并在您的 pcl 界面中使用事件/委托,通过订阅它,您可以浏览页面以上是关于xamarin.forms - 音量增大和减小键的事件侦听器的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Flutter 中完全处理音量增大/减小产生的事件?
减小 Xamarin.forms 中 UWP 的 MasterDetailPage 的 Master 的宽度
在 Xamarin Forms App 中尝试 Speech-To-Text 后,Text-To-Speech 播放的音量非常低