Android定制
文章平均质量分 84
Android定制相关总结
大后生大大大
加油!加油!加油!
展开
-
Android7.1代码编译错误
拿到RK3288平台7.1的代码,平台本来是用repo进行管理的。我们将代码改用git去管理,在删除了repo相关的管理文件之后在进行编译时出现了错误,如下:[ 44% 7552/17136] build out/target/product/hikari/gen/EXECUTABLES/iw_intermediates/version.cFAILED: /bin/bash -c "extern...原创 2018-05-04 09:25:03 · 1796 阅读 · 0 评论 -
Ubuntu配置jdk1.6和openjdk-8
现在公司有两套代码用作与开发。一套Android4.4.2,还有一套是Android7.1。让人比较头疼的是两套代码编译时候要求jdk的版本不一样,Android4.4.2要求的jdk的版本是1.6,而Android7.1要求的jdk版本是openjdk-8。没办法了只能在Ubuntu里面把两个版本的jdk都装上,然后在需要某一个版本的时候动态去切换了。我的两个jdk安装路径(安装路径在哪里都无所...原创 2018-05-02 10:14:51 · 607 阅读 · 0 评论 -
system/preloadapp和system/vital-app
共同点:应用可以卸载,恢复出厂设置后仍然存在 不同点:preloadapp目录下的应用是异步扫描的过程,不影响开机过程,如果应用预置多开机会可能会出现launcher界面无显示预置应用,过一会才显示的现象vital-app目录下的应用是同步扫描的过程,在开机的过程中,应用扫描安装完成后才会进入开机启动launcher的流程,不会出现开机后launcher界面无显示,过一转载 2017-03-03 09:33:23 · 1449 阅读 · 0 评论 -
Android 5.1与6.0默认的输入法和键盘的差同
Adnroid系统定制的时候,有时客户会对系统默认的输入法和键盘有定制需求,下面是在定制过程中遇到5.1系统和6.0系统的区别,备注一下以后好查阅:相同点:1.都是将默认的配置以永久存储的方式,写在文件里面2.都是以key - value的形式存储3.修改方式都可以在Adnroid源码的framework层的SettingsProvider进行默认配置不同点原创 2017-02-08 17:12:48 · 1995 阅读 · 0 评论 -
关于Android原生5.0以上重启机器,之前的任务还是会显示出来的修改
原生Android5.0之后系统会将最近任务数据存储到持久存储中,这样手机重启后打开最近任务界面,之前的任务还是会显示出来。当前的平台是展讯7731g平台6.0系统,具体文件系统保存在/data/system/recent_images和/data/system/recent_tasks这两个目录中,见下图(设备root后DDMS可以查看):具体存储这件事的的类原创 2017-01-21 11:40:23 · 3791 阅读 · 2 评论 -
Android定制--------系统内置文件,不需要用到linux服务
这里主要是在系统启动系统媒体扫描服务的时候将我们需要内置的文件拷贝到指定位置。1. Frameworks中在FileUtil中添加一个复制文件的方法:diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.javaindex 0a724a1..b30735a 100644---原创 2017-01-05 11:05:40 · 835 阅读 · 2 评论 -
Android源码编译开启ccache缓存
当你删掉out/target目录或者使用make clean清空输出重新编译源码的时候,编译时间通常都很漫长。其实这个问题很容易解决,Android官方为我们带来了解决方案–ccache编译器缓存。官方这么讲:You can optionally tell the build to use the ccache compilation tool. Ccache acts as a co原创 2016-12-14 17:23:45 · 8296 阅读 · 0 评论 -
Android定制--------自定义关机时间
源码路径:frameworks\base\services\core\java\com\android\server\power\ShutdownThread.java +private static final int MAX_SHUTDOWN_TIME = 5*1000; //增加 5s 可以适当调整以满足关机动画会播放完整 + private static long s原创 2016-12-05 10:39:59 · 738 阅读 · 0 评论 -
Android定制--------设备在预装了两个浏览器Chrome与Browser的情况下,Browser内置的书签不显示
由于chrome要求安装BookmarkProvider, 而BookmarkProvider与系统浏览器中BrowserProvider2 authorities相同, 系统认为是相同的provider, 使用中BrowserProvider2的数据库并未创建, 导致系统浏览器一系列异常。经调研过,如果GMS与系统浏览器共存,可以不编译bookmarkprovider,不会影响CTS与GMS。原创 2016-12-05 10:38:11 · 3495 阅读 · 0 评论 -
Android定制--------强制切换到听筒模式
源码路径:\packages\apps\InCallUI\src\com\android\incallui\AudioModeProvider.java方法:public void onAudioModeChange(int newMode, boolean muted);添加如下判断:if(newMode == AudioState.ROUTE_EARPIECE){newMo原创 2016-12-05 10:36:10 · 3905 阅读 · 0 评论 -
Android定制--------开机对话框的实现
客户新要求:在每次开机的时候谈出对话框,对话框里面有连接他们公司网页的超链接,对话框还可以选择性的弹出。类似下图:--------针对上面的需求整理下有几个需要注意的点:1.每次开机弹出对话框2.对话框中有超连接3.对话框选择性的弹出第2和3点都非常简单,等下看代码就秒懂了就不详细说了。就是第1点貌似有点麻烦。我的做法是这样,创建一个类似La原创 2016-10-28 22:42:56 · 1005 阅读 · 0 评论 -
Android定制-------------第三方客户锁屏APK屏蔽Home和ResentApp键
客户需求:客户自定义的第三方锁屏APK出现时,需要屏蔽掉Home和RecentApp键,防止用户强制退出锁屏运用。解决方法:利用系统的Activity栈来解决。当我们看到当前出现在界面的Activity时,此时改Activity是处于Activity栈的栈顶的。我们可以判断当前栈顶的Activity是不是我们的锁屏运用,如果是的话就在Home和RecentApp按键处将事件捕捉。原创 2016-09-28 23:00:23 · 2448 阅读 · 0 评论 -
Android_5.0定制--------在Launcher界面改变SystemUI中的NavigationBar和StatusBar背景颜色
SystemUI中的状态栏和导航栏在源码中的布局分别是: 状态栏:super_status_bar.xml,源码路径:\frameworks\base\packages\SystemUI\res\layout\super_status_bar.xml 导航栏:navigation_bar.xml,源码路径:\frameworks\base\packages\SystemUI原创 2016-09-19 23:45:50 · 5226 阅读 · 0 评论 -
输入内容在一定时间内自动变星号的简易数字输入键盘
撸了一个简单的页面,功能就是输入数字密码,然后自动变星号的控件。主要分为两部分:上面输入内容在一定时间内自动变星号和下面的数字键盘。 输入时候和按下删除键时候的log:08-28 09:05:24.145 9004-9004/com.boyue.tlh.payment E/tlh: onChanged,输入的密码是:808-28 09:05:24.146 9004-...原创 2018-08-28 09:08:54 · 1045 阅读 · 0 评论 -
SurfaceView预览Camera图像,SurfaceView总是位于顶层的问题
今天在公司遇到一个比较郁闷的问题:驱动组的同事把Camera的源切换成了从DVD输入,这就意味着我们打开系统的Camera的话看到的就是DVD解码过后的画面。同事用SurfaceView直接显示显示Camera的预览画面,确实可以看到画面。但是问题来了,无论怎么添加控件、View总是会显示在SurfaceView的下面,就连系统的SystemUI也显示在SurfaceView的下面。接原创 2017-12-07 23:34:54 · 2217 阅读 · 0 评论 -
Handler、Looper、Message、MessageQueue
一个线程中可以有一个Looper,Looper中有一个MessageQueue,MessageQueue中是很多的Message。至于Handler,就负责将Message压到MessageQueue中去,Looper轮询MessageQueue中的Message,然后回调Message的Callback或者Handler的handlerMessage方法。我们在UI线程中使用Ha原创 2017-06-27 16:11:42 · 275 阅读 · 0 评论 -
四步实现根据View大小压缩加载Bitmap
根据View大小压缩加载Bitmap:1.将BitmapFactory.Options的inJustDecodeBounds设置为:true,并加载图片2.从BitmapFactory.Options取出图片的原始尺寸信息,它们应对与outWidth和outHeigth参数3.根据采样率的规则并结合目标View的所需大小计算出采样率inSampleSize4.将BitmapFact原创 2016-11-15 00:32:27 · 716 阅读 · 0 评论 -
可移动悬浮窗口实现
先直接上代码:(代码中有少量的注解,但都是实现功能的关键)接口ViewManager中定义了addView、reMoveView、updateView方法,WindManager实现了ViewManager但是没有直接去实现这三个方法,间接的交给WindowManagerGlobal去实现addView、reMoveView、updateView方法。package com.e原创 2016-11-15 00:38:23 · 860 阅读 · 0 评论 -
读Android开发艺术探索笔记(LruCache+DiskLruCache实现强大的图片加载)
LruCache用于实现内存缓存,DiskLruCache充当了存储设备缓存也就是存储到SD卡。LruCache: 初始化LruCache: private int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); private int cache原创 2016-11-19 09:31:52 · 414 阅读 · 0 评论 -
Android 6.0中"Unable to find optional library: org.apache.http.legacy"错误解决
Android 6.0版本已经已经基本将Apahce Http Client 移除出SDK,会报出以下错误:" Unable to find optional library: org.apache.http.legacy" 那么问题来了,如果我在以前的项目中使用了Apache HttpClient相关类,怎么办呢?请看官网给出的解决Apache HTTP原创 2016-12-17 11:07:59 · 274 阅读 · 0 评论 -
基于NoHttp+RxBus+MVP+DataBinding实现网络文件下载(带进度条)
前面有两篇文章讲到的是NoHttp+RxBus和NoHttp+RxBus+MVP从网络下载文件:NoHttp+RxBusNoHttp+RxBus+MVP这里再把DataBinding怎么使用加了上去,感兴趣的话可以下载源码看看。点击打开链接原创 2016-12-20 11:20:15 · 526 阅读 · 0 评论 -
Android定制--------系统内置文件,用到linux服务(视频文件、音频文件等)
在Android定制的过程中,有客户要求将一些视频、音频等文件内置在系统中。将过程记录下来,方便以后查询。内置过程大致分为以下几个过程:1.将需要内置的我文件,放置指定文件夹。2.用mk文件将需要内置的文件拷贝至镜像包里面存储,以便下一步l将文件拷贝纸系统内存。3.创建开机运行的shell脚本文件,也就是将第2步的文件拷贝至系统内存的脚本。下面逐步来说明:1.将需要原创 2016-10-14 22:12:54 · 2056 阅读 · 0 评论 -
基于NoHttp+RxBus+MVP实现网络文件下载(带进度条)
前面有一篇文章写的是NoHttp+RxBus实现网络文件的下载,此篇文章是对上一篇文章的升级版本,使用到了MVP模式。上一篇地址:点击打开链接传统的Android开发使用的是的MVC模式,个人觉得之前用MVC开发都是全写一个类-Activity里面,业务复杂的情况下看着头疼。™ Activity到底算V还是C,还是两者都是?傻傻分不清楚。使用MVP的话,view由Activity承担,Pr原创 2016-12-19 14:06:45 · 1102 阅读 · 0 评论 -
Android 平时用到比较多的广播之飞行模式和耳机插拔
飞行模式:判断当前是否处于飞行模式: final boolean isAirplaneModeOn = Settings.System.getInt(getActivity().getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) != 0原创 2017-02-10 09:17:44 · 1145 阅读 · 0 评论 -
监控电池电量和充电状态
监控电池电量和充电状态如果您要通过改变后台更新的频率来减少这些更新对电池寿命的影响,最好先从检查当前电池电量和充电状态入手。执行中的应用更新对电池寿命的影响取决于设备的电池电量和充电状态。 设备通过交流电源充电时执行更新的影响可以忽略不计,因此在大多数情况下,只要设备连接了壁式充电器,您就可以将更新频率提高到最高水平。 相反,如果设备正在放电,降低更新频率有助于延长电池寿命。同理,您也转载 2017-02-10 09:34:39 · 1695 阅读 · 0 评论 -
Android 平时用到比较多的广播之电池电量状态
确定是否连入了互联网如果您未连入互联网,则无需安排基于互联网资源的更新。 下面这段代码展示了如何利用 ConnectivityManager 查询活动网络并确定其是否连入了互联网。ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)转载 2017-02-10 09:25:13 · 1582 阅读 · 0 评论 -
我眼中的Android Framework
原文地址:https://gold.xitu.io/post/586da43b1b69e60062cb8a4f我眼中的Android Framework在开发中我们会遇到各种各样的非常奇怪的问题,有些问题是百思不得骑姐。其实这些问题大都是因为我们不了解安卓内部运行原理,知其所以然才是我们的目的。—前言任何控制类程序都有一个入口,安卓应用程序肯定也是有滴。An转载 2017-03-04 10:36:12 · 433 阅读 · 0 评论 -
ViewPager之PageTransformer接口
前几天看到用到ViewPager的时候,看到它内部有一个接口:PageTransformer,如下: public interface PageTransformer { /** * Apply a property transformation to the given page. * * @param page App原创 2017-06-17 14:40:44 · 376 阅读 · 3 评论 -
android获取各种系统路径的方法
Android获取各种系统路径的方法转载路径:点击打开链接通过Environment获取的Environment.getDataDirectory().getPath() : 获得根目录/data 内部存储路径Environment.getDownloadCacheDirectory().getP转载 2017-08-22 14:36:04 · 744 阅读 · 0 评论 -
Android_5.0定制--------keyCode实现SystemUI导航栏音量+ - 按钮
在Android定制的过程中,客户各种需求。其中在有客户要求在SystemUI的导航栏上添加音量 + - 的按钮,实现快捷调节音量。之前实现是通过给添加到导航栏的按钮添加点击事件,然后调用AudioManager的接口去调节系统的音量。其实实现起来很简单,通过KeyButtonView类中系统定义的一个属性:keyCode,如下布局代码是导航栏的布局:<!--/* apps/commo原创 2016-09-21 22:08:14 · 2830 阅读 · 0 评论