专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

Xamarin.Forms Android PDA 监听手机按键

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:56:29       共计:3626 浏览

1.介绍

项目中,有个需求是监听手机音量按键,并在ContentPage页面进行事件处理。

2.解决方案


1.新建事件发送者

新建 MyKeyEventPublish.cs ,代码如下


public class MyKeyEventPublish

   {

    //全局静态变量,以便在需要监听时使用

       public static MyKeyEventPublish myKeyEventPublish { get; set; }


       public delegate void OnKeyDown_callback(int keyCode);

       public OnKeyDown_callback cb;


       public Action<int> OnKeyDown { set; get; }

   }


 


2.App.cs


public App(MyKeyEventPublish myKeyEventPublish)

  {

      InitializeComponent();

     //监听手机按键

      MyKeyEventPublish.myKeyEventPublish = myKeyEventPublish;            

      //起始页

      MainPage = new NavigationPage(new Login());          

  }


 


3.MainActivity.cs (Android)


//按键事件发布者

MyKeyEventPublish myKeyEventPublish;

protected override void OnCreate(Bundle savedInstanceState)

{

    TabLayoutResource = Resource.Layout.Tabbar;

    ToolbarResource = Resource.Layout.Toolbar;

    //实例化按键发布者

    myKeyEventPublish = new MyKeyEventPublish();

   

    base.OnCreate(savedInstanceState);

    Xamarin.Essentials.Platform.Init(this, savedInstanceState);

    global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

    LoadApplication(new App(myKeyEventPublish));

}

//监听键盘按下

public override bool OnKeyDown([GeneratedEnum]Keycode keyCode, KeyEvent e)

 {

      if (keyCode == Android.Views.Keycode.Back) {

          return base.OnKeyDown(keyCode,e);

      }

      if (myKeyEventPublish == null || myKeyEventPublish.OnKeyDown == null) return true;

      //键值更改事件发布方法

      myKeyEventPublish.OnKeyDown((int)keyCode);

      return true;          

      //return base.OnKeyDown(keyCode, e); //不屏蔽原有功能

  }



4.ContentPage.cs 页面使用


public Login()

{

     InitializeComponent();

     NavigationPage.SetHasNavigationBar(this, false);

     this.Appearing += Login_Appearing;

     this.Disappearing += Login_Disappearing;

 }

//页面销毁

 private void Login_Disappearing(object sender, EventArgs e)

 {

     MyKeyEventPublish.myKeyEventPublish.OnKeyDown -= OnKeyDownCallBack;

 }

 //页面显示

 private void Login_Appearing(object sender, EventArgs e)

 {

    MyKeyEventPublish.myKeyEventPublish.OnKeyDown += OnKeyDownCallBack;

 }

 //这个是处理函数

 void OnKeyDownCallBack(int keyCode)

 {

    Console.WriteLine("keycode:" + keyCode);

 }


 


以上是全部代码,如有问题,请及时评论!我会一一解答!请多多点赞哦!


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:xamarin.android App在后台运行不退出 | ·下一条:Android TV开发之旅 二 遥控器按键

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有