博 文
====================================================================== mReceiver = new RILReceiver() RILReceiver对像的 run()中 InputStream is = mSocket.getInputStream(); LocalSocket ============================================================================================================================================================GsmSimCard.java (frameworks\base\telephony\java\com\android\internal\telephony\gsm)public void handleMessage(Message msg)判断 msg.whatcase EVENT_SIM_READY:phone.mCM.getSimStatus(obtainMessage(EVENT_GET_SIM_STATUS_DONE));case EVENT_SIM_LOCKED_OR_ABSENT:phone.mCM.getSimStatus(obtainMessage(EVENT_GET_SIM_STATUS_DONE));case EVENT_PINPUK_DONE:// a PIN/PUK/PIN2/PUK2/Network Personalizationphone.mCM.getSimStatus(obtainMessage(EVENT_REPOLL_STATUS_DONE, ar.userObj));GsmSimCard(GSMPhone phone)phone.mCM.registerForSIMReady(this, EVENT_SIM_READY, null); updateStateProperty(); GsmSimCard.java (frameworks\base\telephony\java\com\android\internal\telephony\gsm) ServiceStateTracker.java (frameworks\base\telephony\java\com\android\internal\telephony\gsm)SIMRecords.java (frameworks\base\telephony\java\com\android\internal\telephony\gsm)public abstract class BaseCommands implements CommandsInterfaceBaseCommands 类实现了 CommandsInterface接口public ...
Android IPC 通讯机制源码分析 一(转载)
Android IPC 通讯机制源码分析----Albertchen
Binder通信简介: Linux系统中进程间通信的方式有:socket, named pipe,message queque, signal,share memory。Java系统中的进程间通信方式有socket, named pipe等,android应用程序理所当然可以应用JAVA的IPC机制实现进程间的通信,但我查看android的源码,在同一终端上的应用软件的通信几乎看不到这些IPC通信方式,取而代之的是Binder通信。Google为什么要采用这种方式呢,这取决于Binder通信方式的高效率。 Binder通信是通过linux的binder driver来实现的,Binder通信操作类似线程迁移(thread migration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回。Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。 Android中的Binder通信是基于Service与Client的,所有需要IBinder通信的进程都必须创建一个IBinder接口,系统中有一个进程管理所有的system service,Android不允许用户添加非授权的System service,当然现在源码开发了,我们可以修改一些代码来实现添加底层system Service的目的。对用户程序来说,我们也要创建server,或者Service用于进程间通信,这里有一个 ActivityManagerService管理JAVA应用层所有的service创建与连接(connect),disconnect,所有的 Activity也是通过这个service来启动,加载的。ActivityManagerServ...
Client A与Binder kernel通信:kernel\drivers\android\Binder.c)static int binder_open(struct inode *nodp, struct file *filp){struct binder_proc *proc;
if (binder_debug_mask & BINDER_DEBUG_OPEN_CLOSE) printk(KERN_INFO "binder_open: %d:%d\n", current->group_leader->pid, current->pid);
proc = kzalloc(sizeof(*proc), GFP_KERNEL);if (proc == NULL) return -ENOMEM;get_task_struct(current);proc->tsk = current; //保存打开/dev/binder驱动的当前进程任务数据结构INIT_LIST_HEAD(&proc->todo);init_waitqueue_head(&proc->wait);proc->default_priority = task_nice(current);mutex_lock(&binder_lock);binder_stats.obj_created[BINDER_STAT_PROC]++;hlist_add_head(&proc->proc_node, &binder_procs);proc->pid = current->group_leader->pid;INIT_LIST_HEAD(&proc->delivered_death);filp->private_data = proc;mutex_unlock(&binder_lock);
if (binder_proc_dir_entry_proc) { char strbuf[11]; snprintf(strbuf, sizeof(strbuf), "%u", proc->pid); create_proc_read_entry(strbuf, S_IRUGO, binder_proc_dir_entry_proc, binder_read_proc_proc, proc); //为当前进程创建一个process入口结构信息}return 0;}从这里可以知道每一个打开/dev/binder的...
Layout对于迅速的搭建界面和提高界面在不同分辨率的屏幕上的适应性具有很大的作用。这里简要介绍Android的Layout和研究一下它的实现。
Android有4种Layout:FrameLayout,LinearLayout,TableLayout,RelativeLayout。
放入Layout中进行排布的View的XML属性:4种Layout中Item所共有的XML属性:(1)layout_width(2)layout_height(3)layout_marginLeft(4)layout_marginTop(5)layout_marginRight(6)layout_marginBottom(7)layout_gravity
FrameLayout中的Item就具有这些属性。对于LinearLayout还会有(8)layout_weight
TableLayout的行TableRow是一个横向的(horizontal)的LinearLayout。
RelativeLayout有16个align相关的XML属性。(9)layout_above(10)layout_alignBaseline(11)layout_alignBottom(12)layout_alignLeft(13)layout_alignParentBottom(14)layout_alignParentLeft(15)layout_alignParentRight(16)layout_alignParentTop(17)layout_alignRight(18)layout_alignTop(19)layout_below(20)layout_centerHorizontal(21)layout_centerInParent(22)layout_centerVertical(23)layout_toLeftOf(24)layout_toRightOf
(1)和(2)用来确定放入Layout中的View的宽度和高度:它们的可能取值为fill_parent,wrap_content或者固定的像素值。(3)(4)(5)(6)是放入Layout中的View期望它能够和Layout的边界或者其他View之间能够相距一段距离。(7)用来确定View在Layout中的停靠位置。(8)用于在LinearLayout中把所有子View排布之后的剩余空间按照它们的layout_weight分配给各个拥有...
最具实力的对手 暂无交锋的战争
“在全球,高通公司平均每秒售出36颗芯片。”美国高通(Qualcomm)公司董事长兼CEO保罗•雅各布在6月初于《华尔街日报》主办的D8大会上公布说。
这一数字显示出高通作为无线领域全球最大芯片提供商的实力。根据全球调研公司Strategy Analytics的统计,在无线基带领域,高通到2009年已经拥有全球近40%市场份额,是第二名联发科(MediaTek,简称MTK)的两倍。
当然,联发科依然是无线芯片领域的草莽英雄。2009年,它的营收、获利又双双创下新高,是全球前十大IC设计公司中极少数营收增长的公司,其全球排名也从第五名晋升至第四名(根据iSuppli),并首度跻身全球前十五大半导体公司(根据IC Insights)。6月15日,联发科技董事长蔡明介在股东会上表示“下半年景气不错”,目前中国与其他新兴手机市场的需求颇佳,不少促进手机消费的正面因素出现,“对联发科技未来的运营将有不小的帮助”。
正是这两家芯片设计公司,可能会持续成为主宰未来无线芯片市场的主力。在无线终端的智能化演进过程中,具有计算处理优势的芯片企业借机进入,传统的无线通信芯片企业调整战略,其中不乏兼并重组强强联手,但《中国电子报》认为,无论过程如何,最终能在移动互联网时代的终端芯片领域站稳脚跟的,很可能只有两类公司:一类是凭借高精尖技术引领市场的企业,一类是有着高度集成能力在性能价格比上保持绝佳平衡的企业。而高通和联发科正好是目前能看到的这两类公司的代表。
从现在看来,高通和联发科尚不在一个竞争层级。高通是3G芯片的最大...
展讯通讯(NASDAQ: SPRD) 昨收于9.77 US$, 市值4.39 亿US$.
很多人问我, 展讯通讯(SPRD)到底值多少钱?
根据财报, SPRD 2010 上半年约.1.2亿US$, 全年2.6-3.0 亿US$. 从美股(半导体)
P/E, P/S 来看, 12-15 US$ 是个靠谱的估值, 对应市值 6-7亿US$, 这是因为MARGIN(~45%?)
较低, 且毛利率空间有限.
借问展讯通讯(SPRD)较长期发展, 在大陆市场占有率现在相信有20%. 按照
趋势, 30%占有率应是其应有地位, 明年 3-4亿US$ revenue新增应来自TD新品和
海外市场.
从其CEO来看, 前任 CEO有毛氏色彩, 富有理想主义和爱国主义. 以做中国标准
(AVS, TD, CMMB)为己任. 现任 CEO是邓氏风格, 是大棒和萝卜的信奉者. 其企业文化
是多加班, 多发奖金, 直到良性循环.
展讯通讯(SPRD) 有无可能上20-30 US$, 这取决与revenue能到4-5 亿US$. 之后应会
多元化发展, 不仅仅做基带了. 凯恩斯说过“长期 我们都会死去', 预测将来是冒险并快乐的.
庄家消息放脑后, 长线在心中.
伴随Google愈来愈深入地进入到苹果和微软的地盘之内,更加全面的冲突和竞争已经是山雨欲来,而我们未来十年的线上体验便将由这一冲突决定。
看上去一切似乎还正常。当乔布斯(Steve Jobs)走上舞台,展示苹果iPhone的4G版本,他依然是黑毛衣配牛仔裤的标准装扮,依然受到了观众的狂热欢迎。
然而实际上,至少有一件事情已经发生了变化。自iPhone真正成为手持设备领导者的2007年开始,苹果这是真正第一次面临实质性的竞争压力。
Google以自己的Android操作系统成功地进入了移动设备市场,获得了良好的反响。大约十八个月之前,第一部基于这一操作系统软件的智能电话问世,而十八个月之后,这一互联网巨头已经成为了网络触摸屏设备领域的强有力的挑战者——不必说,这一领域原来的王者正是苹果。
戏剧已经演出到了第二幕。苹果的iPad四月下旬上市,自那时至今,这种大屏幕设备已经售出了约200万部,而Google等追赶者的脚步也变得愈来愈急迫了。他们的新软件平台还可以和电视对接,Google上个月就发布了新版本的Android,可以从互联网接入电视信号。在这种情况之下,苹果也感受到了巨大的压力,相信他们很快就会对自己的产品进行改进,强化互联网电视技术。
两家公司原本是擅长不同的技术,企业文化也截然不同,但是在时代的变迁中却鬼使神差地走到了彼此的对立面。这一冲突将决定科技行业未来十年的走向,决定全球网民未来十年的线上体验。来源:(http://blog.sina.com.cn/s/blog_60ae0b4d0100jna0.html?tj...
MStar的第三步棋则是在目前MTK因各种原因得罪了不少中小客户甚至某些大客户的时候,MStar以亲善大使的形象出现,给这些客户以非常好的原厂支持。“MStar客户支持力度非常大,芯片比较便宜,license门槛又低。并且采用新的平台,可以带来差异化,带来新的机遇。”MStar的客户这样评论道。
所以,MStar的起量首先定是从这些中型客户处产生。“其实,我们在一些中型客户处已开始大量走货了,只不过外面的人看不到。”MStar的那个高管对我说,他暗示目前的手机芯片出货量已超过1KK。接下来,就要看天宇、闻泰等巨型设计公司了,虽然这两家公司都已在小批量走货,但是是否有信心对MStar平台大量出货,可能还要看那些中小客户的反馈情况。据传,MStar的目标是七月份冲到3KK/月,到2010年年底时,达到5KK/月的出货量。
据接近MStar公司的人表示,MStar公司员工斗志昂杨,声称要在1-2年内从MTK手里拿下五成份额,最晚三年内可以实现这个目标。显然,目前手机业务已成为MStar战略的重中之重。据这个高管表示,目前MStar中国区经理林永育亲自挂帅管理手机业务,这个人的能力非同一般,他是MStar中国区第一个员工,2003年加入MStar,几年时间他一手将MStar中国变成如今这样一个成功的帝国。“我们的手机芯片就是由他领导定义的,完全根据中国市场的需求。”这个高管说道,“很多客户都是他亲自在跟。”
其实,为了全面布局手机市场,MStar两年多前就开始准备了:收购著名的GSM/EDGE模块厂商Wavecom获得在GSM领域的重要IP;从摩托罗拉手中收购协议栈厂商TTPCom获得了GSM/WCDMA...
内部爆料,MOTO的“iPhone之哥”在国内不出了
前几天和一在MOTO上班的哥们儿吃饭,酒过三巡之后他无意间爆出了个惊人的消息,行货版里程碑(Milestone),也就是之前好多媒体报道过的XT702可能不会上市了!至少近期是不会出现在大陆的行货市场中了,至于什么时候能上市还不得而知。
不过关于这个消息的原因,我的哥们并没有多说,只是提到了一个比较重要的原因,就是Miilestone在美国销售的实在太好了,为了保证美国的正常供货,所以在中国的铺货计划受到了很大的影响,甚至可能会导致Milestone的行货版本XT702上市计划搁浅,至于其他原因却没有在多说。
要知道这款拥有超高分辨率的大屏幕智能机Milestone可是本人灰常喜欢的手机,一直都在网上关注它的信息,尤其是听说这款手机的行货版XT702还会带有WiFi无线上网功能,不是所谓的阉割版的产品,这就更加坚定了在XT702上市时就入手一部的打算,所以这个噩耗对我来说无异于晴天霹雳!
前些日子就看到过一篇博文,也是说MOTO的Milestone不在中国大陆上市了,而且还猜测了几个可能,起初我还只是一笑而过,现在不得不相信了。下面我引用一下之前那篇文章里关于Milestone不上市的猜测理由,以悼念一下我沉痛的心情。~
如果XT702真的不上市了的话,那么我难道真的要去买一部水货Milestone吗?
注:iPhone之哥就是iPhone杀手的意思,Milestone的原型机Droid在美国上市两个月的销量即突破百万大关,100天内的销量更是超越了iPhone 3GS,被成为“iPhonekiller”。
以下内容均是...
由于今年初市场双双表现抢眼,联发科与高通同时调高了下一季度的财报预测。在中国3G市场大规模放量前夕,联发科与高通的市场争夺大战已一触即发。 虽然,联发科与高通之间的竞争局面现在还未形成,但双方的遭遇战迟早会来。 近日,3G手机芯片大厂高通公司宣布调升了2010年会计年度第二季(1~3月)的财报预测,称其手机芯片出货量将上升至9200~9300万套。而2G手机芯片大厂联发科则传出第一季度(1~3月)营收有超水平表现,3月份营收达到新台币112亿元,高于105亿元的预期,首季合并营收有望达到326亿元,年增长率为37%。 联发科1月份的手机芯片出货量高达5000万套,2月份的出货量也高达3300万套,3月份的出货量大约在4500万套左右,预估第一季度联发科芯片出货量将接近1.3亿套,将创下历年首季新高。 就在高通与联发科迎来了各自2010年度的开门红时,双方的正面竞争日益迫近。一个无可争议的事实是,手机的2G时代行将结束,无论是成熟市场还是新兴市场,3G都已经到了放量增长的前夜。因此,2G、2.75G称霸全球的联发科,势必要上探3G市场,联发科与高通之间的客户争夺战届时就会上演。 瑞银证券半导体分析师程正桦认为,对联发科而言,2010年恐怕会是2G手机芯片呈现强劲成长的最后一年,如果不能尽快推出3G与智能型手机芯片,联发科的后续股价恐怕将缺乏上涨动力。
高通围堵联发科 不过,至少目前双方还处于静待局势变化的沉默期。 4月...