Android_HOME键无作用
android题库

1、简述如何在界面中自定义绘画内容;i.定义一个自定义的View组件1.新建一个类继承View类2.重写onDraw(Canvas canvas)方法public class MyView extends View(){Public MyView(Context context){Super(context);}Protected void onDraw(Canvas canvas){//绘画内容}}ii.调用自定义View1.Public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);SetContentView(new MyView(this));}2、列举在View中常用的画几何图形的方法;iii.不规则矩形(RectF)RectF rectF = new RectF(left,top,right,bottom);left:矩形的左边框到手机屏幕左边框的距离top:矩形的上边框到手机屏幕上边框的距离right:矩形的右边框到手机屏幕左边框的距离bottom:矩形的下边框到手机屏幕上边框的距离iv.规则矩形(Rect)Rect rect = new Rect(left,top,right,bottom);//参数意义同上v.//椭圆canvas.drawOval(rectF,paint);//参数(定义一个矩形设置椭圆的位置,画笔);vi.//扇形canvas.drawArc(arg1,arg2,arg3,arg4,arg5)//参数(定义一个扇形的位置,扇形一条边与X轴所成的角度,扇形的最大弧度,样式(true/false),画笔);vii.//圆形canvas.drawCircle(arg1,arg2,arg3,arg4,arg5);//参数(left,top(相当于圆心的坐标),半径);viii.//文本内容canvas.drawText(arg1,arg2,arg3,arg4);//参数(文本内容,left,top,画笔);ix.//线条canvas.drawLine(arg1,arg2,arg3,arg4,arg5);//参数(left,top,right,bottom,画笔)3、在Android中使用什么类来描述图像对象,图像对象的加载方式和绘画方式有哪些;i.使用Bitmap类来描述图像对象ii.常用的加载方式:1.从系统资源中加载Bitmap bitmap =BitmapFactory.decodeResource(context.getResources(),R.drawable.photo);2.通过资源文件路径加载assets目录下面的资源文件Bitmap bitmap2=BitmapFactory.decodeStream(context.getAssets().open("weather/a_1.gif"));注:图片文件放在项目中的assets目录下;3.从sdcard卡中加载Bitmap bitmap = BitmapFactory.decodeFile(“/sdcard/dcim/photo.jpg”);4.从另一个Bitmap对象中加载a)从bitmapA对象的图片数据中取出一部分加载到bitmapB对象中:Bitmap bitmapB =Bitmap.createBitmap(截取区域的起始点x坐标, 截取区域的起始点y坐标, 截取区域终点x坐标, 截取区域终点y坐标);b)将bitmapA对象的图片缩放成100*50的尺寸加载到bitmapB对象中Bitmap bitmapB =Bitmap.createScaledBitmap(bitmapA,缩放后的宽度, 缩放后的高度,false);5.压缩原图片形成容量较小的BitmapByteArrayOutputStream bos=new ByteArrayOutputStream();press(CompressFormat.PNG, 75, bos);Bitmap bitmap5=BitmapFactory.decodeByteArray(bos.toByteArray(), 0,bos.toByteArray().length);x.绘画方式1.canvas.drawBitmap(bitmap,X坐标,Y坐标);4、简述使用Matrix对图像进行变换的基本步骤;b)Matrix概念:即矩阵,线性代数中的一个术语,在android中用于描述图像的平移、旋转、缩放、倾斜等信息。
手机键盘失灵的原因和解决方法整理

让知识带有温度。
手机键盘失灵的原因和解决方法整理手机键盘失灵的缘由和解决方法还在为手机键盘失灵而找不到解决方法?下面让我来告知你手机键盘失灵的缘由及解决方法,期望能帮忙到你。
手机键盘失灵的缘由1、个别按键失灵:造成的缘由多是由于手机主板的按键部分老化腐蚀造成的。
2、有规律的失灵:造成的缘由是手机主板按键部分断线。
3、全部按键失灵:这种状况只有开机键正常,造成的缘由多是由CPU虚焊造成。
手机键盘失灵怎么办状况一:按键下面的触点脏了这种状况的判读方法是:按键间或失灵,按钮没有凹陷或无法弹起的状况。
遇到这种状况就很简洁了,只需要把按键下面的用酒精擦拭洁净就可以了。
预备医用75%酒精(药店里有卖),手镊子一只,擦拭布一块。
第一步:关闭手机(重要步骤,肯定别遗忘关机)第1页/共3页千里之行,始于足下。
其次步:用镊子取出一块酒精棉球按在iphone的`home键上,临时不要用力按。
iphone与地面呈45度角,home键在下方,听筒在上方(此步骤确保渗进去酒精不会进入屏幕)酒精棉球顺着home的边缘,来回擦拭,手镊子夹用力灼精棉球的同时,来回按home转圈擦拭)让酒精渗出。
擦拭也许10圈左右,拿开酒精棉球,用手机按home 键,持续20左右。
第三步:照着第2步再做一次。
擦拭5圈,按home10下左右。
第四步:以上完成后,接下来的就是漫长的等待了。
(留意事项:将手机斜放在桌面上,home在下,听筒在上,这一点肯定要做到哦。
)第五步:每小时按home键10下左右,持续3小时,当按home 键悦耳的按键音再次响起时,就是开机的时候。
(酒精挥发)对于一些性子比较急的朋友,切忌不要用热风机对着home键吹。
可以把home键放在笔记本的散热口10CM左右的地方,即不伤机器,又能加速酒精挥发。
状况二:按键电路坏了这种状况的判读方法是:按键失灵后无法再使用,按钮凹陷或存在无法弹起的状况。
遇到这种状况,最有效最彻底的方法就是自己动手替换不良home键,当然假如产品还在保修期内拿去保修即可。
AndroidStudio运行按钮灰色的完美解决方法

AndroidStudio运⾏按钮灰⾊的完美解决⽅法
今天新建项⽬的时候突然发现编译后运⾏按钮为灰⾊。
解决⽅案:
第⼀步:点击图中的Add Configuration,出来如下界⾯
第⼆步:点+号,并选择Android App选项出来下图所⽰界⾯
第三步:在Module 中下拉框中选择app
如果在Module 下拉框没有app这个选项
点击搜索框,输⼊sync,从搜索结果中选择如下项:
点击运⾏然后就可以在Module下拉框中发现app这个选项了。
第四步:
点击Add Configuratio 选择app ,运⾏按钮就可以⽤啦。
到此这篇关于Android Studio 运⾏按钮灰⾊的完美解决⽅法的⽂章就介绍到这了,更多相关Android Studio 运⾏按钮灰⾊内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Android手机常用的三个键,home键,back键及menu键。

Android⼿机常⽤的三个键,home键,back键及menu键。
public class BackKeyTest extends Activity{/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.main);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event){if (keyCode == KeyEvent.KEYCODE_BACK ){// 创建退出对话框AlertDialog isExit = new AlertDialog.Builder(this).create();// 设置对话框标题isExit.setTitle("系统提⽰");// 设置对话框消息isExit.setMessage("确定要退出吗");// 添加选择按钮并注册监听isExit.setButton("确定", listener);isExit.setButton2("取消", listener);// 显⽰对话框isExit.show();}return false;}/**监听对话框⾥⾯的button点击事件*/DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog, int which){switch (which){case AlertDialog.BUTTON_POSITIVE:// "确认"按钮退出程序finish();break;case AlertDialog.BUTTON_NEGATIVE:// "取消"第⼆个按钮取消对话框break;default:break;}}};}⼩结:Android⼿机常⽤的三个键,home键,back键及menu键。
Android的全局键(home键_长按耳机键)详解【android源码解析八】

下面我详细展开来说明一下:
一、先说Home键的实现的大致流程,即---->为什么点击Home键,都进入到launcher的待机界面;
(1)Home键的定义在
step1: frameworks/base/core/java/android/view/KeyEvent.java这个类中,在KeyEvent.java这个类中有个static的静态块:
step3: 而Home键对应的值如下:
/** Key code constant: Home key. * This key is handled by the framework and is never delivered to applications. */ public static final int KEYCODE_HOME = 3;
转载请标明出处:
(一)可以在frameworks层的KeyEvent.java这个类中定义一个值,在PhoneWindowManager.java这个类中做处理就可以了。(Home键就是这么实现的)。效果图如下:
(二)可以利用广播的形式,frameworks层PhoneWindow.java这个类的onKeyDown( )对这个实体键发广播,上层接受这个广播来处理也可以达到这个效果。耳机键就是利用广播来接受的。无论在哪个界面长按耳机键,都会进入到音乐的界面。(长按耳机键的)效果图如下:
/** {@inheritDoc} */ @Override public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) { final boolean keyguardOn = keyguardOn()
【推荐】安卓手机外置虚拟按键失灵怎么办-精选word文档 (1页)

【推荐】安卓手机外置虚拟按键失灵怎么办-精选word文档
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
== 本文为word格式,下载后可方便编辑和修改! ==
安卓手机外置虚拟按键失灵怎么办
很多安卓手机都有虚拟按键,但是有时候虚拟按键也会失灵。
那么安卓手机外置虚拟按键失灵怎么办呢?下面就让jy135小编来告诉大家吧,欢迎阅读。
1、打开手机浏览器,用搜狗搜索引擎搜索下载Gravity box【kk】和Xposed Installer两个软件。
2、打开刚下载的两个软件,点击进入进行激活操作。
3、为了更好的后期操作,需要对Xposed Installer进行root授权,在root权限管理模块中对该两个软件后方进行打钩。
4、上述步骤结束后,需要对手机进行重启,重启后对Gravity box进行root授权。
5、在激活过程中,需要对手机进行重启两次,Xposed Installer可激活成功。
6、再对Gravity box进行激活,成功激活后,打开该软件点击“虚拟按键调整”。
7、在“虚拟按键调整”中,选择“总开关”,将其打开。
8、这样失灵的虚拟按键就成功的重新启动了。
替代home键的方法

替代home键的方法
宝子们!今天咱们来聊聊如果home键不好使了或者咱想找些替代它的酷方法。
咱先说说手机上的情况哈。
现在好多手机都有虚拟导航栏呢,在屏幕底部会有个小横条或者小方块啥的,你点一下就相当于按home键啦,直接就回到主屏幕了,可方便了呢。
还有哦,手势操作也是超棒的替代方法。
就像从屏幕底部往上滑一下,这就和按home键回到主屏幕的效果一样。
不同手机的手势可能有点小差别,但你只要在手机设置里找找,一般是在“系统导航”或者类似的选项里,就能找到手势操作的设置啦,然后按照提示设置好,用起来那叫一个顺溜。
再讲讲iPad之类的平板设备哈。
它也有类似手机的虚拟导航栏或者手势操作哦。
要是你的iPad有实体home键,但是你觉得按起来有点费劲或者怕按多了会坏,那用手势就很明智啦。
从屏幕底部边缘往上轻扫一下,就像给iPad一个小暗号,它就乖乖回到主屏幕啦。
另外呢,有些手机还支持语音助手来替代home键的部分功能。
比如说你可以长按手机的home键(如果还有实体键的话)或者直接呼叫语音助手,然后跟它说“回到主屏幕”,它就会帮你搞定啦。
这就像是你有个小跟班,你只要吩咐一声就行。
还有个小妙招,要是你的设备是那种可以自定义按键功能的。
你就可以把侧边的某个按键设置成home键的功能。
比如说有些手机侧面有个单独的按键,你把它在设置里改成按一下就回到主屏幕,这样就又多了一种方便的替代方式啦。
安卓版滑动HOME键使用教程

安卓版滑动HOME键使用教程大屏手机是目前整个智能手机的一个整体趋势。
毫无疑问大屏幕在视觉上给我们带来更多的灵魂冲击,大屏幕虽然给我们带来不少方便同时也给我们带来了不少麻烦,大家都知道很多时候操作手机我们不得不使用单手来实现,不过屏幕大了手指不够长的说,这可如何是好?元芳你怎么看?滑动HOME键下载软件中文名:滑动HOME键软件英文名:Swipe Home Button软件类别:系统工具软件语言:中文系统要求:Android2.3+软件大小:331KB软件测试机型:MOTO ME525滑动HOME键,只看应用的名字多少也能猜到,这款APP可以让我们用手势来实现一些类似HOME键之类的操作。
而与一些同类应用相比,它会显得更加小巧、纯净、容易使用。
应用打开后,各项功能及设定在主界面上一目了然。
每一个设置选项下面都有简单的说明,几乎无需多做额外的介绍。
基本设置前三个设置选项可以让应用更隐蔽的在后台运行,只是如果勾选第三个选项,想让应用不在通知栏中显示,首先要确定手机是安卓4.1以上的系统,不然应用服务会随通知栏图标一起被关闭掉。
该应用提供了8种手势动作,具体的动作在“使用说明”选项中有详细描述。
默认状态下,可以从屏幕底部中间向上滑来执行HOME键操作,向左上或右上滑呼出下拉通知栏,向上后再向下呼出最近使用的应用菜单。
如果有特别需要,还可以在“手势绑定”选项中对每一个手势动作的功能进行自定义设置,进而可以实现用滑动手势快速打开自定义应用的功能。
手势动作设置另外,高级设定选项中还有一些更详细的设置,不过通常保持默认状态即可。
高级设置值得一提的是,作为一款系统功能性增强的工具,这款应用竟然不需要root 权限,而且完全免费还没有任何内置广告。
对用户而言可谓相当友好。
文章来源安软市场 /news/2421.html。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Rav4 Device Provisioned issue analysis
report
一、问题现象
下载正式版本软件,第一次开机做完SetupWizard之后无法锁屏,HOME键和MENU键无效,重启后恢复正常。
Platform:MT6589
Android版本:4.2JB
BuildType:user
系统软件版本:SWL31+UM
系统RAM:1GB
二、第一次开机执行的流程
整个流程主要分为3个部分:
1、Provision.apk部分,此apk是Android默认的设置DeviceProvsioned标志的,正常来讲系
统中只需要一个应用在第一次开机时进行DeviceProvisioned标志的置位。
Provsion.apk 拥有和Launcher一样的HOME属性,并且优先级比Launcher要高,所以第一次开机启动时首先启动的是provision.apk,它没有界面显示只做设置。
其配置属性如下图:
它在设置完DeviceProvsioned标志之后会将自己禁用并结束,然后系统就会启动其他具有HOME属性的应用。
具体代码如下:
2、SetupWizard部分,Provision.apk结束之后系统会再启动其他具有HOME属性的应用,因
为SetupWizard的优先级比Launcher要高,所以此次启动的是SetupWizard,它的属性配置如下图:
SetupWizard执行完之后最后也会设置DeviceProvisioned标志,这一步与provision.apk的作用重合了,具体的设置代码如下:
同样的,SetupWizard设置完成之后也会禁用自己拥有HOME属性的Acitivity组件,然后启动具有HOME属性的Launcher。
3、Launcher部分,Launcher的HOME属性Activity没有声明android:priority字段,系统默
认值为0,低于上面两个同样具有HOME属性的应用,所以最后被启动,Launcher具体的属性配置如下:
Launcher启动之后系统已经初始化完成,进入正常运行模式。
三、问题分析
1、初步分析
根据问题无法锁屏,HOME键和MENU键无效的表面现象我们发现与系统没有成功设置DeviceProvisioned标志的现象非常相似和接近,以此为问题的切入点,再通过问题log一并进行分析,发现以下信息:
一、在keyguard获取DeviceProvisioned的值之前,provision.apk已经将DeviceProvisioned的值修改为ture(1),同时将系统属性sys.settings_global_version的值set为4,然后向监控DeviceProvisioned值改变的keyguard发送了通知,具体如下图:
二、Keyguard收到通知后是从setting cache中获取到的DeviceProvisioned的值,仍然为false (0),而不是provision.apk更改后的true(1),而且keyguard会将这一次通知读取到的值保存到一个成员变量中,以后都将使用这个成员变量作为DeviceProvisioned的判断,具体如下图:
三、当按键消息到达时,keyguardOn的状态为true,所以根据系统的代码逻辑会对HOME
和MENU做特殊处理,如果keyguardOn并且DeviceProvisioned为false则不做响应,具体如下:
四、系统重启一次之后,所有功能恢复正常。
2、进一步分析
根据以上信息我们可以发现DeviceProvisioned的值已经成功设置,并且也及时通知到了监控此值的应用,包括keyguard,但是keyguard获取到的却还是设置之前的旧值,现在问题的原因初步定位到获取的一方,获取DeviceProvisioned的接口最终会走到以下函数中:
这个函数会获取当前系统的versionProperty,然后再与之前保存的versionProperty做比较,如果不相等则说明settings值有更新,之前保存的cache已经不能使用,所以会先清空cache,然后保存当前的versionProperty。
如果当前系统的versionProperty与之前保存的相等,则会从cache中查找,并将查找的结果返回,具体代码如下:
根据上面的初步分析我们可以知道keyguard没有走versionProperty的代码路径,而是走了cache,这说明一个问题,就是以下代码并没有正确的获取到最新的versionProperty:
根据初步分析中的log以及时间点我们可以准确的知道versionProperty设置在前,keyguard 获取在后。
到这一步我们可以将问题的原因定位到SystemProperties的set和get上,就是set可能有存在延时,不能保证set之后马上get就能正确获取到设置后的值,下面我们通过分析SystemProperties的机制来验证:
1、首先SystemProperties的set和get实现不一样,set时需要通过本地socket与property service(init进程)通信,然后property service收到请求之后再set进property workspace(共享内存方式)。
但是property service(init进程)是单线程工作,所以有时候它可能响应比较慢(比如它正在关闭一个子进程或者正在做其他事情),Android在设计的时候发现了这个问题,所以他们采取的措施是在set之后等待250ms,以保证大部分时候的read-after-write 能够正确工作,但是250ms并不能保证所有时候都能正确的工作,所以我们可以认为这是一个设计上的缺陷。
在Android源码中的注释已经说明了这一点,具体如下:
2、另外SystemProperties的get是直接从映射到进程中的property workspace(共享内存)获取的,如果此时property service很忙等待了250ms之后仍然没有set到property workspace (共享内存)中,那么此时获取的就是错误的旧值,而不是刚刚发送给property service的新值。
SystemProperties的实现框架如下图:
四、解决方案
通过以上分析,我们可以知道造成最终问题的原因是SystemPropertites机制本身的异步性和潜在的设计缺陷(不可靠性)导致的,而keyguard恰好在出现问题的时候收到通知并获取了错误的状态值,导致keyguard本身的状态混乱,最终引起一系列的按键和无法锁屏的现象。
针对此问题我们需要通过尽可能小的改动和影响来解决,通过分析当前的代码逻辑和结构,我们给出以下方案:
1、在SettingsProvider中,保证SystemProperties在set成功之后再发送改变通知,从而让
监控者能够正确的获取到SystemProperties的值。
具体的实现为在set之后进行get,当get到的值与set之后的值相等之后,此时就认为set已经成功,可以发送通知。
五、潜在问题与风险
以上方案采用的是忙等的方式,因为此问题发生的概率比较低,所以此方案只有在问题发生时此接口才会存在性能降低的可能,但是通过此方案可以保证数据的同步性和状态正确性。
由于此问题的最终原因是android的SystemProperties机制造成的,所以理论上所有android 项目都存在此问题。
#analysed by jinshi.song from SWD2 Framework team.
#jinshi.song@
#201408201558。