精华内容
下载资源
问答
  • 一句代码:driver.keyevent() 括号里填入的是手机物理按键的数字代号 driver.press_keycode() ...手机物理键数字代码 键盘按键数字代号 转载于:https://www.cnblogs.com/xiaobaixiaobai/p/10760943.html...

    一句代码:driver.keyevent()        括号里填入的是手机物理按键的数字代号

           driver.press_keycode()        括号里填入的是键盘按键的数字代号

    手机物理键数字代码

    键盘按键数字代号

     

    转载于:https://www.cnblogs.com/xiaobaixiaobai/p/10760943.html

    展开全文
  • 点击手机物理键返回

    2015-07-27 18:04:46
    android开发中双击手机物理键“back”,退出应用的方法有两种:一,重写Activity中的方法:@Override public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode==KeyEvent.KEYCODE_BACK){ //弹出确定...

    android开发中双击手机物理键“back”,退出应用的方法有两种:

    一,重写Activity中的方法:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
        if(keyCode==KeyEvent.KEYCODE_BACK){
            //弹出确定退出对话框
            new AlertDialog.Builder(this) //这里可以设置Dialog背景
            .setTitle("退出")
            .setMessage("确定退出吗?")
            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Intent exit = new Intent(Intent.ACTION_MAIN);
                    exit.addCategory(Intent.CATEGORY_HOME);
                    exit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(exit);
                    System.exit(0);
                }
            })
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {
    
                @Override
                public void onClick(DialogInterface dialog, int which) {
    
                    dialog.cancel();
                }
            })
            .show();
            //这里不需要执行父类的点击事件,所以直接return
            return true;
        }
        //继续执行父类的其他点击事件
        return super.onKeyDown(keyCode, event);
    }
    

    二, 计算两次点击的时间差,判断时间差来退出应用。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
        if(keyCode == KeyEvent.KEYCODE_BACK){
            exitBy2Click();
            return false;
        }
    }
    
    private void exitBy2Click() {
        if ((System.currentTimeMillis() - exitTime) > mExitTime) {
            Toast.makeText(mContext, "再按一次退出程序", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
            finish();
        }
    }
    
    展开全文
  • 【Appium+Python】进行手机操作的方法+使用手机物理键
    展开全文
  • flutter--实时获取手机物理按键音量

    千次阅读 2019-05-24 21:18:35
    本文一是为了记录flutter中本地和原生以数据流方式的通信,二是完成实时获取手机物理按键音量的插件。 本人没有学习过ios,和ios互相不了解,代码全部都是现学现卖,如果有什么不对的地方或者有更好的方法也请自行...

    一、概述

    本文一是为了记录flutter中本地和原生以数据流方式的通信,二是完成实时获取手机物理按键音量的插件。
    本人没有学习过ios,和ios互相不了解,代码全部都是现学现卖,如果有什么不对的地方或者有更好的方法也请自行修改。
    在这里插入图片描述

    二、开始编码

    flutter和原生代码通信原理请参考我之前的博文:
    Flutter与Android原生代码交互

    首先是flutter使用:

    @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: const Text('Plugin example app'),
            ),
            body: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Volume(
                    onVolumeChangeListener: (num volume) {
                      setState(() {
                        currentVolume = volume;
                      });
                    },
                  ),
                  Text("当前音量=${currentVolume}")
                ]),
          ),
        );
      }
    

    Android端

    Android端通过广播形式监听物理按键音量的变化,并通过EventChannel发送给flutter进行接收。
    1.还是跟所有的通信一样,首先是需要注册通信通道:

      public static void registerWith(PluginRegistry.Registrar registrar) {
        channel = new EventChannel(registrar.messenger(), CHANNEL);
        VolumePlugin volumePlugin = new VolumePlugin(registrar.activity());
        channel.setStreamHandler(volumePlugin);
      }
    

    2.实现EventChannel.StreamHandler,并实现是方法

      @Override
      public void onListen(Object o, EventChannel.EventSink eventSink) {
        Log.e("VolumePlugin", "onListen");
        this.eventSink = eventSink;
    
        //实例化对象并设置监听器
        mVolumeChangeObserver = new VolumeChangeObserver(activity);
        mVolumeChangeObserver.setVolumeChangeListener(this);
        int initVolume = mVolumeChangeObserver.getCurrentMusicVolume();
        Log.e("VolumePlugin", "initVolume = " + initVolume);
        eventSink.success(initVolume);
    
        mVolumeChangeObserver.registerReceiver();
      }
    

    3.实现广播监听方法实时获取音量,并通过EventChannel发送给flutter:

      /**
       * 实现广播监听,具体方法请到最后的项目地址查看
       * @author songyaru
       * @date 2019-05-24
       */
      @Override
      public void onVolumeChanged(int volume) {
        Log.e("VolumePlugin", "onVolumeChanged()--->volume = " + volume);
        eventSink.success(volume);
      }
    

    iOS端

    iOS端基本和Android端一样,只不过语法不同而已,此部分纯粹自己摸索,给同样不懂ios的同学马马虎虎的参考。

    1.注册通道

    + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
        VolumePlugin* instance = [[VolumePlugin alloc] init];
        FlutterEventChannel* evenChannal =
        [FlutterEventChannel eventChannelWithName:@"plugins.com.karen/volume"
        binaryMessenger:[registrar messenger]];
        [evenChannal setStreamHandler:instance];
    }
    

    2.实现FlutterStreamHandler并实现其监听:

    #pragma mark - <FlutterStreamHandler>
    // // 这个onListen是Flutter端开始监听这个channel时的回调,第二个参数 EventSink是用来传数据的载体。
    - (FlutterError* _Nullable)onListenWithArguments:(id _Nullable)arguments
                                           eventSink:(FlutterEventSink)events {
        _eventSink = events;
    
        // 获取系统音量
        MPVolumeView *volumeView = [[MPVolumeView alloc] init];
        UISlider *volumeViewSlider= nil;
        for (UIView *view in [volumeView subviews]){
            if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
                volumeViewSlider = (UISlider*)view;
                break;
            }
        }
        //float systemVolume = volumeViewSlider.value;
    
        AVAudioSession *audioSession = [AVAudioSession sharedInstance];
        float currentVol = audioSession.outputVolume;
    
        NSLog(@"当前初始化音量%f@", currentVol);
        _eventSink(@(currentVol));
    
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
    
        // arguments flutter给native的参数
        // 回调给flutter, 建议使用实例指向,因为该block可以使用多次
        return nil;
    }
    
    /// flutter不再接收
    - (FlutterError* _Nullable)onCancelWithArguments:(id _Nullable)arguments {
        // arguments flutter给native的参数
        NSLog(@"%@", arguments);
        return nil;
    }
    

    3.实现音量监听

    - (void)volumeChanged:(NSNotification *)notification
    {
        float volume =  [notification.userInfo[@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];
       _eventSink(@(volume));
    
        NSLog(@"当前音量%f@", volume);
    }
    

    三、总结

    本人真的是一点都不了解ios,摸摸索索搞了很久,希望能帮助一些同样有这样需求的小白们。

    源码下载

    展开全文
  • mui+vue实现webapp的手机物理键监听

    千次阅读 2018-06-01 10:48:32
    由于本人还是菜鸟,如果文章中有什么错误、不当之处,还请大神们指出。 由于项目需求,vue前端... 本人用的是mui进行手机物理键的监听。首先在vue项目中安装好mui框架。import Mui from 'vue-awesome-mui';// i...
  • 手机物理按键驱动文件分析: 一、GPIO的DTS文件,代码段如下所示: /*gpio口的DTS定义*/ gpio_keys { status = "okay"; compatible = "gpio-keys"; #address-cells = &lt;1&gt;...
  • 目的:监听手机物理按键实现相应的功能(给自己的笔记) Android KeyCode 可以自行网上查找 可根据相应 KeyEvent 进行手机按键事件拦截 可根据相应 KeyCode 执行你想要执行的内容 需求 -------- 实现进入指定页面...
  • 如图:需求:常见问题,点击一个问题后进入,使用手机物理键返回时,页面刷新,阅读次数没有更新到最新的数据。实现方式:js加入如下代码,如果你手机试了有问题,不妨给链接给别人用别人手机试试,我用的OPPO结果...
  • vue项目某个APP页面实现手机物理按键返回、路由拦截、localStorage存取参数 最近做个功能:在web系统里面嵌套两个app页面,当然APP页面在web系统上没有路由跳转,而是从另外系统扫码进来的。那我该如何处理呢? 第一...
  • android手机物理按键home监听,按一次提示,两次退出 /定义是否退出程序的标记 private boolean isExit = false; //定义接受用户发送信息的handler private Handler mHandler = new Handler() { @Override...
  • 本人学到的手机指定跳到某一页面的代码: methods:{ fun(){ this.$router.push(要指定跳转的页面); } }, mounted(){ if(window.history && window.history.pushState){ history.pushS...
  • 今天记录下应用cordva+vue生成的apk 在手机物理返回时遇到的问题; 前提说~~应用vue,我们可以自定义上一路径和下一路径,其实就是在开发webapp时,我们通常会在webapp的头部导航栏自定义返回的上层路径,但是,...
  • //返回上一页,按两次返回,按第一次提交记录,按第二次返回 pushHistory(); window.addEventListener("popstate", function(e) { // alert("我监听到了浏览器的返回按钮事件啦"); //根据自己的需求实现自己的功能 ...
  • 最近做了一款Android7.0的功能机,其中很容易的出现物理按键焦点混乱的问题,做下记录 通过以下方法解决了自己遇到的问题 1,重写当前activity的dispatchKeyEvent ,keydown,keyup方法,对各种按键按下的事件做处理...
  • // BBBB.vue mounted(){ // 如果支持 popstate 一般移动端都支持了 if (window.history && window.history.pushState) { // 往历史记录里面添加一条新的当前页面的url history.pushState(null, null, ...
  • 但是我们无法阻止用户的行为,用户是有可能会点击浏览器的返回或者手机物理返回返回的。 解决思路 使用popstate事件监听返回 pushHistory(); window.addEventListener("popstate", function(e) { window....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 622
精华内容 248
关键字:

手机物理键