我曾走过的Android之路(Phone)
文章平均质量分 78
Android相关笔记
高桐@BILL
校园到职场,做过室内设计;WEB前后端,APP,嵌入式,LinuxAndroid,ChromiumOS,YunOS,智舱OS等开发。
行业遍及互联网,手机,IOT,汽车。
合作品牌如华为,中兴,OV,小米,三星,谷歌,联想,诺基亚,魅族,上汽,大众,腾讯,百度,网易,LG、HTC,沃达丰,AT&T,中移动,中国电信。
职业规划为操作系统方向,涉及不同框架、方案架构设计开发,可维可测,全维度的工程化;
目前主要涉及Android产品从App、FWK、HAL、Kernel、QNX全链路的垂直工程化,以及跨域产/研/测/项目/互联网产品的横向工程化;
展开
-
遇见未来 . 共码未来
来吧,CODE FOR BETTER,FOR BETTER FUTURE,FOR BETTER ___。原创 2022-09-23 00:01:04 · 1639 阅读 · 0 评论 -
【GTS】com.google.android.stagedinstall.gts.host.StagedInstallTest#testSamegradeSystemTzdataApe Fail问题
com.google.android.stagedinstall.gts.host.StagedInstallTest#testSamegradeSystemTzdataApe Fail问题原创 2022-09-17 11:05:34 · 1581 阅读 · 0 评论 -
【CTS】测试工具跑测的过程中没有抓取包含预期打印的log
测试工具跑测的过程中没有抓取包含预期打印的log原创 2022-09-17 11:02:34 · 2011 阅读 · 0 评论 -
【常驻进程内存优化】开机5分钟后常驻进程(Persistent)占用内存大小≤xxxMB,不达标
常驻进程内存优化原创 2022-09-17 10:53:25 · 809 阅读 · 0 评论 -
内存分析总结
这里是之前手机项目的内存分析总结,当前先简单介绍内存debug需要获取的数据,其中一些数据需要dev/user或eng版本取得root权限才可以拿到。原创 2022-09-17 10:48:08 · 1061 阅读 · 0 评论 -
下载Android 源代码树的三种方式
下载Android 源代码树的三种方式原创 2022-05-03 23:00:34 · 1795 阅读 · 0 评论 -
解决Android源码下载“fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle”
root@DESKTOP-MTL291U:~/workspace/android# repo init -u https://android.googlesource.com/platform/manifestDownloading Repo source from https://gerrit.googlesource.com/git-repofatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundlefatal: e原创 2022-04-22 23:52:13 · 4640 阅读 · 0 评论 -
ss下,解决ncurl: (7) Failed to connect to android.googlesource.com port 443: Connection refused
一、问题描述在repo sync下载android源码的时候,出现ncurl: (7) Failed to connect to android.googlesource.com port 443: Connection refused二、问题分析在AOSP官方网站,我们了解到,这种情况下有可能是网络原因导致的访问被拒绝。因此我们参考下官网解决方案,如下:下载源代码 | Android 开源项目 | Android Open Source Projec...原创 2022-03-25 14:26:05 · 5632 阅读 · 2 评论 -
Android下打印堆栈的两种方法
1 for(StackTraceElement i:Thread.currentThread().getStackTrace()){ System.out.println(i);原创 2014-05-29 10:31:37 · 4927 阅读 · 0 评论 -
深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(二,发送彩信<1>)
选择音频,添加附件成功后,返回ComposeMessage,编辑彩信界面,这里我们继续输入文本内容:第一步,处理附件:选择附件后,处理添加的附件; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (LogTag.VE原创 2014-06-09 11:25:16 · 2921 阅读 · 0 评论 -
分析:新建短信,当我们接受人RecipientsEditor中输入+86的时候,系统会自动在+86后加入空格
我们可以认为这是一个很人性的格式化操作,在ComposeMessageActivity中系统在调用initRecipientsEditor()方法对联系人进行初始化的时候调用了 PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(this, mRecipientsEditor);我们通过对代码进行追踪发现,最终调用了Framework中原创 2014-06-12 14:00:40 · 4091 阅读 · 0 评论 -
解决新建短信时,输入“+86”,然后输入联系人名字“1”,按删除键之后,联系人变为“1”,删除操作为达到预期结果
1.保存一个“+8618621058121”号码的联系人"Jane"2.保存一个号码是“42266888”的联系人“1”3.信息-新建信息-在联系人输入框中输入“+86”-输入“1”-点击删除按钮【测试结果】联系人变为1【预期结果】联系人应为"Jane"与问题相关的类为Mms下的ComposeMessageActivity,相关控件为在initRecipientsE原创 2014-06-07 11:19:21 · 8758 阅读 · 0 评论 -
深度分析:Android中Mms设置页面更改短信中心号码流程
相关控件初始化方法:showSmscPref private void showSmscPref() { int count = MSimTelephonyManager.getDefault().getPhoneCount(); boolean airplaneModeOn = Settings.System.getInt(getContentRes原创 2014-06-11 16:25:54 · 4358 阅读 · 0 评论 -
Android Mms之:深入MMS支持
Composing and editingMMS在Android Mms应用里面的具体实现形式,或数据结构是SlideshowModel,它是一个每个节点为SlideModel的ArrayList,SlideModel是一个Model的List,也就是它可以接收任何Model的子类,Audio,Video,Image和Text都可以放到SlideModel上面。SlideModel主要用于管理转载 2014-06-07 17:21:56 · 1549 阅读 · 0 评论 -
彩信的在android里是如何存储的 Android MMS模块数据存取
数据表MMS模块总共包含17张表:addr、android_metadata、attachments、canonical_addresses、drm、part、pdu、pending_msgs、rate、raw、sms、sr_pending、threads、words、words_content、words_segdir、words_segments。其中,pending_msgs表用于存储待转载 2014-06-11 09:52:01 · 4715 阅读 · 0 评论 -
用Meta工具查看IMEI和IMEISV保存的位置
1.首先我们先来使用Meta工具查看IMEI保存的位置我们打开meta工具,找到NVRAM_EF_IMEI_IMEISV_LID,如图:2.我们打开meta工具找到System related LID,找到NVRAM_EF_SYS_CACHE_OCTET_LID下第十个字节,如图:(这里我们需注意的是IMEI SVN并不是和IMEI保存在一起,而是分开存放在NVRAM_EF原创 2015-03-16 15:03:57 · 7471 阅读 · 0 评论 -
解决在转发一条内容为满的彩信,删除主题FWD,发送的时候提示转化为短信。
问题描述:1.长按一条输入内容为满的彩信,选择转发2.输入联系人-删除主题FWD-发送测试结果为:提示正转化为短信(见附件)预期结果为:不应该有提示,应该还是彩信测试结果图为:根据提示的Toast内容“Converting to text message...”进行代码最终进行代码定位到ComposeMessageActivity类的sh原创 2014-06-04 11:00:36 · 3407 阅读 · 0 评论 -
解决:短信添加录音附件,录音,没有录音时间限制,超出彩信最大限制也正常录音
【测试步骤】1.短信添加录音附件,录音【测试结果】没有录音时间限制,超出彩信最大限制也正常录音【预期结果】应该有录音时间限制原创 2014-06-06 15:12:00 · 3456 阅读 · 0 评论 -
解决Android4.3版本下,手机短彩接收中文文件名附件,中文名字的附件无法保存(第二步:解决从从数据库中读取附件文件名,并在长按后保存附件时,中文乱码导致的无法保存附件)
从第一步我们发现,在第一步修改之后,在短彩绘画界面中中文附件名的附件已无法显示,经过打印堆栈我们发现还是中文乱码在作祟。下面我们接着进行分析,这次我们从UI层往逻辑处理层进行分析。原创 2014-06-03 19:52:43 · 1956 阅读 · 0 评论 -
实现:编辑短信,按power键锁屏后,再点亮屏幕,进入的还是编辑短信界面,按返回键才会进入解锁界面。
描述:在编辑短信界面按电源键锁屏后,重新按电源键点亮屏幕,并没有进入到锁屏界面而是在编辑短信界面,此时短信界面悬浮与锁屏界面之上,这时按返回键关闭编辑短信界面,回到锁屏界面,是如何实现的呢,只需要在需要实现该功能的界面(Activity)中的onCreate()方法中setContentView()方法之前添加以下代码: // set this flag so this activit原创 2014-06-13 11:18:34 · 2458 阅读 · 2 评论 -
Android 源码阅读之SMS,MMS
现在读彩信,从sendMmsWork开始:com.android.mms.data.WorkingMessage.javasendMmsWorker -> MmsMessageSender.sendMessage(threadId)com.android.mms.transaction.MmsMessageSender.javasendMessage -> mContext.sta转载 2014-06-07 17:18:41 · 1798 阅读 · 0 评论 -
android短彩信附件机制
将一些认识写下来,和大家交流一下,同时也方便自己复习。用户可以通过附件按钮,添加附件。以添加幻灯片为例:如果点击幻灯片,会走如下代码:ComposeMessageActivity.javaprivate void editSlideshow() { // The user wants to edit the slideshow. That requires us to转载 2014-06-07 17:26:56 · 2231 阅读 · 0 评论 -
解决:People下面选择分享可见联系人,选择多个联系人后通过短信分享,短信中只显示一个联系人
问题描述:【操作步骤】:People下导入导出中选择分享可见联系人,选择多个联系人后通过短信分享【测试结果】:短信中只能显示一个联系人【预期结果】:可以显示多个联系人原创 2014-06-07 10:41:15 · 2233 阅读 · 1 评论 -
Android RIL结构分析与移植
介绍本文档对Android RIL部分的内容进行了介绍,其重点放在了Android RIL的原生代码部分。包括四个主题:1.Android RIL框架介绍2.Android RIL与 WindowsMobile RIL3.Android RIL porting4.Android RIL的java框架 在本文档中将Android代码中的重要模块列出进行分析,并给出了相转载 2014-05-29 14:33:39 · 4249 阅读 · 1 评论 -
Android Mms专题之:Mms源码结构
从软件的功能角度来讲,Mms分为对话列表,消息列表,短信编辑,彩信编辑,短信显示,彩信显示和配置。从实现的角度来看,它分为GUI展示层,发送/接收,彩信解析,彩信附件,信息数据等,这些分类对应着源码中的各种包。源码导航Mms的源码的位置在于android/packages/apps/Mms其中Mms/src/com/android/mms里面都是Mms相关的代码,而Mms/sr转载 2014-06-11 09:56:25 · 1998 阅读 · 0 评论 -
解决:彩信,添加了有效联系人和编辑了主题,按返回键,提示信息存为草稿,但实际未储存
【预置条件】新建彩信添加有效联系人及主题【测试步骤】新建彩信添加有效联系人及主题,按返回键【测试结果】提示信息已存为草稿,实际未储存【预期结果】正常存为草稿分析:该Bug是由于清单文件中设置的Activity启动模式引起。原始文件中的启动模式为singleTop:该启动模式为,当跳转的对象是位于栈顶的activity(应该可以理解为用户眼前所看到的activity)时,程序原创 2014-06-10 11:01:01 · 2853 阅读 · 1 评论 -
解决:更改短信中心号码不能及时更新显示
【测试步骤】:1、进入短信界面2、菜单-设置3、修改短信中心号码(Set the SIM's smsc number) 保存【测试结果】:提示保存成功,但是号码没有改变,退出重新进入设置才会看到号码更新【预期结果】:提示保存成功,号码变为修改过的号码相关Activity:通过Logcat中I/ActivityManager( 896):我们可以定位到该类-Messag原创 2014-06-11 16:29:24 · 3878 阅读 · 0 评论 -
Android RIL的java框架
Android RIL的Java部分也被分为了两个模块,RIL模块与Phone模块。其中RIL模块负责进行请求以及相应的处理,它将直接与RIL的原声代码进行通信。而Phone模块则向应用程序开发者提供了一系列的电话功能接口。1.RIL模块结构 在RIL.java中实现了几个类来进行与下层rild的通信。 它实现了如下几个类来完成操作: RILRequest:代表一个命令转载 2014-05-29 14:45:08 · 2270 阅读 · 0 评论 -
解决Android4.3版本下,手机短彩接收中文文件名附件,中文名字的附件无法保存(第一步:解决从网络下载附件后,持久化时中文文件名中文乱码)
问题描述:彩信接收中文文件名的附件,中文乱码的解决。原创 2014-06-03 14:48:36 · 6008 阅读 · 1 评论 -
接收一条音频(系统音频)彩信,点菜单键选择View slideshow,不能播放,提示是否导入vCard
【前提条件】:【操作步骤】:接收一条音频(系统音频,格式为ogg),点菜单键选择View slideshow【测试结果】:不能播放,提示是否导入vCard【预期结果】:可以播放【备注】:附log 接收带图片、ogg格式音频 、视频幻灯片时也不能播放,提示是否导入vCard经过分析和反复测试发现,该问题是由于电信运营商引起,该问题为移动发往本机联通网络,接收类型为applica原创 2014-06-12 17:36:09 · 2914 阅读 · 1 评论 -
Android中检测字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(一)
package com.android.filebrowser; import java.io.*; import java.net.*; public class FileEncodingDetect { static final int GB2312 = 0; static final int ASCII = 1; static fi原创 2014-06-03 13:59:36 · 7361 阅读 · 0 评论 -
深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<2,下载彩信>)
彩信的接收: android的彩信接收应用层部分从PushReceiver类开始。当onReceive被调用后,让屏幕亮5秒( wl.acquire(5000);),然后创建一个ReceivePushTask并使用它的execute方法。ReceivePushTask(内部类)是一个AsyncTask,实现了doInBackground()方法。根据消息类型做出原创 2014-06-11 10:31:22 · 2736 阅读 · 0 评论 -
开启飞行模式,进入信息,再关闭飞行模式,进入信息设置查看短信息中心号码,有时短信息中心号码显示无。
/* * Copyright (C) 2007-2008 Esmertec AG. * Copyright (C) 2007-2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this原创 2014-06-11 13:56:54 · 2983 阅读 · 0 评论 -
android源码追踪学习 RecipientsEditor
RecipientsEditor 新建短信时输入收接者的editor,[java] view plaincopypublic class RecipientsEditor extends MultiAutoCompleteTextView { private int mLongPressedPosition = -1; private final R转载 2014-06-04 17:09:27 · 2350 阅读 · 0 评论 -
Android中Parcel的分析以及使用
简单点来说:Parcel就是一个存放读取数据的容器,Android系统中的binder进程间通信(IPC)就使用了Parcel类来进行客户端与服务端数据的交互,而且AIDL的数据也是通过Parcel来交互的。在Java空间和C++都实现了Parcel,由于它在C/C++中,直接使用了内存来读取数据,因此,它更有效率。分析Binder机制中的客户端与服务器端进行实际操作ontransac转载 2014-06-11 15:32:41 · 940 阅读 · 0 评论 -
深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(一,添加附件)
因为工作需要,再加上个人爱好,经过分析整理出短彩应用中从发送至收到附件为音频的彩信的下载,预览,播放整个流程,给大家一起分享。第一步,添加附件:ComposeMessageActivity类下,addAttachement();private void addAttachment(int type, boolean replace) { // Calculate th原创 2014-06-07 16:51:50 · 2657 阅读 · 0 评论 -
mms:源码浅析
程序启动程序的入口:ConversationList.java,对应主页中短信的快捷方式。由此进入短信列表模块。短信列表模块该模块的展示是由ConversationList.java类实现的,该类继承自ListActivity,以列表的形式展示所有短信记录。模块启动的onCreate()方法中初始化listview的数据源mListAdapter与actionbar转载 2014-06-11 09:35:36 · 4405 阅读 · 0 评论 -
深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(二,发送彩信<2>)
由于前一篇已经介绍了启动TransactionService之前的主要内容,本篇主要介绍TransactionService处理彩信业务的主要逻辑流程。TransactionService,与短信的SmsReceiverService类似,是负责处理彩信的服务,可以发送,接收等。对于TransactionService来讲,所有的需要处理的流程,无论是发送还是接收,都是一个Transactio原创 2014-06-09 15:18:30 · 2395 阅读 · 0 评论 -
Android2.1消息应用(Messaging)
我想首先应该从AndroidManifest.xml文件开始,该文件是Android应用(APK)的打包清单,其中提供了关于这个应用程序的基本信息,如名称(application/@label),图标(application/@icon),等常量信息,但该文件最重要的功能仍然是:向Android系统声明应用程序所包含的组件,包括Activity、Service、Receiver和ContentPr转载 2014-06-07 17:29:12 · 1139 阅读 · 0 评论 -
深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<1,接收短信>)
在Android中,彩信的接收分为两部分。彩信通知通过短信的方式接收。彩信数据的下载在应用层中处理。接收短信(!前提是发送彩信而不是短信):调用 Ril.java类中内部类RILReceiver的run()方法,代码如下《TAG 1-1》: public void run() { int retryCount = 0;原创 2014-06-11 09:41:46 · 2100 阅读 · 0 评论