Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听
原文:Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听
简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们
不多说,直接贴代码
public class MainActivity extends Activity {
    private String  TAG="key";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
           case KeyEvent.KEYCODE_ENTER:     //确定键enter
           case KeyEvent.KEYCODE_DPAD_CENTER:
               Log.d(TAG,"enter--->");
              break;
           case KeyEvent.KEYCODE_BACK:    //返回键
               Log.d(TAG,"back--->");
               return true;   //这里由于break会退出,所以我们自己要处理掉 不返回上一层
           case KeyEvent.KEYCODE_SETTINGS: //设置键
               Log.d(TAG,"setting--->");
               break;
           case KeyEvent.KEYCODE_DPAD_DOWN:   //向下键
                /*    实际开发中有时候会触发两次,所以要判断一下按下时触发 ,松开按键时不触发
                 *    exp:KeyEvent.ACTION_UP
                 */
                 if (event.getAction() == KeyEvent.ACTION_DOWN){   
                    Log.d(TAG,"down--->");
                }
                 break;
           case KeyEvent.KEYCODE_DPAD_UP:   //向上键
               Log.d(TAG,"up--->");
               break;
           case     KeyEvent.KEYCODE_0:   //数字键0
               Log.d(TAG,"0--->");
               break;
           case KeyEvent.KEYCODE_DPAD_LEFT: //向左键
               Log.d(TAG,"left--->");
               break;
           case KeyEvent.KEYCODE_DPAD_RIGHT:  //向右键
               Log.d(TAG,"right--->");
                break;
           case KeyEvent.KEYCODE_INFO:    //info键
               Log.d(TAG,"info--->");
               break;
           case KeyEvent.KEYCODE_PAGE_DOWN:     //向上翻页键
            case KeyEvent.KEYCODE_MEDIA_NEXT:
                  Log.d(TAG,"page down--->");
                break;
            case KeyEvent.KEYCODE_PAGE_UP:     //向下翻页键
            case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
                  Log.d(TAG,"page up--->");
                break;
            case KeyEvent.KEYCODE_VOLUME_UP:   //调大声音键
                 Log.d(TAG,"voice up--->");
                break;
            case KeyEvent.KEYCODE_VOLUME_DOWN: //降低声音键
                 Log.d(TAG,"voice down--->");
                 break;
             case KeyEvent.KEYCODE_VOLUME_MUTE: //禁用声音
                  Log.d(TAG,"voice mute--->");
                 break;
            break;
          default:
             break;
        }
        return super.onKeyDown(keyCode, event);
    }
}
效果如下:
home键的监听要监听广播:
 class  HomeRecaiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){
                String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
                if(SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)){
                    Toast.makeText(MainActivity.this,"home键触发",0).show();
                    Log.d(TAG, "home键触发");
                }
            }
        }
    }在oncreate()注册广播
    public final String SYSTEM_DIALOG_REASON_KEY = "reason";
    public final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
    /**
     * 注册广播
     */
    private void initReceiver() {
        homeReceiver = new HomeRecaiver();
        IntentFilter filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        registerReceiver(homeReceiver, filter);
    }退出注销广播
@Override
    protected void onDestroy() {
        super.onDestroy();
        if(homeReceiver!=null){
            unregisterReceiver(homeReceiver);
        }
    }Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听的更多相关文章
- Android TV开发总结(七)构建一个TV app中的剧集列表控件
		原文:Android TV开发总结(七)构建一个TV app中的剧集列表控件 版权声明:我已委托"维权骑士"(rightknights.com)为我的文章进行维权行动.转载务必转载 ... 
- Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑
		转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52835829 前言:上篇中,&l ... 
- 聊聊真实的 Android TV 开发技术栈
		智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了.但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样. 一.序 ... 
- Android TV开发总结(六)构建一个TV app的直播节目实例
		请尊重分享成果,转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52966319 近年来,Android TV的迅速发展,传统的有线电视受 ... 
- Android TV开发总结(五)TV上屏幕适配总结
		前言:前面几篇总结一些TV上的小Sample,开源到GitHub:https://github.com/hejunlin2013/TVSample, 点击链接,可以持续关注.今天总结下TV上屏幕适配. ... 
- Android应用开发中关于this.context=context的理解
		在Android应用开发中,有的类里面需要声明一个Context的成员变量,然后还需要在该类的构造函数中加上this.context=context;这行代码.为什么要这么写呢?不写不行么? 先看下面 ... 
- Android学习开发中如何保持API的兼容
		Android学习开发中如何保持API的兼容: 1,采用良好的设计思路 在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久 面向用例的设计,收集用户建议,把自己模拟成用户,保证AP ... 
- Android应用开发中三种常见的图片压缩方法
		Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 一.质量压缩法 private Bitmap com ... 
- Android TV开发总结(二)构建一个TV Metro界面(仿泰捷视频TV版)
		前言:上篇是介绍构建TV app前要知道的一些事儿,开发Android TV和手机本质上没有太大的区别,屏大,焦点处理,按键处理,是有别于有手机和Pad的实质区别.今天来介绍TV中Metro UI风格 ... 
随机推荐
- Linq读取XML数据
			1.XML数据格式:<?xml version="1.0"?><customers> <customer> <id>ALFK ... 
- [RxJS] Replace zip with combineLatest when combining sources of data
			This lesson will highlight the true purpose of the zip operator, and how uncommon its use cases are. ... 
- [Phonegap+Sencha Touch] 移动开发72 List列表横向滑动操作(仿QQ列表滑动删除)
			原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50425744 本插件有2个版本号:sencha touch 版本号和 extjs6 m ... 
- python3报错
			这个错误是我在从Excel中导入数据,,x,y 和z(z代表了强度) 然后通过xyz画出一个二维的灰度图片所出现的错误 原因是因为用mcml生成的数据如: TypeError: cannot per ... 
- 使用LAMP创建基于wordpress的个从博客网站                                                    分类:            B3_LINUX             2014-07-15 16:45    800人阅读    评论(0)    收藏
			参考: http://blog.csdn.net/ck_boss/article/details/27866117 一.mysql配置 1.安装mysql yum install mysql-serv ... 
- 1046: 找不到类型,或者它不是编译时常数: PieSeries
			如题所看到的,出现提示,这个是绘图相关的错误: 
- Android  selector背景以及透明色
			selector可以设置图片或layout的点击效果: <?xml version="1.0" encoding="utf-8"?> <sel ... 
- [TypeScript] Using ES6 and ESNext with TypeScript
			TypeScript is very particular about what is and isn't allowed in a TS file to protect you from commo ... 
- golang快速入门(练习)
			1.打包和工具链 1.1 包 所有 Go 语言的程序都会组织成若干组文件,每组文件被称为一个包. ? 1 2 3 4 5 6 7 8 9 10 net/http/ cgi/ cooki ... 
- 神经进化学的简介和一个简单的CPPN(Compositional Pattern Producing Networks)DEMO
			近期迷上神经进化(Neuroevolution)这个方向,感觉是Deep Learning之后的一个非常不错的研究领域. 该领域的一个主导就是仿照人的遗传机制来进化网络參数与结构.注意,连网络结构都能 ... 
