Android物理按键及物理连接

--自拍杆拍照

github博客地址

1.拦截按键按下抬起时的事件分发

@Override    public boolean dispatchKeyEvent(KeyEvent event) {    //如果是长按事件交给onKeyLongPress处理        if (event.getRepeatCount() > 0)            return onKeyLongPress(event.getKeyCode(), event);        return super.dispatchKeyEvent(event);    }

2.返回按键

//返回键的监听很常见,android提供了简便的方法@Overridepublic void onBackPressed() {        finishThisPage();}

3.按键按下事件处理(音量,耳机按键,back键)

//home键和power键没有监听到//我当时需要的是音量键和耳机按键可以拍照,是可以监听到的@Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        L.info(event.toString());        switch (keyCode) {            case KeyEvent.KEYCODE_VOLUME_DOWN:                L.info("KEYCODE_VOLUME_DOWN-音量键减小声音");                return true;            case KeyEvent.KEYCODE_VOLUME_UP:                L.info("KEYCODE_VOLUME_UP-音量键增加声音");                return true;            case KeyEvent.KEYCODE_VOLUME_MUTE:                L.info("KEYCODE_VOLUME_MUTE-音量键静音");                return true;            case KeyEvent.KEYCODE_HEADSETHOOK:                L.info("KEYCODE_HEADSETHOOK-耳机线按键");                return true;            case KeyEvent.KEYCODE_BACK:                L.info("KEYCODE_BACK-返回键");                return true;        }        return super.onKeyDown(keyCode, event);    }

4.其他事件

//使用快捷键可以快速选中菜单中的某一项,在Android没有什么卵用@Override    public boolean onCreateOptionsMenu(Menu menu) {        MenuItem add = menu.add("");        add.setShortcut('A','A');        return super.onCreateOptionsMenu(menu);    }@Override    public boolean onKeyShortcut(int keyCode, KeyEvent event) {        L.info("onKeyShortcut " + event.toString());        return super.onKeyShortcut(keyCode, event);    }@Override    public boolean onKeyLongPress(int keyCode, KeyEvent event) {        L.info("onKeyLongPress " + event.toString());        return super.onKeyLongPress(keyCode, event);    } //暂时没有用到,网上有说在手写和汉字输入时会触发@Override    public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {        L.info("onKeyMultiple " + event.toString());        return super.onKeyMultiple(keyCode, repeatCount, event);    }//按键抬起时会触发@Override    public boolean onKeyUp(int keyCode, KeyEvent event) {        L.info("onKeyUp " + event.toString());        return super.onKeyUp(keyCode, event);    }

5.检测耳机线,蓝牙耳机是否连接

private boolean checkControlIsConnected() {        //检测耳机线是否连接        AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);        //这个方法已经过时,api介绍仅仅用来检测是否连接,可以注册广播接收者接受耳机插拔的广播        if (am.isWiredHeadsetOn()) {            //耳机插入            return true;        }        //检测蓝牙设备是否连接        BluetoothAdapter ba = BluetoothAdapter.getDefaultAdapter();        //蓝牙适配器是否存在,即是否发生了错误        if (ba == null || !ba.isEnabled()) {            //蓝牙不可用            return false;        } else if (ba.isEnabled()) {            Set<BluetoothDevice> bondedDevices = ba.getBondedDevices();            if (bondedDevices == null || bondedDevices.size() <= 0) {                //当前没有设备连接                return false;            } else {                for (BluetoothDevice d : bondedDevices) {                    if (d.getBondState() == BluetoothDevice.BOND_BONDED) {                        //当前有设备接入并处于连接状态                        return true;                    }                }            }        }        return false;    }

更多相关文章

  1. android 开发屏蔽home键,返回键
  2. android 修改电脑盘符名称 USB连接电脑默认连接方式
  3. Android4.2.2自增物理按键(frameworks)
  4. Android平台开发-Android(安卓)keypad map-Android按键事件
  5. Android(安卓)-- Wifi连接流程分析
  6. android 随笔
  7. Android(安卓)触摸OnTouchListener没有响应问题解决
  8. Android组合按键功能定制(Framework)
  9. Android平台开发-Android(安卓)keypad map-Android按键事件

随机推荐

  1. 认识Android中的双向绑定
  2. Android AIDL机制范例解析
  3. Android 属性动画原理与DataBinding
  4. eclipse之sdk、svn安装
  5. [Android] 基于 Linux 命令行构建 Androi
  6. Android(安卓)中与Java内存结构及堆栈区
  7. Android阶段性总结(2011/9/6)
  8. apk打包
  9. Android中的Menu功能菜单-OptionsMenu[选
  10. [转载] 解决AndroidStudio连不上Android