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.cs OnKeyUp 方法中,这是 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 中获取设备音量

减小 Xamarin.forms 中 UWP 的 MasterDetailPage 的 Master 的宽度

在 Xamarin Forms App 中尝试 Speech-To-Text 后,Text-To-Speech 播放的音量非常低

请问家里用闹钟的蜂鸣器音量太小,有什么方法可以增大音量,比如换蜂鸣器等!多谢详细介绍~谢谢!