【问题标题】:xamarin.forms - event listener for volume up and down keysxamarin.forms - 音量增大和减小键的事件侦听器
【发布时间】: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.cs OnKeyUp 方法中,这是 Barney Chambers 建议的。现在我正在挖掘谷歌以找到答案如何更改页面。
  • 请用新信息更新您的问题。您的代码也应该很有帮助。
  • 问题已更新
  • 请查看此链接希望对您有所帮助stackoverflow.com/a/38816510/3701787

标签: c# events xamarin mvvm xamarin.forms


【解决方案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 界面中使用事件/委托,通过订阅它,您可以浏览页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
相关资源
最近更新 更多