安卓自拍神器Shutter的开发

来源:互联网 发布:roboguide编程 编辑:程序博客网 时间:2024/03/29 06:19

由于最近的项目需要兼容现在市面上的所谓的自拍神器这种硬件,实现从远端(10m之内)就能控制软件执行某一些功能。遂从某宝购买了10元包邮的水滴白蓝牙自拍按钮。

这东西的基本原理无非就是模拟一个蓝牙键盘,通过发送功能键Enter和VolumeUp配合上层软件的捕获就可以实现拍照或者远程控制了。

为了在安卓中的所有Activty中都可以监听该事件,首先自己写一个BaseActivity类继承原Activity类(Appcompat等等),重载OnKeyDown方法:

public boolean onKeyDown(int keyCode, KeyEvent event) {// Log.e("BT Test", event.toString());switch (keyCode) {// I am very pleasure that you could see these code of this field !// Why we need to catching 'KEYCODE_ENTER' scan code ? see my CSDN blog !case KeyEvent.KEYCODE_ENTER:return true;case KeyEvent.KEYCODE_VOLUME_UP:/* * AlertDialog.Builder builder = new AlertDialog.Builder(this); * builder.setTitle("测试功能"); builder.setMessage("求助按钮按下!"); * builder.setPositiveButton("知道了", new DialogInterface.OnClickListener() { *  * @Override public void onClick(DialogInterface dialog, int which) { * dialog.dismiss(); } }); builder.show(); */Toast.makeText(Global.context, "SOS报警", Toast.LENGTH_SHORT).show();Global.cr.pushSosMessage();playSosSound();return true;default:return super.onKeyDown(keyCode, event);}}
为啥要把Enter按钮捕获之后丢掉呢?

原因:在我的实际测试中,如果没有捕获Enter的话,焦点会停留在界面中的某一个控件上(例如某按钮,某ImageButton),等到第二次激发按键的时候,就会执行控件的OnClick方法,因此会产生诸如按下按钮之后自动跳转到了另一个Activity这样的问题。所以捕获Enter丢掉即可。

为什么必须捕获VolumeUp?因为不捕获这个扫描吗的话,一直按按钮,声音就会一直增加,一直到最大,这当然不是用户想要的。

缺陷:回车键基本就是废了。应用程序内部也没法增大音量。

原创粉丝点击