[英]xamarin.forms - event listener for volume up and down keys
我正在編寫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;
我認為您可能必須針對該實現使用特定於平台的內容,但這是用於處理音量按鈕按下的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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.