1.在normal mode下,tp button也是和其他触摸事件一样,以坐标形式的input_event进行上报.在初始化时会通过tpd_button_setting()函数依据定义在tpd_custom_XXX.h文件里的配置信息将虚拟按键的坐标信息写在/sys/board_properties/virtualkeys.mtk-tpd中. 工作时.tp driver将按下的点的坐标进行上报.Android上层会读取sys中的按键配置信息.再推断上报的坐标是否属于某个按键的坐标范围,以此将坐…
Android tp的虚拟按键处理 现在在越来越多的Android的手机都是虚拟按键来操作,但是对于开发者来说可能会关心Android对虚拟按键如何处理的.对Linux熟悉的人可能会说,it's easy, 调用input_report_key().OK,你说的没有错误,但是在android中,google让你对策略和驱动有了更加深入的了解. APP------->           Framework------->                          Kernel-----…
在使用沉浸式状态栏设置界面全屏时发现pad和部分手机(华为和魅族系统自带)屏幕底部会带有虚拟按键,遮挡住界面本身的一部分. 为了设置隐藏,在网上找了一些方法,设置Activity主题再在布局加fitsSystemWindows,或者在AndroidManifest里设置主题样式加android:windowDrawsSystemBarBackgrounds.这些设置是可以隐藏底部按键,但同时也使我之前设置的沉浸式状态栏失效. 下面两种会隐藏按键,如果需要可以直接设置在activity中. 第一种…
一.屏幕中各种栏目以及屏幕的尺寸 当我们需要计算屏幕中一些元素的高度时,或许需要先获取到屏幕或者各种栏目的高度,下面这个类包含了Status bar状态栏,Navigation bar虚拟按键栏,Action bar标题栏, Window屏幕内容等的宽高的计算,可以带来极大的方便. 因为我在代码中做了比较详尽的注释,在这里不再多阐述,以下是代码: /** * 这个类描述了当前设备的配置中system bar的尺寸(StatusBar状态栏,NavigationBar虚拟按键栏,ActionBar…
/*********************************************************************** * Android隐藏虚拟按键,关闭开机动画.开机声音 * 声明: * 有时候,我们可能会希望隐藏掉android中的虚拟按键,当然,那个 * Android的开机动画,有时候也是挺讨人厌的,也是可以隐藏的. * * 2016-1-7 深圳 南山平山村 曾剑锋 **********************************************…
http://blog.csdn.NET/a91694451/article/details/50469857 最近公司的项目里遇到了一个问题,就是最后适配的时候时候同事的华为手机时,由于底部带有虚拟按键,所以正好遮住了底部导航栏的按钮以及其他子页面的一些存在于底部的功能. 也在网上找了些解决方案,但是不是很完美,下面说下我的解决步骤. 首先我找到了一个方案,说是在布局富容器中添加一句话 Android:fitsSystemWindows="true" 通过这句话让布局容器来适应手机屏…
Google的官方文档是: https://developer.android.com/training/system-ui/navigation.html#behind 示例代码 1 View decorView = getWindow().getDecorView(); 2 // Hide both the navigation bar and the status bar. 3 // SYSTEM_UI_FLAG_FULLSCREEN is only available on Androi…
要隐藏Android下的虚拟按键,可通过如下办法操作 adb root adb remount adb shell ls -al /system/build.prop   (查看文件权限) -rw-r--r-- root     root         4237 2015-11-19 04:34 build.prop adb shell pull /system/build.prop ./  (将该文件拿出来修改) gedit  build.prop qemu.hw.mainkeys=1   …
//获取虚拟按键的高度 public static int getNavigationBarHeight(Context context) { int result = 0; if (hasNavBar(context)) { Resources res = context.getResources(); int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "androi…
本文转载自:http://blog.csdn.net/u014583590/article/details/55263141 虚拟按键在华为手机中大量存在,而虚拟按键的存在无疑增加了屏幕适配的难度,往往许多时候我们的界面需要根据虚拟按键的显示与否(虚拟按键的显示隐藏是用户可以动态调整的)来调整界面的ui显示,但Android系统本身(似乎)并没有提供此类接口(PS:反正我没找到类似接口),经过研究得到一个可用的方式. android手机界面分为SystemUi[包括status bar(状态栏)…
---恢复内容开始--- 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近项目进行适配的时候发现部分(如华为手机)存在底部虚拟按键的手机会因为虚拟按键的存在导致挡住部分界面,因为需要全屏显示,故调用虚拟按键隐藏方法使之隐藏,然而发现出现如下问题: 手动操作隐藏虚拟按键后出现长白条区域 不自动隐藏 滑出状态栏后虚拟按键也出来,状态栏隐藏后虚拟却不跟着隐藏 在没有虚拟按键的设备上影响了SurfaceView全屏显示图传(原本全屏显示的图传在切出去再进来时变成了小屏显示) 通过google了…
/** * 隐藏虚拟按键,并且全屏 */protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api View v = this.getWindow().getDecorView(); v.setSystemUiVisibility(View.GONE); } else if (Build…
我们自定义popupWindow的时候,一般会设置这些参数 setContentView(contentView); //设置高度为屏幕高度 setWidth(UIUtils.getScreenHeight(context)); //设置宽度为屏幕宽度 setHeight(UIUtils.getScreenWidth(context)); setFocusable(true); //dismiss时将背景透明度恢复为1f setOnDismissListener(()-> modifyActiv…
欢迎访问我的个人博客,原文链接:http://wensibo.top/2017/07/03/Binder/ ,未经允许不得转载! 前言 大家好,好久不见,距离上篇文章已经有35天之久了,因为身体不舒服害了一场病,不过现在已经好多了:另外这个月是考试月,当然得花多点时间复习功课了:再者这段时间依旧在看书,同时也在研究Android源码,准备了不少干货想与大家一起分享.7月刚到,该放假的也都差不多放假了,该实习的也已经在实习了,而我...还是准备秋招吧!多看书多打码多提升自己的眼界. 今天想要和大家…
场景分析, 为了完全实现沉浸式效果,在进入特定的app后可以将导航栏移除,当退出app后再次将导航栏恢复.(下面将采用发送广播的方式来移除和恢复导航栏) ps:不修改源码的情况下,简单的沉浸式效果实现代码如下,在ACitivy中添加即可(此种做法的缺点是当界面弹出对话框时或者点击的屏幕的顶部或底部边缘,会再次出现导航栏和状态栏) @Override public void onWindowFocusChanged(boolean hasFocus) {//new add super.onWind…
最近在写启动屏幕,发现虚拟按钮会挡住,启动屏幕的最下面的元素,大概有50 px.可是有什么办法知道手机是用的实体键还是虚拟按键吗? 如下图.可以看到红色的部分显示了一点点.代码里设置的是60px. 在网上查找了很久.都没发现有任何查看的api.瞬间在心里开始骂ms了.. 各种论坛各种询问. 最后有一个机油回答到 试了一试..嗯..虚拟按键全屏的时候会消失掉..可是..这不我想要的啊.. 突然间灵光一闪..想起有这样一种东西.ApplicationView.GetForCurrentView().…
一直以来,都被android中的事件传递和处理机制深深的困扰!今天特意来好好的探讨一下.现在的感觉是,只要你理解到位,其实事件的 传递和处理机制并没有想象中的那么难.总之,不要自己打击自己,要相信自己能掌握这块知识.好了,下面是我今天的收获,希望也 能对你有一点帮助. 一.拟人化来理解android中的事件机制 其实android中的事件传递与处理机制跟我们生活中的事件处理是一样的.这里有一个生活中的例子,很能说明这个问题.阐述如下: 你是一个公司的员工,你的上头有一个主管,主管上头呢还有一个经…
Android异步更新UI的四种方式 2015-09-06 09:23 segmentfault 字号:T | T 大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,我大致总结了4种方式,欢迎补充纠正 AD: 大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,我大致总结了4种方式,欢迎补充纠正: 使用Handler消息传递机制: 使用AsyncTask异步任务: 使用runOnUiThread(action)…
Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider. SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式.Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数…
在最近学习Android项目源码的过程中,遇到了很多多线程以及异步消息处理的机制.由于之前对这块的知识只是浅尝辄止,并没有系统的理解.但是工程中反复出现让我意识到这个知识的重要性.所以我整理出这篇博客,主要介绍了线程和异步处理机制的意义和用法,目的在于帮助初学者能够加深对异步消息处理机制的理解,在实际Android工程中能够更多地使用AsyncTask工具类在子线程中进行UI更新. 一.Android当中的多线程[1] 在Android当中,当一个应用程序的组件启动的时候,并且没有其他的应用程序…
目录         Android虚拟多开应用有哪些?         Android虚拟多开应用技术原理有哪几类?         Android虚拟多开需求分析         反虚拟多开技术     正文   一.Android虚拟多开应用列表   应用名称 版本号 开源 公司名称 下载链接 太极   否 维术(个人) 微信公众号:虚拟框架 VirtualApp   2017.12月停止开源更新 罗盒科技 VirtualApp LBE平行空间   否 LBE LBE平行空间 360分身大…
Android:日常学习笔记(9)———探究广播机制 引入广播机制 Andorid广播机制 广播是任何应用均可接收的消息.系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播.通过将 Intent 传递给 sendBroadcast().sendOrderedBroadcast() 或 sendStickyBroadcast(),您可以将广播传递给其他应用. Android提供了一套完整的API,允许应用程序自由地发送和接受广播.发送广播使用Intent,接受广播使用 广播接收器(B…
演讲前,AsyncTask文章.我们在最后谈到.AsyncTask它是利用Handler异步消息处理机制,操作结果.使用Message回到主线程,从而执行UI更新线程. 而在我们的日常开发工作,Handler一类是经常使用在我们中间,然后Handler的主要作用是什么? Handler 的主要作用就是对消息(消息能够是我们想做的一些UI更新,也能够是其它的一些不可见的操作,如操作数据库等)的异步处理机制.而相信大家都了解异步的概念. 简单地说一下: 1)从程序的角度来看,就是当运行某行代码的时候…
CPU:RK3399 系统:Android 7.1 同样的系统代码,换了一个小分辨率的屏,虚拟按键栏就出现显示不全,而且方向不对 出现这种问题的原因是显示密度和屏不匹配,需要适当的降低显示密度即可 diff --git a/device/rockchip/rk3399/rk3399_all/system.prop b/device/rockchip/rk3399/rk3399_all/system.prop index f61f0aa..fd5fe80 --- a/device/rockchip…
为了毕设的要求,需要在Android系统上运行一个app来控制硬件,今天开始这个app的编写. 首先,我们的系统将只运行这个app,也就是我们不需要状态栏,虚拟按键等. 故这里将app设置为全屏模式. /** * 隐藏虚拟按键,并且全屏 */ private final void hideBottomUIMenu() { if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api Vi…
在phpcms中,模板调取后台的数据有两种机制: 1.在控制器中定义数据,在模板中直接调用. 2.标签机制.即在模块的classes/tag.class中定义标签类,然后在模板中用标签调用 两种调用机制的区别在于标签调用方法更加灵活.…
打开android虚拟机时出现a repairable android virtual device,虚拟机可以打开但是一直处于开机状态,具体解决方案如下: 解决方案1:换个版本,不要选 CPU/ABI 中armeabi-v7a 选择 ARM(armeabi)…
由于android系统中应用程序之间不能共享内存.因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些.在android SDK中提供了4种用于跨进程通讯的方式.这4种方式正好对应于android系统中4种应用程序组件:Activity.Content Provider.Broadcast和Service.其中Activity可以跨进程调用其他应用程序的Activity:Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应…
安卓ROOT后禁用/隐藏导航栏/虚拟按键 提醒:提前装好EASY TOUCH 等类似工具. 用ROOT EXPLORER 或 ROOT BROWSER system\bulid.prop 最后加一行: qemu.hw.mainkeys=1 重启就行了. 我在NEXUS6 + CM12上OK. 我在NEXUS6 + CM13上OK. NEXUS6 原生6.0系统好像改了会有问题.…
这篇文章主要介绍了Android按钮单击事件的四种常用写法总结,比较了常见的四种写法的优劣,有不错的参考借鉴价值,需要的朋友可以参考下     很多学习Android程序设计的人都会发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同.因此本文就把这些写法总结一下,比较下各种写法的优劣,希望对大家灵活地选择编码方式可以有一定的参考借鉴价值. xml文件代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 <Button     android:id="@…