Android
moonshine2016
这个作者很懒,什么都没留下…
展开
-
Android 5.1 Audio HAL分析
初始化工程 1) AudioPlicyService被第一次实例化后,将会调用onFirstRef,其中实例化了两个全局变量,一个是mAudioPolicyClient,一个是mAudioPolicyManager。 2) mAudioPolicyClient是AudioPolicyClient类型的,具体实现在AudioPolicyClientImpl.cpp,该类中保存了AudioP原创 2016-03-19 12:19:03 · 9931 阅读 · 0 评论 -
Android架构收藏
不错的架构合集https://github.com/CameloeAnthony/AndroidArchitectureCollection原创 2016-12-16 22:49:45 · 215 阅读 · 0 评论 -
创建输入法指南
官方文档地址输入法编辑器(IME)是能够让用户输入文字的一个空间,Android提供了一个可扩展的输入法框架,它允许应用程序为用户提供可选的输入法,如基于触屏的键盘输入法或基于语音的输入法。安装自己喜欢的输入法后,用户就可以在系统设置中选择一个输入法,并在以后的各种场景中使用此输入法;一次只能选择一个输入法。如果要为Android系统增加一款IME, 需要创建一个Android应用,该应用中包含了一翻译 2016-11-30 16:00:46 · 709 阅读 · 0 评论 -
Java注解
Java最难的部分不是语言本身,而是其过多的库和各种框架,而现在各种框架中,基本上是无“注解“不欢,注解已成为必须非常熟练掌握的一部分了。Java 1.8进一步增加了注解的一些新特性。什么是注解 Annotations, a form of metadata, provide data about a program that is not part of the program it原创 2017-01-07 16:14:28 · 415 阅读 · 0 评论 -
ADB 用法大全
转自基本用法 命令语法为命令指定目标设备启动/停止查看 adb 版本以 root 权限运行 adbd指定 adb server 的网络端口设备连接管理 查询已连接设备/模拟器USB 连接无线连接(需要借助 USB 线)无线连接(无需借助 USB 线)应用管理 查看应用列表 所有应用系统应用第三方应用包名包含某字符串的应用安装 APK卸载应用清除应用数据与缓存转载 2017-01-09 12:34:21 · 825 阅读 · 0 评论 -
Java常用的库
Java常用的库连接: https://github.com/akullpp/awesome-java原创 2017-02-08 10:41:52 · 286 阅读 · 0 评论 -
Java层的ServiceManager和Native层的ServiceManager的对应过程
几天前一个同事问Java层的Binder和Java层的ServiceManager和C++层的ServiceManager是如何对应起来的,竟然一时语噻,一段时间不关注就会感到陌生啊,现在再总结一下,只写Java层的,C++层的不写,C++ Binder的知识需掌握,java和native的基本概念及对应关系不讲。Java层Binder的初始化过程Binder最终是要和它的驱动打交道,Java层要调原创 2017-01-12 15:22:38 · 5891 阅读 · 3 评论 -
Android log常用分析方法
logcatevent log这种log framework层常常使用,通过类似EventLog.writeEvent()写log,这种log被保存在/system/etc/event-log-tags,如果要看这种log,通过类似logcat -b events -v threadtime这种方式打印出来,输出的格式类似于下面:02-18 12:29:22.625 451 467 I am原创 2017-02-18 18:06:12 · 3334 阅读 · 0 评论 -
Android Crash处理流程分析
Android的crash主要有3种,java层的force close,native层的crash和ANR。检查这三种crash的log方法也不相同:分别搜索“FATAL EXCEPTION”, “fault addr”和”ANR”。这三种crash的处理流程有不同,也有很多共性,但不管哪种crash,都先要导致了解下App的启动流程。App的启动流程App启动时,如果不和其他应用shareUse原创 2017-05-17 11:14:34 · 4201 阅读 · 0 评论 -
Android性能模式 第三季
转自http://hukai.me/android-performance-patterns-season-31. Fun with ArrayMaps程序内存的管理是否合理高效对应用的性能有着很大的影响,有的时候对容器的使用不当也会导致内存管理效率低下。Android为移动操作系统特意编写了一些更加高效的容器,例如SparseArray,今天要介绍的是一个新的容器,叫做ArrayMap。我们经常会转载 2017-07-12 15:00:56 · 557 阅读 · 0 评论 -
Android性能模式 第一季
Google从2015年起陆续在YouTobe上发布了Android性能优化的小视频,目前已经更新到了第6季,这些小视频也被转发到了优酷上,在优酷的播单上搜索“Android 性能模式”就能找到,而且还有中文字幕,值得一看,另外还有热心的网友把视频中将的以文字的格式记录了下来,这篇文章就是转自这个热心的网友的。转自Render Performance大多数用户感知到的卡顿等性能问题的最主要根源都是因转载 2017-07-05 12:54:31 · 904 阅读 · 0 评论 -
在framework.jar和services.jar中增加新类
增加新类到framework.jar中如果是在原有的路径下增加新的类,没啥说的,直接增加就行,除了需要将aidl文件增加到framework/base下的Android.mk外,其它啥都不需要改。这里说的是新建一个自己的功能文件夹,如我创建了在framework/base下创建了一个redex,一般情况下我还会在这个文件夹下创建一个java文件夹,这样写的java文件会放在这个文件夹,如果还有nat原创 2016-12-06 12:45:26 · 3288 阅读 · 0 评论 -
查看UID的方法
通过程序获得通过PackageManager,得到相应包名的ApplicationInfo,ApplicationInfo 中有个值域就是uid:try { PackageManager pm = getPackageManager(); ApplicationInfo ai = pm.getApplicationInfo("com.speedsoftware.rootexplore原创 2016-12-01 15:29:53 · 34538 阅读 · 1 评论 -
屏幕输入法
原文地址从Android 1.5开始,Android平台提供了一个输入法框架(IMF),允许创建屏幕上的输入方法,如软件键盘。本文概述了Android输入法编辑器(IME)是什么,以及应用程序需要做什么才能与它们协同工作。 IMF旨在支持新类Android设备(例如没有硬件键盘的设备),应用程序与IMF一起使用并为用户提供了极好的体验非常重要。什么是输入法?Android IMF旨在支持各种各样的I翻译 2016-11-30 18:37:20 · 1106 阅读 · 0 评论 -
下载Android 7代码
十分感谢清华大学做的镜像AOSP推荐的方法 安装 Repo确信在/home目录下有bin/目录,并且添加到环境变量中$ mkdir ~/bin$ PATH=~/bin:$PATH下载Repo工具,并赋予可执行 权限:$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo$ chmod a+x ~原创 2016-09-14 11:00:42 · 446 阅读 · 0 评论 -
Android 传感器概述
Android官方文档大多数Android设备都内置有测量运动,方向和各种环境情况的传感器,这些传感器能够提供多种高精度的原始数据。如果你想监控三维的设备运动或位置,或者是监控周围环境的变化,这些数据都是非常有用的。举个例子,我们玩一款游戏,它可能需要读取中立传感器的数据,以便去推断我们复杂的姿势和动作,像倾斜,振动,旋转或者振幅等情况。同样地,一款天气应用程序,可能需要用到设备的温度和湿度传感器,翻译 2016-09-13 12:13:17 · 4898 阅读 · 0 评论 -
Host 地址
很好用的host地址连接原创 2016-09-18 10:58:41 · 439 阅读 · 0 评论 -
访问Samba的配置
记性不好,然后上网搜时,一堆乱七八糟的东西,实际上根本没有那么复杂,这里做个笔记,以便方便以后使用。修改/etc/samba/smb.conf,在最后追加类似这样的文字:[mytest] comment = mytest's directory path = /home/mytestvalid users = mytestpublic = no writable = yes brow原创 2016-09-23 10:38:53 · 345 阅读 · 0 评论 -
位移传感器
Android官方文档Android平台提供了一些传感器让你能监测设备的移动。它们中的两个传感器总是基于硬件的(加速度和陀螺仪),另外的这类这些传感器中的3个即能使用基于硬件的也能使用基于软件的(重力,线性加速度和旋转矢量传感器)。例如,一些设备从基于原件的传感器中获取加速度和磁强的数据,但另外一些设备也用陀螺仪获取这些数据。大多数Android设备都有加速度传感器,很多设备现在也包含陀螺仪传感器。翻译 2016-09-24 17:03:05 · 3484 阅读 · 0 评论 -
位置传感器
官方文档Android平台提供了两个感知设备位置的传感器:地磁场和方位传感器。Android平台也提供了感知物体多么近接近设备面的传感器(被广为所知的近距离传感器)。地磁场和近距离传感器是基于硬件的传感器,大多数手机和平板厂商都内置了地磁感传感器。同样地,手机常常通常也内置近距离传感器以便感知用户是否将设备贴近到用户的脸上(例如,在通话过程中)。方向传感器是基于软件的,它的数据来源于加速度传感器和地翻译 2016-09-26 11:49:59 · 2925 阅读 · 0 评论 -
环境传感器
官方文档链接Android平台提供了4个传感器以方便检测各种环境的参数,通过使用这些传感器,能感知到Android设备周围的相对湿度、光照强度、周围压力和周围的温度。所有这4个环境传感器全都是基于硬件的,只有当设备厂商内置了它们才可以使用。大多数设备厂商使用光线传感器控制屏幕的亮度,除了这个传感器外,其他环境传感器很少在设备中使用。因此,在从环境传感器中获取数据前,需要动态地检查环境传感器是否存在,翻译 2016-09-28 12:44:23 · 697 阅读 · 0 评论 -
React Native开发环境搭建
React Native的开发环境搭建,官网有详细的说明,但基于中国的特殊国情,不是太适合我们。安装一些依赖的工具安装Node去官网下载Node的安装文件并安装,安装完成后在终端中运行“node -v”以检查是否成功安装。 安装PythonPython现在有python2和python3,官网推荐使用python2,还是按要求安装吧。React Native命令行工具正常的安装 Node集成了原创 2016-11-07 14:22:44 · 506 阅读 · 0 评论 -
位置和地图
Android官方文档链接地址 注意:本篇是Android framework中android.location包的API指南。Google Location Service API,是Google Play service的一部分,它提供了更强大的,能够自动化工作(像定位provider旋转,电源管理)的高层框架。Location service也提供了其它一些功能,如在framewor翻译 2016-10-03 16:30:42 · 298 阅读 · 0 评论 -
InputManagerService按键接收过程
InputManagerService的创建过程由SystemServer启动并将其注册到系统服务中。frameworks/base/services/java/com/android/server/SystemServer.java /** * Starts a miscellaneous grab bag of stuff that has yet to be refactore原创 2016-11-16 17:48:46 · 585 阅读 · 0 评论 -
Android性能模式 第二季
转自http://hukai.me/android-performance-patterns-season-2/1. Battery Drain and Networking对于手机程序,网络操作相对来说是比较耗电的行为。优化网络操作能够显著节约电量的消耗。在性能优化第1季里面有提到过,手机硬件的各个模块的耗电量是不一样的,其中移动蜂窝模块对电量消耗是比较大的,另外蜂窝模块在不同工作强度下,对电量的转载 2017-07-07 12:50:18 · 689 阅读 · 0 评论