<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>科技艺术搜罗网</title>
	<atom:link href="http://artskill.cn/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://artskill.cn/blog</link>
	<description>美好的生活需要用心记录</description>
	<lastBuildDate>Mon, 14 Mar 2011 08:33:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>高人面试34次后的求职经验</title>
		<link>http://artskill.cn/blog/?p=493</link>
		<comments>http://artskill.cn/blog/?p=493#comments</comments>
		<pubDate>Mon, 14 Mar 2011 08:32:11 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=493</guid>
		<description><![CDATA[高人毕业4年，上海二流本科，前不久突发奇想，从毕业后面世过的每一个企业，竟然有34家之多！冬去春来，各大高校的学弟学妹们也要开始找工作了，希望能给你们一些小小的经验。 1、穿着不要太随意，但也不要太庄重，干净、整洁，头发要梳理好，西装一般没什么必要，上班需要穿西装的都是皮包公司。所以同学们没必要为了面试而特地去买一件西装。女生可以穿正装，感觉比较成熟。 2、如果一个公司，办公桌上只有电话没有电脑，100％是皮包公司。 3、如果面试的时候，面试官没有马上录用你，你回去后一天内没有消息，那就说明面试失败。一般面试官都会说，回去等，一周或者两周内给你消息，其实这都是假的。如果对方对你感兴趣，一般来说，都会当场拍板。 4、有些公司，美其名曰“某某贸易公司”，多半是直销公司，还有一些直销化妆品的公司，会起名叫“某某食品公司”，如果名字听上去很随意，网上有找不到信息，99％是皮包公司。 5、在网上投递简历的时候，如果一个岗位招聘人数很多（5个甚至10个，20个），99％是皮包公司（营业员除外）。如果一个岗位对学历没有要求，工作性质谈得很少，但是薪水却还过得去（2000以上），那么99％是皮包公司。 6、社会上的招聘会一般没必要去，除非是大学自己举办的。社会上的招聘会一般都是垃圾岗位，而且面向外地人比较多。比如中山西路的固定招聘会，上海体育馆的固定招聘会，基本上没有好的岗位。现在网络发达了，公司没必要到现场去招人。 7、面试时的薪水要求，其实自己没必要有什么心理价位，因为对方早就定好了。不以你的意志为转移。如果面试官问你，你就说由公司决定就行了。 8、保险公司会改头换面出现，比如某某金融公司，100％是让你推销保险，不用搭理，电话打来，只要说某某金融公司的，我都直接挂断。还有叫信托投资公司的，也直接挂断。 9、有一种公司叫投资咨询公司，现在上海基本上已经消灭了，但有时候还会借尸还魂，同学们要注意。这种公司以卖原始股为诱饵，告诉客户今后在美国上市会利润翻倍，其实是诈骗。根本无法交易，即使能交易，中国人也无法到美国市场进行交易。股份倒是真的，但不能分红。同学们遇到这种企业，直接PK它。 10、对于本科生的学弟学妹，我建议你们面试宁少勿滥，要到真正有希望，能学到东西的公司企业去。要勤于浏览招聘网站，但投递简历不要太多。 11、英语这个东西，当你遇到它了，你才知道它有用。但我还是希望同学们能在最后半年拼一个六级出来（如果你现在四级都没过，那基本上无视）。 12、货代是一个很容易找到工作的行业，薪水一般，对专业没有要求（只要懂一点三脚猫英语），一般都是高职、甚至中专生去的地方。而且低素质的女生比较多，万般无奈建议大家不要去。这个行业非常繁忙，我一个同学做过，连吃饭的时间都没有。工作很机械化，人会发疯。 13、储备干部，基本上是垃圾。超市的储备干部，基本上就是理货员。 14、凡是要先付钱的，当场就走人。 15、行业不要经常变换，这个容易伤筋动骨。所以一开始的选择很重要。 16、如果你有贵人相助，那当然最好。如果你没有，也不用灰心丧气，看看我，一个面试过34家公司的男人，不是也照样挺过来了嘛。人经历一些事情，可以学到一些东西。走一些弯路，可以看到别样风景。总之，同学们要相信自己。]]></description>
			<content:encoded><![CDATA[<p>高人毕业4年，上海二流本科，前不久突发奇想，从毕业后面世过的每一个企业，竟然有34家之多！冬去春来，各大高校的学弟学妹们也要开始找工作了，希望能给你们一些小小的经验。</p>
<p>1、穿着不要太随意，但也不要太庄重，干净、整洁，头发要梳理好，西装一般没什么必要，上班需要穿西装的都是皮包公司。所以同学们没必要为了面试而特地去买一件西装。女生可以穿正装，感觉比较成熟。</p>
<p>2、如果一个公司，办公桌上只有电话没有电脑，100％是皮包公司。</p>
<p>3、如果面试的时候，面试官没有马上录用你，你回去后一天内没有消息，那就说明面试失败。一般面试官都会说，回去等，一周或者两周内给你消息，其实这都是假的。如果对方对你感兴趣，一般来说，都会当场拍板。</p>
<p>4、有些公司，美其名曰“某某贸易公司”，多半是直销公司，还有一些直销化妆品的公司，会起名叫“某某食品公司”，如果名字听上去很随意，网上有找不到信息，99％是皮包公司。</p>
<p>5、在网上投递简历的时候，如果一个岗位招聘人数很多（5个甚至10个，20个），99％是皮包公司（营业员除外）。如果一个岗位对学历没有要求，工作性质谈得很少，但是薪水却还过得去（2000以上），那么99％是皮包公司。</p>
<p>6、社会上的招聘会一般没必要去，除非是大学自己举办的。社会上的招聘会一般都是垃圾岗位，而且面向外地人比较多。比如中山西路的固定招聘会，上海体育馆的固定招聘会，基本上没有好的岗位。现在网络发达了，公司没必要到现场去招人。</p>
<p>7、面试时的薪水要求，其实自己没必要有什么心理价位，因为对方早就定好了。不以你的意志为转移。如果面试官问你，你就说由公司决定就行了。</p>
<p>8、保险公司会改头换面出现，比如某某金融公司，100％是让你推销保险，不用搭理，电话打来，只要说某某金融公司的，我都直接挂断。还有叫信托投资公司的，也直接挂断。</p>
<p>9、有一种公司叫投资咨询公司，现在上海基本上已经消灭了，但有时候还会借尸还魂，同学们要注意。这种公司以卖原始股为诱饵，告诉客户今后在美国上市会利润翻倍，其实是诈骗。根本无法交易，即使能交易，中国人也无法到美国市场进行交易。股份倒是真的，但不能分红。同学们遇到这种企业，直接PK它。</p>
<p>10、对于本科生的学弟学妹，我建议你们面试宁少勿滥，要到真正有希望，能学到东西的公司企业去。要勤于浏览招聘网站，但投递简历不要太多。</p>
<p>11、英语这个东西，当你遇到它了，你才知道它有用。但我还是希望同学们能在最后半年拼一个六级出来（如果你现在四级都没过，那基本上无视）。<br />
12、货代是一个很容易找到工作的行业，薪水一般，对专业没有要求（只要懂一点三脚猫英语），一般都是高职、甚至中专生去的地方。而且低素质的女生比较多，万般无奈建议大家不要去。这个行业非常繁忙，我一个同学做过，连吃饭的时间都没有。工作很机械化，人会发疯。</p>
<p>13、储备干部，基本上是垃圾。超市的储备干部，基本上就是理货员。</p>
<p>14、凡是要先付钱的，当场就走人。</p>
<p>15、行业不要经常变换，这个容易伤筋动骨。所以一开始的选择很重要。</p>
<p>16、如果你有贵人相助，那当然最好。如果你没有，也不用灰心丧气，看看我，一个面试过34家公司的男人，不是也照样挺过来了嘛。人经历一些事情，可以学到一些东西。走一些弯路，可以看到别样风景。总之，同学们要相信自己。</p>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=493</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenGL ES学习阶段性总结</title>
		<link>http://artskill.cn/blog/?p=489</link>
		<comments>http://artskill.cn/blog/?p=489#comments</comments>
		<pubDate>Fri, 31 Dec 2010 10:21:46 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=489</guid>
		<description><![CDATA[1. 要画图，得设定画的是什么图形，是点，直线还是三角形，通过gl.glDrawArrays( p1, 0, p2);中的p1来设定。可用的参数有GL10.GL_POINTS, GL10.GL_LINES, GL10.GL_TRIANGLES, GL10.GL_TRANGLES_FAN, GL10.GL_TRIANGLE_STRIP&#8230; 2. 知道了形状，要设定数据源，也就是要画的点有哪些。通过gl.glVertexPointer(3, GL10.GL_FIXED, 0, vertexBuff );来设定。vertexBuff就是你想要画的哪些点。它表示为一个一维矩阵，但实际上根据你要画的形状来分成多个部分的。比如你想一个三角形。那么这个矩阵就可以表示为{-1，0，1，0，0，2}，{-1，0}表示第一个点，{1，0}表示第二个点，{0，2}表示第三个点。如果之后还有的话，也应该是6*N个数字，以确定更多的三角形坐标。 3. 要是gl.glDrawArrays()方法起作用，之前得调用gl.glEnableClientState(int p1); p1表示要激活的数组的种类，比如要gl.glVertexPointer()设置vertex,那么必须先调用gl.glEnableClientState(GL10.GL_VERTEX_ARRAY）;要用数组设置颜色，先调用gl.glEnableClientState( GL10.GL_COLOR_ARRAY ); 4. 画三维图像时，要激活深度测试。gl.glEnable( GL10.GL_DEPTH_TEST ); 5. 使用texture之前必须先调用gl.glEnable( GL10.GL_TEXTURE_2D );同时调用gl.glEnableClientState( GL10.GL_TEXTURE_COORD_ARRAY );来激活texture数组画图。 6. glLoadIdentity():另当前绘图坐标系从新回到世界坐标系的位置，另他们重合。 glTranslatef(x,y,z):使绘图坐标系相对世界坐标系沿x,y,z轴移动x,y,z个单位。 glVertex3f(x,y,z):在当前绘图坐标系绘制一个点 glColor3f(r,g,b):设置以后绘图函数的绘图颜色，如果没有再次碰到glColor3f(),以后任何绘图函数绘制出的图形颜色都是这个颜色。r,g,b的范围从0.0-1.0。r-蓝色，g-绿色，b-蓝色，色彩是这三种颜色分量的混合，比如glColor3f(1.0,1.0,0.0)是黄色，glColor3f(1.0,0.0,0.0)是红色。 glRotatef(angle,x,y,z):和glTranslatef()属于一类函数，glTranslatef()是平移，glRotatef是旋转，就是使当前绘图坐标系绕世界坐标系的x,y,z旋转angle个角度，x,y,z的值非0既1，比如glRotatef(30,1.0f,0.0f,0.0f)就是绕x轴旋转30度，glRotatef(30,1.0f,1.0f,0.0f)就是绕x,y的夹角线旋转30度。 7. 用glRotatef能是对象本身围绕一个向量旋转，我们也可以改变观测镜头本身，参考点和向上向量来改变所看到的对象，能产生glRotatef同样的旋转效果。 GLU.gluLookAt（gl, &#8230; <a href="http://artskill.cn/blog/?p=489">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>1. 要画图，得设定画的是什么图形，是点，直线还是三角形，通过gl.glDrawArrays( p1, 0, p2);中的p1来设定。可用的参数有GL10.GL_POINTS, GL10.GL_LINES, GL10.GL_TRIANGLES, GL10.GL_TRANGLES_FAN, GL10.GL_TRIANGLE_STRIP&#8230;</p>
<p>2. 知道了形状，要设定数据源，也就是要画的点有哪些。通过gl.glVertexPointer(3, GL10.GL_FIXED, 0, vertexBuff );来设定。vertexBuff就是你想要画的哪些点。它表示为一个一维矩阵，但实际上根据你要画的形状来分成多个部分的。比如你想一个三角形。那么这个矩阵就可以表示为{-1，0，1，0，0，2}，{-1，0}表示第一个点，{1，0}表示第二个点，{0，2}表示第三个点。如果之后还有的话，也应该是6*N个数字，以确定更多的三角形坐标。 <span id="more-489"></span></p>
<p>3. 要是gl.glDrawArrays()方法起作用，之前得调用gl.glEnableClientState(int p1); p1表示要激活的数组的种类，比如要gl.glVertexPointer()设置vertex,那么必须先调用gl.glEnableClientState(GL10.GL_VERTEX_ARRAY）;要用数组设置颜色，先调用gl.glEnableClientState( GL10.GL_COLOR_ARRAY );</p>
<p>4. 画三维图像时，要激活深度测试。gl.glEnable( GL10.GL_DEPTH_TEST );</p>
<p>5. 使用texture之前必须先调用gl.glEnable( GL10.GL_TEXTURE_2D );同时调用gl.glEnableClientState( GL10.GL_TEXTURE_COORD_ARRAY );来激活texture数组画图。<br />
6. glLoadIdentity():另当前绘图坐标系从新回到世界坐标系的位置，另他们重合。<br />
glTranslatef(x,y,z):使绘图坐标系相对世界坐标系沿x,y,z轴移动x,y,z个单位。<br />
glVertex3f(x,y,z):在当前绘图坐标系绘制一个点<br />
glColor3f(r,g,b):设置以后绘图函数的绘图颜色，如果没有再次碰到glColor3f(),以后任何绘图函数绘制出的图形颜色都是这个颜色。r,g,b的范围从0.0-1.0。r-蓝色，g-绿色，b-蓝色，色彩是这三种颜色分量的混合，比如glColor3f(1.0,1.0,0.0)是黄色，glColor3f(1.0,0.0,0.0)是红色。<br />
glRotatef(angle,x,y,z):和glTranslatef()属于一类函数，glTranslatef()是平移，glRotatef是旋转，就是使当前绘图坐标系绕世界坐标系的x,y,z旋转angle个角度，x,y,z的值非0既1，比如glRotatef(30,1.0f,0.0f,0.0f)就是绕x轴旋转30度，glRotatef(30,1.0f,1.0f,0.0f)就是绕x,y的夹角线旋转30度。</p>
<p>7. 用glRotatef能是对象本身围绕一个向量旋转，我们也可以改变观测镜头本身，参考点和向上向量来改变所看到的对象，能产生glRotatef同样的旋转效果。<br />
GLU.gluLookAt（gl,<br />
0.0f, 0.0f, 3.0f,//观测点在屏幕正中向外3.0f单位距离的地方<br />
viewX, 0.0f, 0.0f,	//参考点在屏幕中间水平位置viewX<br />
0.0f, 1.0f, 0.0f );//表示Y轴向上<br />
综合这三个点，表示你这个人的眼睛从屏幕正中向外的3.0单位距离的地方,拿着摄像机瞄准viewX的地方再看，看的时候你的头是向上的（如果设置成1.0f, 0.0f, 0.0f，那么表示你的头得向右歪过来，成水平来看）。</p>
<p><a href="http://seya.javaeye.com/blog/528560">http://seya.javaeye.com/blog/528560</a></p>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=489</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何定制launcher allapps中应用的快捷方式</title>
		<link>http://artskill.cn/blog/?p=485</link>
		<comments>http://artskill.cn/blog/?p=485#comments</comments>
		<pubDate>Tue, 21 Dec 2010 10:54:00 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=485</guid>
		<description><![CDATA[android中,关于Intent相关内容是一整套强大的解耦合机制,跟spring的依赖注射有异曲同工之妙,这里来举几个简单应用的例子. 1\如何让用户不需要,而系统必须有的组件从ui中消失. 比如mid中的phone、mms和contact应用(如上图椭圆标注的),对于没有电话功能的mid来说,让它们出现在ui中是非常扎眼的,对于有完美主义倾向的人来说,永远用不到的东西出现在选单当中,会让用户觉得没有被尊重的感觉,所以,很有必要让它们在背后默默的服务,而不在用户面前碍眼. 解决的办法很简单,进入到对应应用的andoridmunifest.xml文件你会看到这样的代码: &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#60;activity android:name=&#8221;Settings&#8221; android:label=&#8221;@string/settings_label&#8221; android:taskAffinity=&#8221;com.android.settings&#8221; android:clearTaskOnLaunch=&#8221;true&#8221; android:launchMode=&#8221;singleTop&#8221;&#62; &#60;intent-filter&#62; &#60;action android:name=&#8221;android.intent.action.MAIN&#8221; /&#62; &#60;action android:name=&#8221;android.settings.SETTINGS&#8221; /&#62; &#60;category android:name=&#8221;android.intent.category.DEFAULT&#8221; /&#62; &#60;category android:name=&#8221;android.intent.category.LAUNCHER&#8221; /&#62; &#60;/intent-filter&#62; &#60;/activity&#62; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 把红色的这一行拿掉即可. 一个Activity如果拥有&#8220;android.intent.category.LAUNCHER&#8221;这个属性,则表示它属于这个应用为普通用户提供的入口,就像超市为顾客指定的入口一样,用户可以通过应用程序的门进入到应用内部体验.而对程序开发者而言,进入的方式就不限于launcher属性的Activity了,通过intent提供的action,category,class,type都可以匹配到对应的Activity,通过intent调用Activity分为显式调用和隐式调用,显示调用局限于应用内部,而隐式调用则完全是解耦的全局匹配模式.非常之方便. 2\如何像astro一样同一个应用在allappsview里面显示多个快捷方式呢? 同样的,在你需要它显示的Activity里面加上&#60;category android:name=&#8221;android.intent.category.LAUNCHER&#8221; /&#62;即可.则像上图中的方形标注的快捷方式一样,来自同一个应用,但是有自己独立的快捷方式.要修改图片和文字内容也很简单,配置以下紫色的项即可. &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- &#60;activity android:name=&#8221;WirelessSettings&#8221; android:label=&#8221;@string/wireless_networks_settings_title&#8221; android:icon=&#8221;@drawable/ic_launcher_settings&#8221; &#62; &#60;intent-filter&#62; &#8230; <a href="http://artskill.cn/blog/?p=485">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000; font-family: Arial, sans-serif, Helvetica, Tahoma; line-height: 18px; font-size: 12px;"> </span></p>
<p style="padding: 0px; margin: 0px;">android中,关于Intent相关内容是一整套强大的解耦合机制,跟spring的依赖注射有异曲同工之妙,这里来举几个简单应用的例子.</p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;"><img style="border: 0px initial initial;" src="http://dl.javaeye.com/upload/picture/pic/77397/910a98ec-b898-3bdc-b0cd-a66f906ac440.png" alt="" width="475" height="627" /></p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">1\如何让用户不需要,而系统必须有的组件从ui中消失.</p>
<p style="padding: 0px; margin: 0px;">比如mid中的phone、mms和contact应用(如上图椭圆标注的),对于没有电话功能的mid来说,让它们出现在ui中是非常扎眼的,对于有完美主义倾向的人来说,永远用不到的东西出现在选单当中,会让用户觉得没有被尊重的感觉,所以,很有必要让它们在背后默默的服务,而不在用户面前碍眼.<span id="more-485"></span></p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">解决的办法很简单,进入到对应应用的andoridmunifest.xml文件你会看到这样的代码:</p>
<p style="padding: 0px; margin: 0px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p style="padding: 0px; margin: 0px;">&lt;activity android:name=&#8221;Settings&#8221; android:label=&#8221;@string/settings_label&#8221;</p>
<p style="padding: 0px; margin: 0px;">android:taskAffinity=&#8221;com.android.settings&#8221;</p>
<p style="padding: 0px; margin: 0px;">android:clearTaskOnLaunch=&#8221;true&#8221;</p>
<p style="padding: 0px; margin: 0px;">android:launchMode=&#8221;singleTop&#8221;&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;intent-filter&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;action android:name=&#8221;android.intent.action.MAIN&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;action android:name=&#8221;android.settings.SETTINGS&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;category android:name=&#8221;android.intent.category.DEFAULT&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;"><span style="color: #ff0000;">&lt;category android:name=&#8221;android.intent.category.LAUNCHER&#8221; /&gt;</span></p>
<p style="padding: 0px; margin: 0px;">&lt;/intent-filter&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;/activity&gt;</p>
<p style="padding: 0px; margin: 0px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p style="padding: 0px; margin: 0px;">把红色的这一行拿掉即可.</p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">一个Activity如果拥有<span style="color: #ff0000;">&#8220;android.intent.category.LAUNCHER&#8221;</span>这个属性,则表示它属于这个应用为普通用户提供的入口,就像超市为顾客指定的入口一样,用户可以通过应用程序的门进入到应用内部体验.而对程序开发者而言,进入的方式就不限于launcher属性的Activity了,通过intent提供的action,category,class,type都可以匹配到对应的Activity,通过intent调用Activity分为显式调用和隐式调用,显示调用局限于应用内部,而隐式调用则完全是解耦的全局匹配模式.非常之方便.</p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">2\如何像astro一样同一个应用在allappsview里面显示多个快捷方式呢?</p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">同样的,在你需要它显示的Activity里面加上<span style="color: #ff0000;">&lt;category android:name=&#8221;android.intent.category.LAUNCHER&#8221; /&gt;</span>即可.则像上图中的方形标注的快捷方式一样,来自同一个应用,但是有自己独立的快捷方式.要修改图片和文字内容也很简单,配置以下紫色的项即可.</p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">&lt;activity android:name=&#8221;WirelessSettings&#8221;</p>
<p style="padding: 0px; margin: 0px;"><span style="color: #ff00ff;"> android:label=&#8221;@string/wireless_networks_settings_title&#8221;</span></p>
<p style="padding: 0px; margin: 0px;"><span style="color: #ff00ff;"> android:icon=&#8221;@drawable/ic_launcher_settings&#8221;</span></p>
<p style="padding: 0px; margin: 0px;">&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;intent-filter&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;action android:name=&#8221;android.intent.action.MAIN&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;action android:name=&#8221;android.settings.WIRELESS_SETTINGS&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;action android:name=&#8221;android.settings.AIRPLANE_MODE_SETTINGS&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;category android:name=&#8221;android.intent.category.DEFAULT&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;category android:name=&#8221;android.intent.category.LAUNCHER&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;category android:name=&#8221;android.intent.category.VOICE_LAUNCH&#8221; /&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;/intent-filter&gt;</p>
<p style="padding: 0px; margin: 0px;">&lt;/activity&gt;</p>
<p style="padding: 0px; margin: 0px;">
<p style="padding: 0px; margin: 0px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p style="padding: 0px; margin: 0px;"><a href="http://unicorn25.javaeye.com/blog/834300">http://unicorn25.javaeye.com/blog/834300</a></p>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=485</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一些在Android中的小设置</title>
		<link>http://artskill.cn/blog/?p=481</link>
		<comments>http://artskill.cn/blog/?p=481#comments</comments>
		<pubDate>Tue, 21 Dec 2010 10:47:02 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=481</guid>
		<description><![CDATA[1开机图片: android-logo-mask.png android-logo-shine.png 这两个图片一个在上一个在下　　./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/assets/images/android-logo-shine.png ./frameworks/base/core/res/assets/images/android-logo-shine.png 注意:如果源码没有make可以直接更改frameworks里的的图片就可以了 然后直接make否则必须全更改并且不能make只能make firmwar 2默认开机墙纸的位置: default_wallpaper.jpg　　./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/res/drawable/default_wallpaper.jpg ./frameworks/base/core/res/res/drawable/default_wallpaper.jpg 注意:这个设置和上面的一样这俩个都不能更改文件名 3更改PC机器删除硬件的文字kernel中 drivers/usb/gadget/f_mass_storage.c fsg-&#62;vendor = &#8220;XXXXXXXXXXXXX&#8221;; 4更改卷标: bootable/recovery/etc/init.rc setprop UserVolumeLabel &#8220;XXXXXXXXXXXXX&#8221; 直接打包 5修改屏幕锁: (1) frameworks/base/packages/SettingsProvider/res/values/defaults.xml &#60;integer name=&#8221;def_screen_off_timeout&#8221;&#62;60000&#60;/integer&#62; 60000改成想要的时间如果是不锁为-1 (2) frameworks/policies/base/phone/com/android/internal/policy/impl/KeyguardViewMediator.java private boolean mExternallyEnabled = true; 将其修改成false 这样更改就不会再进入休眠状态了 6初始化语言: out\target\product\sdkDemo\root\default.prop &#8230; <a href="http://artskill.cn/blog/?p=481">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #b6b6b6; font-family: 'black verdana'; line-height: 21px; font-size: 14px;"> </span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">1开机图片:</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">android-logo-mask.png<br />
android-logo-shine.png</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">这两个图片一个在上一个在下　　./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/assets/images/android-logo-shine.png</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">./frameworks/base/core/res/assets/images/android-logo-shine.png</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">注意:如果源码没有make可以直接更改frameworks里的的图片就可以了</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">然后直接make否则必须全更改并且不能make只能make firmwar</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">2默认开机墙纸的位置:</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">default_wallpaper.jpg　　./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/res/drawable/default_wallpaper.jpg<br />
./frameworks/base/core/res/res/drawable/default_wallpaper.jpg</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">注意:这个设置和上面的一样这俩个都不能更改文件名<span id="more-481"></span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">3更改PC机器删除硬件的文字kernel中<br />
drivers/usb/gadget/f_mass_storage.c<br />
fsg-&gt;vendor = &#8220;XXXXXXXXXXXXX&#8221;;</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">4更改卷标:</span><br />
bootable/recovery/etc/init.rc<br />
setprop UserVolumeLabel &#8220;XXXXXXXXXXXXX&#8221;</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">直接打包</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">5修改屏幕锁:</span><br />
(1)<br />
frameworks/base/packages/SettingsProvider/res/values/defaults.xml<br />
&lt;integer name=&#8221;def_screen_off_timeout&#8221;&gt;60000&lt;/integer&gt;<br />
60000改成想要的时间如果是不锁为-1<br />
(2)</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">frameworks/policies/base/phone/com/android/internal/policy/impl/KeyguardViewMediator.java</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">private boolean mExternallyEnabled = true;<br />
将其修改成false</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">这样更改就不会再进入休眠状态了</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">6初始化语言:</span><br />
out\target\product\sdkDemo\root\default.prop<br />
rkdroid2.1\recovery\default.prop<br />
ro.product.locale.language = es_ES<br />
ro.product.locale.region = es_ES</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">不能make直接打包</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000;"><span style="font-size: 18pt;">7设定初始化主页</span>:</span><br />
package/app/Browser/res/values/String.xml</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">655行</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">后面的应该是书签里的</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">8设定亮度0~255:</span><br />
frameworks/base/packages/SettingsProvider/res/values/defaults.xml<br />
def_screen_brightness&#8211;&gt;这个值初始化好像是100多</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">9音量:</span><br />
frameworks/base/media/java/android/media/AudioManager.java<br />
数组DEFAULT_STREAM_VOLUME第4个值(最大我设置到30但是还是差2格才到最大&#8211;默认是11<br />
建议将数组里的所有的数值都设为最大就OK了)</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">mm frameworks/base</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">10设置Google帐户，左上角提示“正在设置RK2818SDK”，要求改成“正在设置W9”:</span><br />
out\target\product\sdkDemo\root 中default.prop文件第13行<br />
ro.product.model=rk2818sdk  改为 ro.product.model=W9</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">11录音没有小时显示。要求增加:</span><br />
packages\apps\SoundRecorder\src\com\android\soundrecorder<br />
（1）SoundRecorder.java中： private void updateTimerView()<br />
把 String timeStr = String.format(mTimerFormat, time/60, time%60);<br />
改为：long hour=time/3600;<br />
String timeStr = String.format(mTimerFormat, hour, (time-hour*3600)/60, time%60);<br />
(2)  \res\values中strings.xml改为：<br />
&lt;string name=&#8221;timer_format&#8221;&gt;&lt;xliff:g id=&#8221;format&#8221;&gt;%02d:%02d:%02d&lt;/xliff:g&gt;&lt;/string&gt;</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="font-size: 18pt;"><span style="color: #ff0000;">12去掉Bluetooth</span>:</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">(主界面-&gt;添加文件夹-&gt;Bluetooth received)</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">ic_launcher_folder_bluetooth.png（72*72）:</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">在\packages\apps\Bluetooth\res\drawable-hdpi<br />
解决方法：删除\out\target\product\sdkDemo\system\app下的Bluetooth.apk</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">13充电锁屏时图片：</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">frameworks\base\core\res\res\drawable-hdpi:ic_lock_idle_charging.png</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">14去掉锁屏时显示充电百分比在：</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">frameworks\base\core\res\res\values-zh-rCN中strings.xml 的lockscreen_plugged_in 括号中的内容及括号 !!</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">15去掉动态桌面背景选项：</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">packages\wallpapers\Basic 中AndroidManifest.xml的&lt;service&gt;这些，如星系注释掉如下这些：<br />
&lt;service<br />
android:label=&#8221;@string/wallpaper_galaxy&#8221;<br />
android:name=&#8221;com.android.wallpaper.galaxy.GalaxyWallpaper&#8221;<br />
android:permission=&#8221;android.permission.BIND_WALLPAPER&#8221;&gt;<br />
&lt;intent-filter&gt;<br />
&lt;action android:name=&#8221;android.service.wallpaper.WallpaperService&#8221; /&gt;<br />
&lt;/intent-filter&gt;<br />
&lt;meta-data android:name=&#8221;android.service.wallpaper&#8221; android:resource=&#8221;@xml/galaxy&#8221; /&gt;<br />
&lt;/srvice&gt;</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">16更改版本号:</span><br />
build/core/Makefile<br />
79行<br />
RK_VER := xxx</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">17更改界面布局</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">位置:package/app/Launcher2/res/xml/default_workspace.xml</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #0000ff;">注意:adb shell 里当你点击任意的一个apk的时候,在后台会输出</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">I/ActivityManager(  728): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0&#215;10200000 　　 　cmp=<span style="color: #0000ff;">com.estrongs.android.pop/.view.FileExplorerActivity</span> bnds=[294,373][393,478] }<br />
I/WindowManager(  728): Setting rotation to 1, animFlags=0</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">看蓝色的部分就可以找到/前是包名/后面是类名&#8211;&gt;这个是在default_workspace.xml里面需要用到的</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">launcher:packageName=&#8221;com.android.browser&#8221;<br />
launcher:className=&#8221;com.android.browser.BrowserActivity&#8221;</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000; font-size: 18pt;">18如何将pdf类的文件放到桌面上</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">客户要求将他们自己制作的pdf帮助文档放置到桌面上使客人可以直接点击就浏览</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">String urlString = &#8220;/system/app/Nvsbl P4Dv2 English Manual.pdf&#8221;;<br />
Intent intent = new Intent();<br />
intent.setAction(android.content.Intent.ACTION_VIEW);<br />
intent.setDataAndType(Uri.fromFile(new File(urlString)),&#8221;application/pdf&#8221;);<br />
startActivity(intent);<br />
finish();</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">解释下:</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">首先将pdf文档放到out/target/product/sdkDemo/system/app下</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">将固定地址给出urlString,使用Intent</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">intent.setAction(android.content.Intent.ACTION_VIEW);启动View</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">intent.setDataAndType(Uri.fromFile(new File(urlString)),&#8221;application/pdf&#8221;);</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">application/pdf可以指定别的格式包括音频,视频,图片等等但是没有试过有需要可以试试</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000;">19.<strong><span style="color: #ff0000;">如何修改版本号？</span></strong></span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><strong></strong><span style="font-size: 14px; border-collapse: collapse; font-family: 'Microsoft YaHei', 宋体, 'Segoe UI', Tahoma, Arial; line-height: 22px;">用记事本打开build.prop，修改以下几行就行（如果装有linux的话，在linux下修改更好，windows下排版显示错误，包含中文的话需要UTF-8格式保存）</span></p>
<p><span style="font-family: 'Microsoft YaHei', 宋体, 'Segoe UI', Tahoma, Arial; line-height: 22px; font-size: 14px; border-collapse: collapse;">另外，给一点常用的配置参数，加在最后就可以了：<br style="word-wrap: break-word; line-height: normal;" /><span style="word-wrap: break-word; line-height: normal; font-size: small;"><span style="word-wrap: break-word; line-height: normal; color: #ff3f0f;">ro.product.locale.language=zh<br style="word-wrap: break-word; line-height: normal;" />ro.product.locale.region=CN<br style="word-wrap: break-word; line-height: normal;" />ro.setupwizard.mode=DISABLED<br style="word-wrap: break-word; line-height: normal;" />persist.sys.timezone=Asia/Shanghai</span></span></span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><strong><span style="color: #ff0000;">20.<strong><span style="color: #ff0000;">如何汉化运营商名称？</span></strong></span></strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><strong><span style="font-size: medium;"><strong><span style="font-family: 'Microsoft YaHei', 宋体, 'Segoe UI', Tahoma, Arial; font-weight: normal; line-height: 22px; font-size: 14px; border-collapse: collapse; color: #444444;">用记事本打开system\etc下的spn-conf.xml。将里面的China Mobile全部替换成<span class="t_tag" style="word-wrap: break-word; line-height: normal; cursor: pointer; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff0000; white-space: nowrap;">中国</span>移动，China Unicom全部换成中国联通即可（如果替换后出现乱码，用UTF-8格式保存）。</span></strong></span></strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000;">注意:这个方法很不到如果只放置一些图片还可以但是如果放置文件比较大那么打包出来的</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="color: #ff0000;"> system.img文件会很大也就是占用本身的系统内存</span><span style="font-size: 12pt; color: #ff0000;">&#8212;&#8211;&gt;所以不推荐使用!!!!!!!!!!!</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="font-size: 12pt; color: #ff0000;"><a href="http://www.cnblogs.com/hesiming/archive/2010/12/09/1901367.html">http://www.cnblogs.com/hesiming/archive/2010/12/09/1901367.html</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=481</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Reflection (JAVA反射)</title>
		<link>http://artskill.cn/blog/?p=479</link>
		<comments>http://artskill.cn/blog/?p=479#comments</comments>
		<pubDate>Mon, 13 Dec 2010 10:34:38 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=479</guid>
		<description><![CDATA[Reflection 是 Java 程序开发语言的特征之一，它允许运行中的 Java 程序对自身进行检查，或者说“自审”，并能直接操作程序的内部属性。例如，使用它能获得 Java 类中各成员的名称并显示出来。 Java 的这一能力在实际应用中也许用得不是很多，但是在其它的程序设计语言中根本就不存在这一特性。例如，Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。 JavaBean 是 reflection 的实际应用之一，它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。 1. 一个简单的例子 考虑下面这个简单的例子，让我们看看 reflection 是如何工作的。 import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try &#8230; <a href="http://artskill.cn/blog/?p=479">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #333333; font-family: Tahoma; line-height: 18px; font-size: 12px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><span id="ArticleContent1_ArticleContent1_lblContent"><span id="ArticleContent1_ArticleContent1_lblContent"> </span></span></span></p>
<p>Reflection 是 Java 程序开发语言的特征之一，它允许运行中的 Java 程序对自身进行检查，或者说“自审”，并能直接操作程序的内部属性。例如，使用它能获得 Java 类中各成员的名称并显示出来。</p>
<p>Java 的这一能力在实际应用中也许用得不是很多，但是在其它的程序设计语言中根本就不存在这一特性。例如，Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。</p>
<p>JavaBean 是 reflection 的实际应用之一，它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。<span id="more-479"></span></p>
<p>1. 一个简单的例子</p>
<p>考虑下面这个简单的例子，让我们看看 reflection 是如何工作的。</p>
<p>import java.lang.reflect.*;<br />
public class DumpMethods {<br />
public static void main(String args[]) {<br />
try {<br />
Class c = Class.forName(args[0]);<br />
Method m[] = c.getDeclaredMethods();<br />
for (int i = 0; i &lt; m.length; i++)<br />
System.out.println(m[i].toString());<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>按如下语句执行：</p>
<p>java DumpMethods java.util.Stack</p>
<p>它的结果输出为：</p>
<p>public java.lang.Object java.util.Stack.push(java.lang.Object)</p>
<p>public synchronized java.lang.Object java.util.Stack.pop()</p>
<p>public synchronized java.lang.Object java.util.Stack.peek()</p>
<p>public boolean java.util.Stack.empty()</p>
<p>public synchronized int java.util.Stack.search(java.lang.Object)</p>
<p>这样就列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型。</p>
<p>这个程序使用 Class.forName 载入指定的类，然后调用 getDeclaredMethods 来获取这个类中定义了的方法列表。java.lang.reflect.Methods 是用来描述某个类中单个方法的一个类。</p>
<p>2.开始使用 Reflection</p>
<p>用于 reflection 的类，如 Method，可以在 java.lang.relfect 包中找到。使用这些类的时候必须要遵循三个步骤：第一步是获得你想操作的类的 java.lang.Class 对象。在运行中的 Java 程序中，用 java.lang.Class 类来描述类和接口等。</p>
<p>下面就是获得一个 Class 对象的方法之一：</p>
<p>Class c = Class.forName(&#8220;java.lang.String&#8221;);</p>
<p>这条语句得到一个 String 类的类对象。还有另一种方法，如下面的语句：</p>
<p>Class c = int.class;</p>
<p>或者</p>
<p>Class c = Integer.TYPE;</p>
<p>它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。</p>
<p>第二步是调用诸如 getDeclaredMethods 的方法，以取得该类中定义的所有方法的列表。</p>
<p>一旦取得这个信息，就可以进行第三步了——使用 reflection API 来操作这些信息，如下面这段代码：</p>
<p>Class c = Class.forName(&#8220;java.lang.String&#8221;);</p>
<p>Method m[] = c.getDeclaredMethods();</p>
<p>System.out.println(m[0].toString());</p>
<p>它将以文本方式打印出 String 中定义的第一个方法的原型。</p>
<p>在下面的例子中，这三个步骤将为使用 reflection 处理特殊应用程序提供例证。</p>
<p>模拟 instanceof 操作符</p>
<p>得到类信息之后，通常下一个步骤就是解决关于 Class 对象的一些基本的问题。例如，Class.isInstance 方法可以用于模拟 instanceof 操作符：</p>
<p>class A {<br />
}</p>
<p>public class instance1 {<br />
public static void main(String args[]) {<br />
try {<br />
Class cls = Class.forName(&#8220;A&#8221;);<br />
boolean b1 = cls.isInstance(new Integer(37));<br />
System.out.println(b1);<br />
boolean b2 = cls.isInstance(new A());<br />
System.out.println(b2);<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>在这个例子中创建了一个 A 类的 Class 对象，然后检查一些对象是否是 A 的实例。Integer(37) 不是，但 new A() 是。</p>
<p>3.找出类的方法</p>
<p>找出一个类中定义了些什么方法，这是一个非常有价值也非常基础的 reflection 用法。下面的代码就实现了这一用法：</p>
<p>import java.lang.reflect.*;</p>
<p>public class method1 {<br />
private int f1(Object p, int x) throws NullPointerException {<br />
if (p == null)<br />
throw new NullPointerException();<br />
return x;<br />
}</p>
<p>public static void main(String args[]) {<br />
try {<br />
Class cls = Class.forName(&#8220;method1&#8243;);<br />
Method methlist[] = cls.getDeclaredMethods();<br />
for (int i = 0; i &lt; methlist.length; i++) {<br />
Method m = methlist[i];<br />
System.out.println(&#8220;name = &#8221; + m.getName());<br />
System.out.println(&#8220;decl class = &#8221; + m.getDeclaringClass());<br />
Class pvec[] = m.getParameterTypes();<br />
for (int j = 0; j &lt; pvec.length; j++)<br />
System.out.println(&#8220;param #&#8221; + j + &#8221; &#8221; + pvec[j]);<br />
Class evec[] = m.getExceptionTypes();<br />
for (int j = 0; j &lt; evec.length; j++)<br />
System.out.println(&#8220;exc #&#8221; + j + &#8221; &#8221; + evec[j]);<br />
System.out.println(&#8220;return type = &#8221; + m.getReturnType());<br />
System.out.println(&#8220;&#8212;&#8211;&#8221;);<br />
}<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>这个程序首先取得 method1 类的描述，然后调用 getDeclaredMethods 来获取一系列的 Method 对象，它们分别描述了定义在类中的每一个方法，包括 public 方法、protected 方法、package 方法和 private 方法等。如果你在程序中使用 getMethods 来代替 getDeclaredMethods，你还能获得继承来的各个方法的信息。</p>
<p>取得了 Method 对象列表之后，要显示这些方法的参数类型、异常类型和返回值类型等就不难了。这些类型是基本类型还是类类型，都可以由描述类的对象按顺序给出。</p>
<p>输出的结果如下：</p>
<p>name = f1</p>
<p>decl class = class method1</p>
<p>param #0 class java.lang.Object</p>
<p>param #1 int</p>
<p>exc #0 class java.lang.NullPointerException</p>
<p>return type = int</p>
<p>&#8212;&#8211;</p>
<p>name = main</p>
<p>decl class = class method1</p>
<p>param #0 class [Ljava.lang.String;</p>
<p>return type = void</p>
<p>-----<br />
4.获取构造器信息</p>
<p>获取类构造器的用法与上述获取方法的用法类似，如：</p>
<p>import java.lang.reflect.*;</p>
<p>public class constructor1 {<br />
public constructor1() {<br />
}</p>
<p>protected constructor1(int i, double d) {<br />
}</p>
<p>public static void main(String args[]) {<br />
try {<br />
Class cls = Class.forName(&#8220;constructor1&#8243;);<br />
Constructor ctorlist[] = cls.getDeclaredConstructors();<br />
for (int i = 0; i &lt; ctorlist.length; i++) {<br />
Constructor ct = ctorlist[i];<br />
System.out.println(&#8220;name = &#8221; + ct.getName());<br />
System.out.println(&#8220;decl class = &#8221; + ct.getDeclaringClass());<br />
Class pvec[] = ct.getParameterTypes();<br />
for (int j = 0; j &lt; pvec.length; j++)<br />
System.out.println(&#8220;param #&#8221; + j + &#8221; &#8221; + pvec[j]);<br />
Class evec[] = ct.getExceptionTypes();<br />
for (int j = 0; j &lt; evec.length; j++)<br />
System.out.println(&#8220;exc #&#8221; + j + &#8221; &#8221; + evec[j]);<br />
System.out.println(&#8220;&#8212;&#8211;&#8221;);<br />
}<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>这个例子中没能获得返回类型的相关信息，那是因为构造器没有返回类型。</p>
<p>这个程序运行的结果是：</p>
<p>name = constructor1</p>
<p>decl class = class constructor1</p>
<p>&#8212;&#8211;</p>
<p>name = constructor1</p>
<p>decl class = class constructor1</p>
<p>param #0 int</p>
<p>param #1 double</p>
<p>&#8212;&#8211;</p>
<p>5.获取类的字段(域)</p>
<p>找出一个类中定义了哪些数据字段也是可能的，下面的代码就在干这个事情：<br />
import java.lang.reflect.*;</p>
<p>public class field1 {<br />
private double d;<br />
public static final int i = 37;<br />
String s = &#8220;testing&#8221;;</p>
<p>public static void main(String args[]) {<br />
try {<br />
Class cls = Class.forName(&#8220;field1&#8243;);<br />
Field fieldlist[] = cls.getDeclaredFields();<br />
for (int i = 0; i &lt; fieldlist.length; i++) {<br />
Field fld = fieldlist[i];<br />
System.out.println(&#8220;name = &#8221; + fld.getName());<br />
System.out.println(&#8220;decl class = &#8221; + fld.getDeclaringClass());<br />
System.out.println(&#8220;type = &#8221; + fld.getType());<br />
int mod = fld.getModifiers();<br />
System.out.println(&#8220;modifiers = &#8221; + Modifier.toString(mod));<br />
System.out.println(&#8220;&#8212;&#8211;&#8221;);<br />
}<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>这个例子和前面那个例子非常相似。例中使用了一个新东西 Modifier，它也是一个 reflection 类，用来描述字段成员的修饰语，如“private int”。这些修饰语自身由整数描述，而且使用 Modifier.toString 来返回以“官方”顺序排列的字符串描述 (如“static”在“final”之前)。这个程序的输出是：</p>
<p>name = d</p>
<p>decl class = class field1</p>
<p>type = double</p>
<p>modifiers = private</p>
<p>&#8212;&#8211;</p>
<p>name = i</p>
<p>decl class = class field1</p>
<p>type = int</p>
<p>modifiers = public static final</p>
<p>&#8212;&#8211;</p>
<p>name = s</p>
<p>decl class = class field1</p>
<p>type = class java.lang.String</p>
<p>modifiers =</p>
<p>&#8212;&#8211;</p>
<p>和获取方法的情况一下，获取字段的时候也可以只取得在当前类中申明了的字段信息 (getDeclaredFields)，或者也可以取得父类中定义的字段 (getFields) 。<br />
6.根据方法的名称来执行方法</p>
<p>文本到这里，所举的例子无一例外都与如何获取类的信息有关。我们也可以用 reflection 来做一些其它的事情，比如执行一个指定了名称的方法。下面的示例演示了这一操作：</p>
<p>import java.lang.reflect.*;<br />
public class method2 {<br />
public int add(int a, int b) {<br />
return a + b;<br />
}<br />
public static void main(String args[]) {<br />
try {<br />
Class cls = Class.forName(&#8220;method2&#8243;);<br />
Class partypes[] = new Class[2];<br />
partypes[0] = Integer.TYPE;<br />
partypes[1] = Integer.TYPE;<br />
Method meth = cls.getMethod(&#8220;add&#8221;, partypes);<br />
method2 methobj = new method2();<br />
Object arglist[] = new Object[2];<br />
arglist[0] = new Integer(37);<br />
arglist[1] = new Integer(47);<br />
Object retobj = meth.invoke(methobj, arglist);<br />
Integer retval = (Integer) retobj;<br />
System.out.println(retval.intValue());<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>假如一个程序在执行的某处的时候才知道需要执行某个方法，这个方法的名称是在程序的运行过程中指定的 (例如，JavaBean 开发环境中就会做这样的事)，那么上面的程序演示了如何做到。</p>
<p>上例中，getMethod 用于查找一个具有两个整型参数且名为 add 的方法。找到该方法并创建了相应的 Method 对象之后，在正确的对象实例中执行它。执行该方法的时候，需要提供一个参数列表，这在上例中是分别包装了整数 37 和 47 的两个 Integer 对象。执行方法的返回的同样是一个 Integer 对象，它封装了返回值 84。</p>
<p>7.创建新的对象</p>
<p>对于构造器，则不能像执行方法那样进行，因为执行一个构造器就意味着创建了一个新的对象 (准确的说，创建一个对象的过程包括分配内存和构造对象)。所以，与上例最相似的例子如下：</p>
<p>import java.lang.reflect.*;</p>
<p>public class constructor2 {<br />
public constructor2() {<br />
}</p>
<p>public constructor2(int a, int b) {<br />
System.out.println(&#8220;a = &#8221; + a + &#8221; b = &#8221; + b);<br />
}</p>
<p>public static void main(String args[]) {<br />
try {<br />
Class cls = Class.forName(&#8220;constructor2&#8243;);<br />
Class partypes[] = new Class[2];<br />
partypes[0] = Integer.TYPE;<br />
partypes[1] = Integer.TYPE;<br />
Constructor ct = cls.getConstructor(partypes);<br />
Object arglist[] = new Object[2];<br />
arglist[0] = new Integer(37);<br />
arglist[1] = new Integer(47);<br />
Object retobj = ct.newInstance(arglist);<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>根据指定的参数类型找到相应的构造函数并执行它，以创建一个新的对象实例。使用这种方法可以在程序运行时动态地创建对象，而不是在编译的时候创建对象，这一点非常有价值。</p>
<p>8.改变字段(域)的值</p>
<p>reflection 的还有一个用处就是改变对象数据字段的值。reflection 可以从正在运行的程序中根据名称找到对象的字段并改变它，下面的例子可以说明这一点：</p>
<p>import java.lang.reflect.*;</p>
<p>public class field2 {<br />
public double d;</p>
<p>public static void main(String args[]) {<br />
try {<br />
Class cls = Class.forName(&#8220;field2&#8243;);<br />
Field fld = cls.getField(&#8220;d&#8221;);<br />
field2 f2obj = new field2();<br />
System.out.println(&#8220;d = &#8221; + f2obj.d);<br />
fld.setDouble(f2obj, 12.34);<br />
System.out.println(&#8220;d = &#8221; + f2obj.d);<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>这个例子中，字段 d 的值被变为了 12.34。</p>
<p>9.使用数组</p>
<p>本文介绍的 reflection 的最后一种用法是创建的操作数组。数组在 Java 语言中是一种特殊的类类型，一个数组的引用可以赋给 Object 引用。观察下面的例子看看数组是怎么工作的：</p>
<p>import java.lang.reflect.*;</p>
<p>public class array1 {<br />
public static void main(String args[]) {<br />
try {<br />
Class cls = Class.forName(&#8220;java.lang.String&#8221;);<br />
Object arr = Array.newInstance(cls, 10);<br />
Array.set(arr, 5, &#8220;this is a test&#8221;);<br />
String s = (String) Array.get(arr, 5);<br />
System.out.println(s);<br />
} catch (Throwable e) {<br />
System.err.println(e);<br />
}<br />
}<br />
}</p>
<p>例中创建了 10 个单位长度的 String 数组，为第 5 个位置的字符串赋了值，最后将这个字符串从数组中取得并打印了出来。</p>
<p>下面这段代码提供了一个更复杂的例子：</p>
<p>import java.lang.reflect.*;</p>
<p>public class array2 {<br />
public static void main(String args[]) {<br />
int dims[] = new int[]{5, 10, 15};<br />
Object arr = Array.newInstance(Integer.TYPE, dims);<br />
Object arrobj = Array.get(arr, 3);<br />
Class cls = arrobj.getClass().getComponentType();<br />
System.out.println(cls);<br />
arrobj = Array.get(arrobj, 5);<br />
Array.setInt(arrobj, 10, 37);<br />
int arrcast[][][] = (int[][][]) arr;<br />
System.out.println(arrcast[3][5][10]);<br />
}<br />
}<br />
例中创建了一个 5 x 10 x 15 的整型数组，并为处于 [3][5][10] 的元素赋了值为 37。注意，多维数组实际上就是数组的数组，例如，第一个 Array.get 之后，arrobj 是一个 10 x 15 的数组。进而取得其中的一个元素，即长度为 15 的数组，并使用 Array.setInt 为它的第 10 个元素赋值。</p>
<p>注意创建数组时的类型是动态的，在编译时并不知道其类型。</p>
<div style="font-size: 14px; line-height: 25px;"><strong>作者Blog：</strong><a id="ArticleContent1_ArticleContent1_AuthorBlogLink" style="color: #000000; text-decoration: none;" href="http://blog.csdn.net/leek2000/" target="_blank">http://blog.csdn.net/leek2000/</a></div>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=479</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>android 根文件系统分析</title>
		<link>http://artskill.cn/blog/?p=476</link>
		<comments>http://artskill.cn/blog/?p=476#comments</comments>
		<pubDate>Wed, 08 Dec 2010 10:58:14 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=476</guid>
		<description><![CDATA[首先是Android的文件系统根目录的结构： # pwd &#38;&#38; ls -a -l/drwxrwxrwt     root root               2009-06-10 09:53              sqlite_stmt_journalsdrwxrwx&#8212;      system       cache          2008-09-06 22:51             cached&#8212;rwxrwx      system       system            1970-01-01 08:00            sdcardlrwxrwxrwx      root           root               2009-06-09 22:11             etc &#8230; <a href="http://artskill.cn/blog/?p=476">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<table style="line-height: 20px !important; table-layout: fixed; width: 938px;">
<tbody style="line-height: 20px !important;">
<tr style="line-height: 20px !important;">
<td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: 20px !important;">
<div id="blog_text" class="cnt" style="font-family: Tahoma; word-wrap: break-word; word-break: normal; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: 20px; color: #666666; overflow-x: hidden; overflow-y: hidden; position: static;">
<p style="line-height: normal;"><span style="line-height: normal; color: #000000;">首先是Android的文件系统根目录的结构：</span></p>
<p style="line-height: normal;"><span style="line-height: normal; color: #000000;"># pwd &amp;&amp; ls -a -l<br style="line-height: normal;" />/<br style="line-height: normal;" />drwxrwxrwt     <span class="t_tag" style="line-height: normal;">root</span> root               2009-06-10 09:53              sqlite_stmt_journals<br style="line-height: normal;" />drwxrwx&#8212;      system       cache          2008-09-06 22:51             cache<br style="line-height: normal;" />d&#8212;rwxrwx      system       system            1970-01-01 08:00            sdcard<br style="line-height: normal;" />lrwxrwxrwx      root           root               2009-06-09 22:11             etc -&gt; /system/etc<br style="line-height: normal;" />drwxr-xr-x       root           root                2008-09-06 22:45             system<br style="line-height: normal;" />drwxr-xr-x      root           root                 1970-01-01 08:00               sys<br style="line-height: normal;" />drwxr-x&#8212;      root              root                 1970-01-01 08:00               sbin<br style="line-height: normal;" />-rw-r&#8211;r&#8211;         root            root               117 1970-01-01 08:00        runme.sh<br style="line-height: normal;" />dr-xr-xr-x       root              root              1970-01-01 08:00              proc<br style="line-height: normal;" />-rwxr-x&#8212;        root            root            1704 1970-01-01 08:00      init.trout.rc<br style="line-height: normal;" />-rwxr-x&#8212;        root            root                9329 1970-01-01 08:00       init.rc<br style="line-height: normal;" />-rwxr-x&#8212;         root             root            1677 1970-01-01 08:00      init.goldfish.rc<br style="line-height: normal;" />-rwxr-x&#8212;        root           root             106636 1970-01-01 08:00 init<br style="line-height: normal;" />-rw-r&#8211;r&#8211;         root           root                118 1970-01-01 08:00       default.prop<br style="line-height: normal;" />drwxrwx&#8211;x      system        system          2008-09-06 22:51             data<br style="line-height: normal;" />drwx&#8212;&#8212;        root             root              2009-06-07 16:29              root<br style="line-height: normal;" />drwxr-xr-x     root             root               2009-06-09 22:11            dev</span></p>
<p style="line-height: normal;"><span style="line-height: normal; color: #000000;"><strong style="line-height: normal;">sqlite_stmt_journals</strong>:一个根目录下的tmpfs文件系统，用于存放临时文件数据。<br style="line-height: normal;" /><strong style="line-height: normal;">cache</strong> ： 是缓存临时文件夹，据说是除了T-mobile的OTA更新外，别无用处。<br style="line-height: normal;" /><strong style="line-height: normal;">sdcard</strong>：是<span class="t_tag" style="line-height: normal;">SD卡</span>中的FAT32文件系统挂载的目录<br style="line-height: normal;" /><strong style="line-height: normal;">etc</strong> ：指向 /system/etc ，众所周知的配置文件存放目录    <span id="more-476"></span> </span></p>
<p style="line-height: normal;"><span style="line-height: normal; color: #000000;"><strong style="line-height: normal;">sys</strong> ：用于挂载 sysfs文件系统。 在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值 <br style="line-height: normal;" /></span><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;"><strong style="line-height: normal;">sbin</strong>： 只放了一个用于调试的adbd<span class="t_tag" style="line-height: normal;">程序</span>。</span><span style="line-height: normal; color: #000000;"><br style="line-height: normal;" /></span><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;"><strong style="line-height: normal;">proc </strong>：<strong style="line-height: normal;">/proc</strong> 文件系统下的多种文件提供的系统信息不是针对某个特定进程的，而是能够在整个系统范围的上下文中使用。<br style="line-height: normal;" /><strong style="line-height: normal;">data </strong>：存放用户安装的<span class="t_tag" style="line-height: normal;">软件</span>以及各种数据。</span><span style="line-height: normal; color: #000000;"><br style="line-height: normal;" /></span><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;"><strong style="line-height: normal;">root</strong> ：什么都没有。</span><span style="line-height: normal; color: #000000;"><br style="line-height: normal;" /></span><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;"><strong style="line-height: normal;">dev </strong>：不用多说了，设备节点文件的存放地。</span></p>
<p style="line-height: normal;"><span style="line-height: normal; color: #000000;"><br style="line-height: normal;" /><strong style="line-height: normal;">system</strong> ：是一个很重要的目录，系统中的大部分东西都在这里了，以下是目录结构：</span></p>
<p style="line-height: normal;"><span style="line-height: normal; color: #000000;"># ls -a -l /system<br style="line-height: normal;" />drwxr-xr-x root     208               1970-01-01 08:00                 xbin<br style="line-height: normal;" />drwxr-xr-x root     root              1970-01-01 08:00                modules<br style="line-height: normal;" />drwxr-xr-x root     root              2008-08-01 20:00                framework<br style="line-height: normal;" />drwxr-xr-x root     root              2008-08-01 20:00               fonts<br style="line-height: normal;" />drwxr-xr-x root     root              2008-08-01 20:00                 etc<br style="line-height: normal;" />-rw-r&#8211;r&#8211; root     root           2197 2008-08-01 20:00        build.prop<br style="line-height: normal;" />drwxr-xr-x root     root              2008-08-01 20:00                media<br style="line-height: normal;" />drwxr-xr-x root     shell          2008-08-01 20:00                bin<br style="line-height: normal;" />drwxr-xr-x root     root              2008-08-01 20:00                usr<br style="line-height: normal;" />drwxr-xr-x root     root              2008-08-01 20:00                <span class="t_tag" style="line-height: normal;">app</span><br style="line-height: normal;" />drwxr-xr-x root     root              2008-09-06 22:45                lost+found<br style="line-height: normal;" />drwxr-xr-x root     root              2008-08-01 20:00                 lib<br style="line-height: normal;" />drwxr-xr-x root     root              2008-08-01 20:00                sd<br style="line-height: normal;" />-rw-r&#8211;r&#8211; root     root              145 2008-08-01 20:00          init.rc</span></p>
<p style="line-height: normal;"><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;"><strong style="line-height: normal;">下面介绍非目录的文件：<br style="line-height: normal;" /></strong><br style="line-height: normal;" /><span style="line-height: normal; font-family: arial, helvetica, sans-serif;">runme.sh用于 SD 卡中 EXT2文件系统的<span class="t_tag" style="line-height: normal;">自动</span>挂载动作的脚本。</span><br style="line-height: normal;" /><span style="line-height: normal; font-family: arial, helvetica, sans-serif;">init.trout.rc，init.rc，init.goldfish.rc 是初始化文件.</span><br style="line-height: normal;" /><span style="line-height: normal; font-family: arial, helvetica, sans-serif;">init是系统启动到文件系统的时候第一个运行的程序。</span><br style="line-height: normal;" /></span></p>
<p style="line-height: normal;"><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;">从以上的根目录分析来看，Android的根文件系统并非标准的Linux文件系统，所以以后还得仔细分析一下启动过程，才能认识Android系统。今天要来分析一下<span class="t_tag" style="line-height: normal;">Android</span><span class="t_tag" style="line-height: normal;">文件</span><span class="t_tag" style="line-height: normal;">系统</span>的/system目录的结构。</span></p>
<p style="line-height: normal;"><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;"> /system目录是在Android文件系统占有及其重要的位置，基本上所有的<span class="t_tag" style="line-height: normal;">工具</span>和应用<span class="t_tag" style="line-height: normal;">程序</span>都在这个目录下，我看来是一个真正的<span class="t_tag" style="line-height: normal;">root</span>fs。他在Android<span class="t_tag" style="line-height: normal;">手机</span>中存放在nandflash的mtd3中，是一个yaffs2文件系统，在启动时被挂载在root的/system目录下，其中包含有：（目录内容见上）</span></p>
<p style="line-height: normal;"><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;"><strong style="line-height: normal;">xbin </strong> ：下放了很多系统管理工具，这些工具不是到toolbox的链接，每个都是可执行程序。如果你看到这些命令你会发现他们根本不常用，他们都是为系统管理员准备的，是一些系统管理和配置工具。这个文件夹的作用相当于标准Linux文件系统中的 /sbin。我的手机此目录下有busybox，肯定是改过的，应该是破解者加上的。<br style="line-height: normal;" /><strong style="line-height: normal;">modules</strong>：使用来存放内核模块（主要是fs和net）和模块配置文件的地方。<br style="line-height: normal;" /><strong style="line-height: normal;">framework</strong>： 是JAVA<span class="t_tag" style="line-height: normal;">平台</span>的一些核心文件，属于JAVA平台系统框架文件。里面的文件都是.jar和.odex文件。</span><span style="line-height: normal; font-family: arial, helvetica, sans-serif; color: #000000;"> 备注：什么是odex文件？ odex是被优化过的JAVA程序文件，体积通常是.jar的4倍左右。执行效率比.jar高。<br style="line-height: normal;" /><strong style="line-height: normal;">fonts </strong> ：很显然，这是字体库文件的存放目录。<br style="line-height: normal;" /><strong style="line-height: normal;">etc </strong> ：这里存放了系统中几乎所有的配置文件，根目录下的/etc就链结于此。<br style="line-height: normal;" /><strong style="line-height: normal;">build.prop</strong> ：是一个属性文件，在Android系统中.prop文件很重要，记录了系统的<span class="t_tag" style="line-height: normal;">设置</span>和改变，类似于/etc中的文件。<br style="line-height: normal;" /><strong style="line-height: normal;">media </strong> ：里面主要是存放了系统的<span class="t_tag" style="line-height: normal;">铃声</span>的，分为 notifications（通知）、ui（界面）、alarms（警告）和ringtones（铃声），里面都是.ogg音频文件。<br style="line-height: normal;" /><strong style="line-height: normal;">bin </strong>：众所周知，是存放用户常用的工具程序的，其中大部分是到toolbox的链接（类似嵌入式Linux中的busybox）。toolbox应该是google简化版的busybox，我还没深入研究过。<br style="line-height: normal;" /><strong style="line-height: normal;">usr </strong> ：用户的配置文件，如<span class="t_tag" style="line-height: normal;">键盘</span>布局、共享、时区文件等等。您可以cat 来看看。<br style="line-height: normal;" /><strong style="line-height: normal;">app </strong> ：顾名思义，存放的是Android系统自带的JAVA应用程序。<br style="line-height: normal;" /><strong style="line-height: normal;">lost+found</strong> ：yaffs文件系统固有的，类似回收站的文件夹，只有是yaffs文件系统都会有。<br style="line-height: normal;" /><strong style="line-height: normal;">lib </strong> ：存放几乎所有的共享库（.so）文件。<br style="line-height: normal;" /><strong style="line-height: normal;">sd </strong> ：<span class="t_tag" style="line-height: normal;">SD卡</span>中的EXT2分区的挂载目录<br style="line-height: normal;" /><strong style="line-height: normal;">init.rc</strong> :一个初始化脚本，用于将/system/modules和/system/xbin挂载为cramfs，避免系统被无意破坏。</span></p>
</div>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=476</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>追根溯源 市售各平板MID的芯片总结</title>
		<link>http://artskill.cn/blog/?p=472</link>
		<comments>http://artskill.cn/blog/?p=472#comments</comments>
		<pubDate>Tue, 07 Dec 2010 08:02:30 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=472</guid>
		<description><![CDATA[市面上MID产品很多，不过硬件是一款产品的基础，其中主控SOC又是硬件的心脏，所以这里简单总结下各个芯片的规格，共大家选购产品的时候参考。*3D部分三角形生产率仅供参考……因为跟内存带宽有关，芯片厂商往往公布的，有些是图形IP核的峰值（提供足够内存带宽的性能），而实际的芯片内存带宽往往有限，达不到理论值。即使同一款芯片，不同的方案采用不同的内存配置，比如DDR或者DDR2，造成的带宽区别也会显著的影响3D性能。**有错请跟帖指正哈*** 图片均来自网络=============================================ARM9系列经典的ARM9核心，较小的核心面积带来较低的成本，提供约1.1DMIPS/MHz的性能。相对比较省电，但难以冲击更高的频率，因此整体效能有限。威盛WM8505/WM8505+ 65nm工艺ARM926E 300MHz/400MHz，Linpack 1-1.25MFlops（1.6系统）RAM: 128M DDR2，16bit只有个JPEG硬解，视频支持很弱，无3D加速代表机型：国美飞触1代，山寨VIA平板个人观点：价格低廉大概是这个方案的唯一优点了……也不知道国美是怎么忽悠把这个机器卖到999元的……ARM9 300MHz，自然不用指望有多好的性能，上网都勉勉强强吧。超频的400MHz版本，发热又比较大，性能提升又实在有限。视频能力很弱，也不能当MP4用，最多只能当个Android入门机器玩玩。淘宝售价低至500-600元，7寸屏。如果不是囊中羞涩到一定程度，实在不推荐这个芯片的机器。真要入门的话，收个二手的智器Q5也比这个好。性能★☆☆☆☆视频★☆☆☆☆&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;瑞芯微RK2808 65nm工艺ARM926E 600MHz，Linpack 2-2.5MFlops（1.5系统）RAM: 128M SDRAM，32bit视频子系统：Ceva MM2000，基于550MHz的DSP多格式，RV，H.264，VC-1，H.263，MPEG4最高720p，流畅576p无3D加速代表机型：蓝魔W7，爱可视7HT，山寨apad等个人观点：RK2808也算是上市得比较早的机器，从五月份上市到现在，瑞芯微也做了很多宣传。600MHz的ARM9，性能偏弱，好在瑞芯微的系统优化做的不错，1.5的系统还是做的比较完善和稳定的，实际速度也不错。一般的上网，开启网页的速度能让人接受，应付文字为主的网页问题不大，然而对于图片稍多的网页，拖动就会有明显的不流畅。RK2808带有独立的DSP，因此视频性能获得了明显的提升，支持格式也较为丰富。720p以下的视频均能流畅解码，720p视频中，对RMVB，MPEG4的支持不错，H.264只能到2Mbps的码率。此外VC-1只能保证480p流畅。视频性能足以满足一般用户的需求。但是跟MP4相比，RK2808 Android的视频流畅度稍逊，总有掉帧感。RK2808的软肋在于采用SDRAM，最大只能支持128MB，对于2.0以上的系统，RAM成为了一个瓶颈。此外缺乏3D加速，也注定了与2.1以上的动态桌面和华丽特效无缘，也无法运行需要使用3D加速的游戏。蓝魔W7是少有采用电容屏的国产mid，触控感受给我留下了深刻的印象，瑞芯微做电容触控还是有自己的一套的。遗憾的是，瑞芯微放弃了RK2808 Android2.1系统的开发，于是由于系统的原因，这个电容屏也没能支持多点触摸。不过爱可视已经公布了旗下采用RK2808主控的爱可视7HT的Android核心源代码，于是民间工作者可以发挥下作用，进一步发挥RK2808的余热。目前7寸的山寨RK28机型，价格低至700元，作为入门机型具有一定的价值。性能★★☆☆☆视频★★★☆☆&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;瑞芯微RK2818 65nm工艺ARM926E 660MHz，Linpack 3MFlops+（2.1系统）RAM: 256M DDR2，32bit视频子系统：Ceva MM2000，基于600MHz的DSP多格式，RV，H.264，VC-1，H.263，MPEG4最高720p（此部分待进一步确认！）3D加速： ARM Mali-55架构：TBR，只有PS部分，顶点处理通过软件由ARM实现特性：OPENGL ES1.1，OPENVG三角形生产率：1M像素填充率：100M代表机型：蓝魔W9，W11，原道N6个人观点：RK2816改进了内存控制器，支持DDR2颗粒，最大到512MB，同时增加了3D加速。由于瑞芯微去年授权了ARM的Mali-55图形核心，综合考虑ARM9的架构，不出意外的话集成的图形核心就是Mali-55。Mali-55作为一颗入门级的图形核心，跑跑一些UI特效问题不大，普通的3D游戏应该也能执行。但是一些需要GLES 2.0的3D大作，特别是Gameloft的一些作品，估计就不能支持了。此外，ARM和DSP部分频率会有一定提升，由于产品还没有正式上市，其他的规格是否有变化就不太清楚了。视频能力可能会有提升，但预计不会超过720p。此外，RK可能利用视频系统中DSP的可编程性，进一步开发如3D视频，人脸识别等功能，为产品增加卖点。预计售价会在千元左右，可能会有更低价的普及版。性能★★★☆☆视频★★★☆☆&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;=====================================================ARM11同样经典的ARM11核心，提供约1.2DMIPS/MHz的性能。加长的管线可以冲击更高的频率（1GHz），但与此同时功耗的增加也比较显著。Telechips TCC8902 65nm工艺ARM1176JZF-S 540MHz/720MHz，Linpack 2.3/3.5MFlops（2.1系统）RAM: 256M DDR2，32bit视频子系统：ARM Mali-VE6，基于硬解多格式，RV，H.264，VC-1，H.263，MPEG4最高1080p，1080p流畅3D加速： ARM Mali-200架构：TBR，PS+VS特性：OPENGL ES2.0/1.1，OPENVG三角形生产率：16M像素填充率：275M代表机型：智器V系列，一些山寨平板个人观点：TCC8902的机型，去年年底由智器首先推出。开始该方案的Android不太完善，bug较多，经过大半年的努力，现在已经基本完善，目前已经是mid的主流方案之一。性能也处于主流水平，足以应付绝大部分应用。但ARM11的处理能力对于带有图片的复杂网页依旧不够，拖动并不流畅。TCC8902带有一颗比较强劲的3D加速器，因此各种动态3D UI也能很好支持。但似乎驱动并不完善，此外使用率也不及PowerVR SGX系列和高通Adreno系列高，因此软件优化不够，实际表现不如前两者。视频能力很强，支持多格式的1080p，也能真正做到1080p流畅。智器的产品还带有linux和ce系统，是玩机一族的好选择。特别V3售价699元，很有性价比。性能★★★☆☆视频★★★★★&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-三星S3C6410 65nm工艺ARM1176JZF-S 666MHz/800MHz，Linpack &#8230; <a href="http://artskill.cn/blog/?p=472">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 14px;"><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">市面上MID产品很多，不过硬件是一款产品的基础，其中主控SOC又是硬件的心脏，所以这里简单总结下各个</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">芯片</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">的规格，共大家选购产品的时候参考。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">*3D部分三角形生产率仅供参考……因为跟</span></span><a class="a6" style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://price.sanhaostreet.com/list/pricelist-1-3-----.html" target="_blank">内存</a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">带宽有关，芯片厂商往往公布的，有些是图形IP核的峰值（提供足够内存带宽的性能），而实际的芯片内存带宽往往有限，达不到理论值。即使同一款芯片，不同的方案采用不同的内存配置，比如DDR或者DDR2，造成的带宽区别也会显著的影响3D性能。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">**有错请跟帖指正哈</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">*** 图片均来自网络</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">=============================================</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM9系列</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">经典的ARM9核心，较小的核心面积带来较低的成本，提供约1.1DMIPS/MHz的性能。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">相对比较省电，但难以冲击更高的频率，因此整体效能有限。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">威盛WM8505/WM8505+</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291434" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085348383.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺<span id="more-472"></span></span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM926E 300MHz/400MHz，Linpack 1-1.25MFlops（1.6系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 128M DDR2，16bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">只有个JPEG硬解，</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">视频</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">支持很弱，无3D加速</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：国美飞触1代，山寨VIA平板</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">价格</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">低廉大概是这个方案的唯一优点了……也不知道国美是怎么忽悠把这个</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">机器</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">卖到999元的……</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM9 300MHz，自然不用指望有多好的性能，上网都勉勉强强吧。超频的400MHz版本，发热又比较大，性能提升又实在有限。视频能力很弱，也不能当</span></span><a class="a6" style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://price.sanhaostreet.com/list/pricelist-9-258-----.html" target="_blank">MP4</a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">用，最多只能当个Android入门机器玩玩。</span></span><br style="padding: 0px; margin: 0px;" /><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">淘宝</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">售价低至500-600元，7寸屏。如果不是囊中羞涩到一定程度，实在不</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">推荐</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">这个芯片的机器。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">真要入门的话，收个二手的智器Q5也比这个好。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★☆☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★☆☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">瑞芯微RK2808</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291435" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085349550.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM926E 600MHz，Linpack 2-2.5MFlops（1.5系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 128M SDRAM，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：Ceva MM2000，基于550MHz的DSP</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">格式</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">，RV，H.264，VC-1，H.263，MPEG4最高720p，流畅576p</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">无3D加速</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">蓝魔</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">W7，爱可视7HT，山寨apad等</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RK2808也算是</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">上市</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">得比较早的机器，从五月份上市到现在，瑞芯微也做了很多宣传。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">600MHz的ARM9，性能偏弱，好在瑞芯微的系统优化做的不错，1.5的系统还是做的比较完善和稳定的，实际速度也不错。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">一般的上网，开启网页的速度能让人接受，应付文字为主的网页问题不大，然而对于图片稍多的网页，拖动就会有明显的不流畅。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RK2808带有独立的DSP，因此视频性能获得了明显的提升，支持格式也较为丰富。720p以下的视频均能流畅解码，720p视频中，对RMVB，MPEG4的支持不错，H.264只能到2Mbps的码率。此外VC-1只能保证480p流畅。视频性能足以满足一般用户的需求。但是跟MP4相比，RK2808 Android的视频流畅度稍逊，总有掉帧感。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RK2808的软肋在于采用SDRAM，最大只能支持128MB，对于2.0以上的系统，RAM成为了一个瓶颈。此外缺乏3D加速，也注定了与2.1以上的动态桌面和华丽特效无缘，也无法运行需要使用3D加速的</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">游戏</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">蓝魔W7是少有采用电容屏的国产mid，触控感受给我留下了深刻的印象，瑞芯微做电容触控还是有自己的一套的。遗憾的是，瑞芯微放弃了RK2808 Android2.1系统的开发，于是由于系统的原因，这个电容屏也没能支持多点触摸。不过爱可视已经公布了旗下采用RK2808主控的爱可视7HT的Android核心源代码，于是民间工作者可以发挥下作用，进一步发挥RK2808的余热。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">目前7寸的山寨RK28机型，价格低至700元，作为入门机型具有一定的价值。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★★☆☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">瑞芯微RK2818</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291436" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085349908.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM926E 660MHz，Linpack 3MFlops+（2.1系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 256M DDR2，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：Ceva MM2000，基于600MHz的DSP</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，RV，H.264，VC-1，H.263，MPEG4最高720p</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">（此部分待进一步确认！）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： ARM Mali-55</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：TBR，只有PS部分，顶点处理通过</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">软件</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">由ARM实现</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：1M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：100M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：蓝魔W9，W11，原道N6</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RK2816改进了内存控制器，支持DDR2颗粒，最大到512MB，同时增加了3D加速。由于瑞芯微去年授权了ARM的Mali-55图形核心，综合考虑ARM9的架构，不出意外的话集成的图形核心就是Mali-55。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Mali-55作为一颗入门级的图形核心，跑跑一些UI特效问题不大，普通的3D游戏应该也能执行。但是一些需要GLES 2.0的3D大作，特别是Gameloft的一些作品，估计就不能支持了。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">此外，ARM和DSP部分频率会有一定提升，由于产品还没有正式上市，</span></span><a class="a6" style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://price.sanhaostreet.com/list/pricelist-3-567-----.html" target="_blank">其他</a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">的规格是否有变化就不太清楚了。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频能力可能会有提升，但预计不会超过720p。此外，RK可能利用视频系统中DSP的可编程性，进一步开发如3D视频，人脸识别等</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">功能</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">，为产品增加卖点。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">预计售价会在千元左右，可能会有更低价的普及版。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★☆☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★★☆☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">=====================================================</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM11</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">同样经典的ARM11核心，提供约1.2DMIPS/MHz的性能。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">加长的管线可以冲击更高的频率（1GHz），但与此同时功耗的增加也比较显著。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Telechips TCC8902</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291437" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085349785.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM1176JZF-S 540MHz/720MHz，Linpack 2.3/3.5MFlops（2.1系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 256M DDR2，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：ARM Mali-VE6，基于硬解</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，RV，H.264，VC-1，H.263，MPEG4最高1080p，1080p流畅</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： ARM Mali-200</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：TBR，PS+VS</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：16M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：275M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：智器V系列，一些山寨平板</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">TCC8902的机型，去年年底由智器首先推出。开始该方案的Android不太完善，bug较多，经过大半年的努力，现在已经基本完善，目前已经是mid的主流方案之一。性能也处于主流水平，足以应付绝大部分应用。但ARM11的处理能力对于带有图片的复杂网页依旧不够，拖动并不流畅。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">TCC8902带有一颗比较强劲的3D加速器，因此各种动态3D UI也能很好支持。但似乎驱动并不完善，此外使用率也不及PowerVR SGX系列和高通Adreno系列高，因此软件优化不够，实际表现不如前两者。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频能力很强，支持多格式的1080p，也能真正做到1080p流畅。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">智器的产品还带有linux和ce系统，是玩机一族的好</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">选择</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">。特别V3售价699元，很有性价比。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★☆☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★★★★</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></span><br style="padding: 0px; margin: 0px;" /><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">三星</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">S3C6410</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291438" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085349902.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM1176JZF-S 666MHz/800MHz，Linpack ～3.5MFlops（2.1系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 128M DDR/256M mDDR，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：三星，硬件解码</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">支持720×480下的H.264 BP</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： 三星自有</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：未知</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES1.1</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：&#8211;</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：&#8211;</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：智器Q系列，</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">魅族</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">M8，三星i5700</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">第一代mid，智器Q系列采用的芯片，另外三星i5700也采用了该芯片。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Q系列RAM有点小，不过得益于非</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">官方</span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">固件</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">，Android从1.5到2.2都能跑，加上linux和CE，可玩性挺高。二手的价格又便宜，确实是玩机入门的好选择。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★☆☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★☆☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">盈方微IMAPX200</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291439" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085349287.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM1176JZF-S 1GHz，Linpack ～9.8MFlops（2.1系统开启JIT，不开估计在4-4.5）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 256M DDR2，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：On2 Hantro 8190，硬件解码</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，RV，H.264，VC-1，H.263，MPEG4，VP6最高1080p</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： VIVANTE GC600</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：IMR，统一渲染</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：19M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：375M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：卓尼斯epad，国美飞触2代</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">真假A8事件的主角，结果证明还是ARM11。频率被拉到了1GHz，有Cortex-A8 500-600MHz的水平了，理论上性能还是不错的。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频硬解的规格还挺高，不过据说1080p还是有掉帧，估计软件优化的还不够。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">VIVANTE的3D加速器其实用的也挺多的，就看驱动是不是能跟上了。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">从芯片的角度说，硬件规格还是挺强大的，不过出来的晚，软件很多都不成熟，没跟上。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">另外据说芯片功耗挺大，所以中小尺寸的不好做。加上卓尼斯的无线</span></span><a class="a6" style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://price.sanhaostreet.com/list/pricelist-5-18-----.html" target="_blank">网卡</a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">用的</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">USB</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">的模块（非SDIO），功耗就更大了。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★☆☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★★★☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">高通MSM7201</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM1136J-S 528MHz，Linpack ～2-2.5MFlops（1.6系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 128/256M mDDR，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：高通QDSP5000</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">支持720×480以下H.264 BP</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： Adreno 130</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：IMR，固定功能管线</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES1.1</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：4M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：133M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：G1 G2 G3之类的</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">被HTC用烂了的芯片……性能实在不咋地，不过软件完善，加上低分屏，</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;"><a class="a6" style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; padding: 0px; margin: 0px;" href="http://price.sanhaostreet.com/list/pricelist-9-373-----.html" target="_blank">手机</a></span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">们还是很流畅。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">其改进版MSM722x，给ARM11增加了256KB的L2缓存，增加了硬件VFP，3D加速改用与QSD8x50相同的Adreno 200，总体性能有一定提升，但是受到ARM11本身的性能限制，与Cortex-A8的主控性能尚有明显差距。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★☆☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">=================================================</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A8</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">ARM首款超标量</span></span><a class="a6" style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://price.sanhaostreet.com/list/pricelist-1-2-----.html" target="_blank">CPU</a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">，双发射顺序结构，带来2.0DMIPS/MHz的效能。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">普遍带有256KB的L2缓存，加上600MHz-1GHz的高频率，相对ARM9和ARM11有显著的提升。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A8标配Neon单元，通过SIMD指令集大大加强浮点性能，可以实现不少DSP的功能。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">与此同时，相对高昂的授权费用和较大的核心面积，使得Cortex-A8 SOC的成本相对较高，作为定位中高端的产品出现。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">高通QSD8x50</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291440" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085349693.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Scorpion 1GHz，Linpack 7-7.5MFlops（2.1系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 256/512M mDDR，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：高通QDSP6000</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">支持720p H.264，但一般只有480p H.264流畅（BP或者MP)</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">通过软件解码能勉强支持480p多格式流畅</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： Adreno 200（AMD Z430)</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：IMR，统一渲染架构</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：22M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：133M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：google N1, Dell streak</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">最早的1GHz芯片，性能挺强劲，高端手机标配。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">浏览网页什么的自然不用说，系统也巨流畅。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D的Adreno 200不算强，因为高通的占有率挺高，游戏厂商都会做相应的优化，基本不用担心有游戏跑不了。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频通过DSP解码，高通的DSP虽然强劲，但是也只能到720p，实际也就576p以下能流畅。而且高通只做了H.264的codec，并且大部分厂商只支持baseline profile。有些机型能支持High Profile的解码，以及WMV的解码，不过兼容性有待提升。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">得益于Cortex-A8附带的Neon核心，处理器的浮点性能大大加强，可以通过软件解码处理各种编码的视频。不过性能还是有限，在1GHz高主频的CPU上，480p能基本流畅，不过高码率的片段，还是会掉帧甚至卡顿。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">此外该芯片集成了基带，所以拿它做的东西，肯定是可以打电话的，于是价格也不会太便宜。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★★★</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">德州仪器OMAP3430/3530</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291441" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085349509.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A8 550/720MHz，Linpack ～4.5(550MHz)/5.9(800MHz)（2.1系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 256M mDDR，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：IVA2+,基于C64x+ DSP，430MHz</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，但除去爱可视，很多厂商都没做解码</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">通过软件解码，配合超频，能勉强支持480p多格式流畅</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： PowerVR SGX530</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：TBR，统一渲染架构</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：8M（降频到110MHz）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：190M（降频到110MHz）</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：moto milestone，爱可视5，维智A81</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">一款比较经典的芯片，Cortex-A8的性能自然不用多少，虽然频率不如Snapdragon，但同频率下效能更高（800MHz的TI测试得分与1GHz的Snapdragon接近），当然同频下比Snapdragon要耗电（1GHz的Snapdragon的Scorpion核心耗电与600MHz的TI Cortex-A8接近，ARM部分满载约300mW）。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D部分使用非常主流的PowerVR SGX530，性能不错。由于SGX系列被苹果采用，软件的支持非常好，大量从ios平台上移植的游戏和应用都能充分发挥这颗芯片的性能，实际表现比高通的Adreno200更加出色。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频部分，TI集成了一个相当强劲的DSP C64x+。还记得蓝魔T10 MP4吗，采用TI出品的DM6441主控，使用514MHz的C64x+ DSP可以实现大部分720p的流畅解码，和480p 各种规格H.264的解码。遗憾的是，似乎除了爱可视，大部分厂商没有进一步的开发这颗DSP（或者没有向TI购买codec），导致此芯片的视频能力停留在比较低级的水平，仅支持H.264 BP MP4</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">播放</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">于是，就只能像QSD8x50一样，通过软件进行解码，适当超频后，同样能勉强支持480p多格式的解码。不过高码率的片段，掉帧和卡顿是必然的。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★★☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三星S5PC100</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291442" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085349618.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A8 667/800MHz</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 256M mDDR，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：PowerVR VXD370</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，H.264，VC-1,MPEG4最高1080p</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： PowerVR SGX535</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：TBR，统一渲染架构</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：28M（理论值），实际10M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：280M（理论值）</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：touch3，3GS</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">恐怕是大家最早接触的A8之一，被苹果采用，大量使用在iPhone 3GS和iPod touch 3gen上。不过在A8的芯片当中，性能比较一般，目前已被新一代的45nm S5PC110取代。虽然之前也听说有方案商要推出基于S5PC100的Android平板，但预计难以成为主流。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★★☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★☆☆☆(苹果)</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">飞思卡尔i.MX515</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291443" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085350533.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">65nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A8 800MHz/1GHz</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 256/512M DDR2，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：硬解</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，H.264，VC-1,MPEG4，RV最高720p</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">通过软件解码能勉强支持480p多格式流畅</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： Adreno 200（AMD Z430)</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：IMR，统一渲染架构</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：27M（频率比高通高）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：166M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：viliv P3</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">炒的很火的一款芯片，呼声很高，但迟迟不出机器（于是被戏称“飞思卡尔推销他们永远买不到的芯片”）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">不过据最新消息，10月底国内方案商搭载Android 2.2的i.MX515的平板终于能上市了。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">同样基于Cortex-A8，具有与高通Snapdragon类似的性能，网络浏览，文档阅读等日常应用自然不在话下。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D部分和QSD8x50一样，但频率有提升，此外采用DDR2内存，获得更大的带宽，3D加速性能会有进一步的提升。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频部分据说是通过一个流处理器实现的，支持多格式的720p解码，甚至支持WMV7、WMV8等冷门格式，值得期待。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">据称售价会在1300元左右，相当具有吸引力的一款产品。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★★★</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★★★☆</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三星S5PC110/S5PV210</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291444" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085350523.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">45nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">优化的Cortex-A8 800MHz/1GHz，512K L2，Linpack 8-8.5（1GHz)（2.1系统）</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 512M mDDR2，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：PowerVR VXD370</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，H.264，VC-1,MPEG4最高1080p</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">通过软件解码能勉强支持480p多格式流畅</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： PowerVR SGX540</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：TBR，统一渲染架构</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：90M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：1000M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：三星i9000，Galaxy Tab</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">采用类似的A4芯片的有iPad、iPod touch4、iPhone 4</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">毫无疑问，S5PC110（代号HammingBird）是目前最强的Cortex-A8芯片，没有之一。S5PV210和S5PC110只是封装上的区别，本质上并没有多少的变化。前者封装尺寸较大，适用于平板和上网本，后者的小尺寸封装适用于手机。其变种Apple A4芯片，只是将其中的PowerVR SGX540改成了SGX535，3D性能稍有降低。此外，负责视频硬解的VXD370被改成了VXD375，具体的区别尚不明确。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Hummingbird的Cortex-A8经过了三星的改进，同频率下具有更高的效能（+10%-20%），同时配置了512K的L2缓存，是其他Cortex-A8的两倍（Apple A4更是配备了640KB的L2缓存）</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D部分配置了主流而强劲的SGX540，实测性能领先其他Cortex-A8产品1倍以上，基本不用担心有游戏玩不了。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频解码部分，苹果比较吝啬，依旧是720p H.264 MP4解码。不过三星的Galaxy S可以支持多种格式多种封装的解码，包括热门的MKV封装。不过并不支持RMVB的硬件解码，只能通过软解实现480p。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">这颗芯片的强劲性能显然是定位高端的。三星的Galaxy Tab的具体价格也不得而知。11月或12月，国内方案商的S5PV210产品可能会上市，让我们拭目以待。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★★★★</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★★★☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">德州仪器OMAP3630/3640</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291445" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085350209.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">45nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A8 800MHz/1GHz</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 512M mDDR2，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：IVA2+,基于C64x+ DSP，430MHz</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，但除去爱可视，很多厂商都没做解码</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">通过软件解码能勉强支持480p多格式流畅</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： PowerVR SGX530</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：TBR，统一渲染架构</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：14M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：280M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：moto droidx，droid2，爱可视新发布的那一串机器</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">基本就是OMAP3430的45nm版本，并没有太多改进。得益于频率的提升，性能进一步加强，同时由于DDR2内存的采用，3D部分的性能也得以完全释放，达到了前作OMAP3430的2倍。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★★★</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★☆☆☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">=================================================</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A9</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">新一代的Cortex-A9核心在Cortex-A8的基础上改进，同样是超标量结构，乱序双发射，效能提升到2.5DMIPS/MHz。此外普遍采用对称双核心配置，两个相同的核心共享1MB的L2缓存，总体性能达到了Cortex-A8的2倍以上，性能十分强劲。</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">不过值得注意的是，在Cortex-A9上，Neon单元不再是标准配置。厂商可以选择传统的VFP单元以换取功耗和核心面积的优化。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">NVidia Tegra2 </span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291446" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085350823.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291447" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085350128.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">40nm工艺(TMSC)</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A9 1GHz双核 + VFP</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 512M/1G DDR2，32bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：硬件解码</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式，H.264，VC-1,MPEG4最高1080p</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">软件解码性能未知</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： GeForce ULV</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：IMR，PS+VS</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：～90M</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：～1000M</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：微星Harmony，万利达Zpad、东芝Folio</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A9，虽然已经上市在即，也算是次世代的配置了吧。几乎2倍于A8的性能，任何Android的应用，在如此强悍的硬件配置前，没有不流畅的理由。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速部分，其实与Tegra1一致，还是2PS+2TMU的配置，基于GeForce6的架构。2倍的提升一方面得益于核心频率的提升，另一方面，DDR2的大内存带宽给了很大帮助。然而效能与Hummingbird的SGX540处于同一水准，并没有太多的超越，这并非内置图形核心的限制，而是32bit DDR2所能提供的内存带宽的限制。尽管如此，Tegra2的3D性能还是处于量产SOC中的顶尖水平。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频部分支持多格式的1080p硬件解码，但是没有提供对RMVB的支持。有强悍的双核A9，软解视频应该不是问题，但是Tegra2缺少Neon模块SIMD的浮点加速，对软解效能会有多大影响，目前尚不能得知。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">此外，Tegra2也集成了专门的音频解码模块，以最大限度的解放ARM，降低功耗。内置一个ARM7用于全芯片的功耗管理。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">万利达的zPad本月就能上市，强悍的性能伴随的不便宜的价格（2500+），在乎体验的用户可以尝试一下。另外，Tegra2的产品多为10寸，7寸及以下的并不多，不知道是什么原因。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★★★★★★★★</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★★★☆</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">德州仪器OMAP4430/4440</span></span><br style="padding: 0px; margin: 0px;" /><a style="text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; color: #003366; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;" href="http://news.sanhaostreet.com/showpic.asp?imgid=291448" target="_blank"><img style="display: inline; padding: 0px; margin: 0px; border: initial none initial;" src="http://images.sanhaostreet.com/News/2010/10/20101014085350709.jpg" alt="" /></a><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;"> </span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">45nm工艺</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">Cortex-A9 1GHz/1.3GHz双核 + Neon</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">RAM: 512M/1G+ DDR3，64bit</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频子系统：IVA3,</span></span><span class="t_tag" style="color: #000000; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 22px; padding: 0px; margin: 0px;">高清</span><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">硬件解码单元 + C64x+ Lite DSP</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">多格式1080p，DSP部分提供可编程性</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">3D加速： PowerVR SGX540</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">架构：TBR，统一渲染架构</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">特性：OPENGL ES2.0/1.1，OPENVG</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">三角形生产率：未知</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">像素填充率：未知</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">代表机型：</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">个人观点：</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">真正成熟的A9 SOC，64bit的DDR3内存提供4倍于目前顶级SOC（32bit DDR2）的带宽，想必图形性能会有显著的提升。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">1080p硬件解码单元，同时和Tegra2一样搭配了专用音频处理单元。此外，TI继续保留了Neon单元用于浮点加速。视频解码已经不需要C64x+ DSP参与，但TI还是将它适当精简后保留了下来，利用它的可编程性加速一些固化硬件单元不能处理的应用。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">此外，TI同样配置了2个Cortex-M3处理器，用于整个SOC的任务调度和功耗管理。可以说，这是一款非常值得期待的产品，但是距离上市恐怕还有相当的时日。</span></span><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">性能★★★★★★★★★★★★</span></span><br style="padding: 0px; margin: 0px;" /><span style="font-family: 宋体, Arial, Helvetica, sans-serif; color: #000000;"><span style="line-height: 22px;">视频★★★★☆+</span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=472</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>面向 MID 进行用户界面设计的经验之谈</title>
		<link>http://artskill.cn/blog/?p=469</link>
		<comments>http://artskill.cn/blog/?p=469#comments</comments>
		<pubDate>Tue, 07 Dec 2010 06:56:40 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=469</guid>
		<description><![CDATA[摘要 MID（移动互连设备）是 PC 产品系列的一项最新创新，它具有 PC 的所有功能，但功耗却有明显的降低。鉴于 MID 的功能及用途，在设计用户界面（UI）时需要考虑到多方面的因素，以便为用户提供卓越的使用体验。本白皮书从总体上介绍了 MID 的 UI 设计规则。Hildon 用户界面以任务为导向，所以它需要一些特别的处理。本白皮书还介绍了 Hildon UI 设计的已知最佳方案（BKM）。 1. MID 简介 MID（移动互连设备）是 PC 产品系列的一项最新创新，它具有 PC 的所有功能，但功耗却有明显的降低。MID 是一种小外形（SFF）设备，它便于携带，可提供 24&#215;7 全天候的数据访问功能。 英特尔一直致力于开发并推广各种技术，以满足 MID 用户的需求。在 MID 的创新过程中，英特尔最重要的一项贡献就是，通过其集成显卡驱动程序英特尔®图形媒体加速器，为用户提供了集成的显卡软件。 MID 一般采用尺寸较小（4.5” – 6”）的高分辨率触摸显示屏，并具有小型的键盘。为了给用户提供类似于 PC 的使用体验，MID 显示屏上的内容必须易于阅读，必须能够使用手指在显示屏上轻松进行操作，这也就是说，操作系统和应用的 UI &#8230; <a href="http://artskill.cn/blog/?p=469">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #333333; font-family: Arial, sans-serif; line-height: normal; font-size: 12px;"> </span></p>
<div class="sectionHeading" style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 4px; padding-left: 0px; color: #000000; font-size: 12px; font-weight: bold; border-bottom-style: solid; border-bottom-width: 1px; border-color: #bababa;">摘要</div>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">MID（移动互连设备）是 PC 产品系列的一项最新创新，它具有 PC 的所有功能，但功耗却有明显的降低。鉴于 MID 的功能及用途，在设计用户界面（UI）时需要考虑到多方面的因素，以便为用户提供卓越的使用体验。本白皮书从总体上介绍了 MID 的 UI 设计规则。Hildon 用户界面以任务为导向，所以它需要一些特别的处理。本白皮书还介绍了 Hildon UI 设计的已知最佳方案（BKM）。</p>
<div class="sectionHeading" style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 4px; padding-left: 0px; color: #000000; font-size: 12px; font-weight: bold; border-bottom-style: solid; border-bottom-width: 1px; border-color: #bababa;">1. MID 简介</div>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; padding: 0px;"><span style="font-family: Arial, sans-serif;"><span style="line-height: 16px;">MID（移动互连设备）是 PC 产品系列的一项最新创新，它具有 PC 的所有功能，但功耗却有明显的降低。MID 是一种小外形（SFF）设备，它便于携带，可提供 24&#215;7 全天候的数据访问功能。 </span></span><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /><span style="font-family: Arial, sans-serif;"><span style="line-height: 16px;">英特尔一直致力于开发并推广各种技术，以满足 MID 用户的需求。在 MID 的创新过程中，英特尔最重要的一项贡献就是，通过其集成显卡驱动程序英特尔®图形媒体加速器，为用户提供了集成的显卡软件。 </span></span><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /><span style="font-family: Arial, sans-serif;"><span style="line-height: 16px;">MID 一般采用尺寸较小（4.5” – 6”）的高分辨率触摸显示屏，并具有小型的键盘。为了给用户提供类似于 PC 的使用体验，MID 显示屏上的内容必须易于阅读，必须能够使用手指在显示屏上轻松进行操作，这也就是说，操作系统和应用的 UI 必须是高度定制的。<span id="more-469"></span></span></span></p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<div class="sectionHeading" style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 4px; padding-left: 0px; color: #000000; font-size: 12px; font-weight: bold; border-bottom-style: solid; border-bottom-width: 1px; border-color: #bababa;">2. Midinux 概览</div>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">Linux 是一种开源操作系统，它允许在系统级别上进行高度的定制，例如快速启动、快速从待机模式恢复；在应用级别上，它还允许进行 UI 风格及主题方面的定制。 <br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" />Midinux 是首款基于 Linux 的操作系统，它完全支持英特尔 2007 MID 平台。它具有基于 GTK 的移动应用框架，专为 MID 的屏幕尺寸和分辨率而优化。图 1 显示了 MID 应用框架堆栈。 <br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12978" border="0" alt="" width="573" height="411" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 1. MID 应用框架堆栈</strong></p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">2.1 Hildon 概览</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">Hildon 用户界面以及 Maemo 均基于开源组件。Hildon 以 Gnome 桌面使用的工具套件 GTK＋ 为基础，并在原有基础上进行了一些改进，使其更适合于移动设备。首款采用 Hildon UI 风格的产品为 Nokia 770 Internet Tablet。Hildon 用户界面主要以触摸屏操作为基础，这就意味着用户将主要通过手写笔和手指来使用设备。虽然设备上有几个强制性的硬件按钮，用户在大多数时间均通过触摸屏操作设备。Hildon 支持多任务处理，可以同时运行多个应用，并且用户可以在不同应用之间切换。 <br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" />Hildon UI 包含 4 个基本组件：任务导航条、标题区域、状态指示区域以及应用区域。<strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">任务导航条</strong>是位于屏幕上方的全局屏幕元素。任务导航条主要用于启动应用并在不同应用之间进行切换。<strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">标题区域</strong>包含应用的标题，该标题可打开应用特定的菜单。标题区域的右侧包含有最小化和关闭按钮。<strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">状态指示区域</strong>包含各种指示系统状态和行为的图标。状态条程序便位于该区域。<strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">应用区域</strong>由处于正常模式的应用使用。在全屏模式中，所有其它组件均会消失，应用区域会扩展至整个屏幕。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">图 2 显示了 MID 应用 UI 的一般布局。</p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12992" border="0" alt="" width="583" height="332" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 2. MID 应用 UI 布局</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><span style="font-weight: normal; line-height: normal; color: #333333; font-family: Arial, sans-serif;"> </span></strong></p>
<div class="sectionHeading" style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 4px; padding-left: 0px; color: #000000; font-size: 12px; font-weight: bold; border-bottom-style: solid; border-bottom-width: 1px; border-color: #bababa;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3. UI 设计方面的挑战以及有关 MID 的 BKM</strong></div>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">尽管 PC 架构以及全功能 PC 操作系统会降低开发人员将应用从桌面 PC 移植到 MID 的难度，MID 自身的外形仍为应用 UI 的设计提出了许多新的挑战。Hildon 应用框架是一种类似于设备的应用框架，这也给应用 UI 的设计带来了一些难题。</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.1．屏幕尺寸</strong></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">由于 MID 的屏幕尺寸要远远小于传统屏幕尺寸，因此各种图形元素的尺寸就需要特殊处理。开发人员既要避免将按比例缩小的图形元素设计得过小，又要避免尺寸相同的图形元素占用太多的屏幕空间。具体来说，某些文本和图标可能比较难以辨认，屏幕上的按钮和单元可能不便于点击操作，一些游戏窗口可能无法放大到整个屏幕。</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.1.1．文本和图标尺寸</strong></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题</strong>：在移植到 MID 的应用界面上，文本或图标可能会缩小到某个尺寸，这可能使文本或图标变得难以辨认。一个在 15 英寸屏幕上能够正常显示的文本，如果放到 MID 使用的 5 &#8211; 7 英寸的屏幕上，用户将很难看清文本的内容。除了文本的实际字体大小外，聊天和其它文本窗口也将变得过小。如果通过降低字体大小来适应较小的窗口尺寸，那么文本将变得非常难以阅读。</strong></p>
<p><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12994" alt="" width="583" /></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">(a)</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12996" alt="" /></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">(b)</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 3. 适合于阅读的正常文本尺寸 (a) 与未经过合理的字体大小调整的文本 (b)。</strong></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案</strong>：理想情况下，针对 MID 设计的应用程序应尽量避免使用文本，此外，在选择字体时一定要考虑 MID 的屏幕尺寸。同样，图标设计上不应过分依赖于细节信息，这样，即便是在较小的 MID 屏幕上，也可以很容易地区分这些图标。在一些情况下，如果增大文本尺寸会对应用的其它元素造成影响，最佳的解决方案就是允许用户自行调整文本大小，根据他们自身的喜好来选择尺寸。</strong></p>
<p><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.1.2．按钮与其它元素的可点击性</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题</strong>：与文本过小的问题类似，按钮和其它可点击的元素增加了将软件移植到 MID 的复杂性。由于在 PC上使用的是定位功能更加精确的鼠标，而在 MID 中使用的则是手写笔或手指，因此，尽管 MID 的整体界面必须小于标准的 PC 界面，但 MID 界面上的按钮却应比后者更大。即使用户在小心翼翼的情况下或许能够正确选择某个按钮，但这无疑会极大的影响用户体验。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12998" alt="" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 4. 按钮的可点击性。在一个 20 英寸的 PC 显示器上（左），用户可以轻松使用鼠标指针选择一张骨牌。然而，在 5 英寸的 MID 显示屏上（右），选择某个骨牌就变得非常困难，甚至根本无法辨认骨牌上的点数。</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案</strong>：与文本和图标尺寸的问题相同，开发人员应通过使用较大且易于辨认的按钮或其它元素来避免这一问题。各元素之间也必须留有足够的空隙，以避免用户无意中选择了错误的按钮。如果某个文本标签与按钮或其它元素相邻，该标签应该是元素的可点击区域的一部分，使按钮更加易于点击，并且不会占用额外的空间。</p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.1.3．窗口大小</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题：</strong>如果应用窗口使用固定尺寸，而不是自动调整大小以适应整个屏幕，那么屏幕上的某些图像或元素将无法显示。MID 的宽屏一般使用 800&#215;480 或 1024&#215;600 的分辨率，这会使问题更加复杂，因为图像的宽高比必须与标准 PC 所采用的 4:3 的宽高比相匹配。</p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/13000" alt="" /></p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 5. 窗口的可见度。在标准 PC 上（左），用户可以看到整个游戏区域，包括操作界面的信息区域。如果将窗口进行剪切，以适应 MID 更小的屏幕尺寸或其它宽高比（中），则如透明区域显示的那样，部分图像将无法显示出来。如果将图像按比例缩放到 MID 的屏幕尺寸（右），则基本上能看清所有图像，虽然有一定的图像扭曲，但仍在可以接受的范围内。</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案：</strong>对于开发人员来说，解决这个问题的关键就是在开发 MID 用户界面时就应考虑 800&#215;480 和 1024&#215;600 的分辨率，可以缩小整个游戏窗口来适应屏幕，也可对界面进行重新安排，以充分利用宽屏的优势。例如，在某些情况下可提供滚动栏，允许用户手动或自动调整窗口来观看整个屏幕，从而提供可以接受的用户体验。</p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.2．触摸屏</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">MID 使用的是触摸屏而非鼠标，这进一步增加了移植应用的复杂性。对于大多数软件操作而言，触摸屏的作用与鼠标类似，不同之处在于，用户拖动光标时产生的是线性的移动轨迹，而触摸屏产生的则是类似于点击按钮的操作效果。不点击就无法移动光标，以及左击与右击之间的关系也会导致一些问题。</p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.2.1．准确解读触摸屏输入信息</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题：</strong>MID 应用必须能够将用户提供的光标输入理解为一系列的点（等同于一系列的触摸屏点击操作），而不需要线性的移动模式（如同用鼠标移动光标所产生的操作）。在某些应用中（例如第一人称射击游戏），如果需要将图像切换到用户的视角，以使光标始终处于屏幕中央，这种问题就会变得尤为明显。在这种情况下，当用户触摸屏幕时，光标可能会四处随意跳动，而不是移动到用户点触的位置。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案：</strong>如果游戏能够跟踪光标从 A 点到 B 点的移动，那么它应该将其理解为在 A 点和 B 点的两次点击，而不是在 A 点与 B 点之间移动。在 MID 上使用鼠标通常能够解决这个问题，但从用户体验的角度来看，这种解决方法显然不够理想。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><span style="color: #333333; line-height: normal;"> </span></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.2.2．精确的触摸屏映射</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题（窗口分辨率小于实际屏幕尺寸）：</strong>当应用在全屏模式下以小于实际屏幕尺寸的分辨率运行时，游戏会在屏幕中央显示，屏幕两侧将出现一定的空间（比如将 640&#215;480 的窗口在 800&#215;480 的屏幕上居中显示，或将 800&#215;600 的窗口在 1024&#215;600 的屏幕上居中显示时，屏幕两侧会留有黑色条形区域），当将整个触摸屏界面映射到相对较小的显示区域时，即会出现错误映射的问题。这种错误映射会导致界面对用户操作产生错误的响应，比如一个按钮的可点击区域与屏幕上显示的按钮位置不符。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/13002" alt="" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 6. 将游戏窗口居中显示时，屏幕两侧会留有空白区域，读取屏幕点触操作的游戏逻辑不能将整个屏幕区域映射到游戏窗口上。这种错误映射的结果就是，当点触屏幕上的一个位置时（黄色箭头指向的位置），而游戏逻辑却认为点触操作发生在另一个位置（红色星号的位置）。</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案：</strong>在将应用居中显示，屏幕两侧留有空白区域时，只要映射逻辑能够将两侧的空白区域识别为屏幕本身的一部分，就不会出现错误映射的问题。通过这种调整，屏幕触摸会准确地映射到触摸位置。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题（窗口分辨率大于实际屏幕尺寸）：</strong>如果窗口的纵向尺寸大于屏幕的实际尺寸，则可能发生纵向的错误映射问题。在这种情况下，触摸屏通常会映射到整个游戏窗口，而不是可显示的部分。这样，就会发生错误响应点触操作的现象。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/13004" alt="" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 7. 当游戏窗口在纵向上被部分剪切时（半透明区域），也同样会导致错误映射的问题，即点触一个位置（黄色箭头指向的位置），而游戏逻辑却认为点触发生在另一个位置（红色星号的位置）。</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案：</strong>开发人员应确保操作系统将触摸屏准确地映射到屏幕的可视部分（包括游戏未使用的部分），但不应包括游戏窗口中不可视的部分。另一个解决方案则是，开发人员可将 800&#215;480 和 1024&#215;600 分辨率作为用户可配置的选项。在某些情况下，可以自动调整窗口大小，使其填充整个屏幕，前提是这种调整所产生的屏幕扭曲在可以接受的范围内。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.2.3．悬停显示效果的替代方案</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题：</strong>许多游戏都具备悬停显示功能，用户在游戏中将光标放在某个对象或某个位置之上时（无需点击），即可触发信息提示或工具选项。该功能通常用来为新手玩家提供指导，但是它与触摸屏并不兼容，因为触摸屏无法在不点击的情况下移动光标。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/13006" alt="" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">图 8. 悬停显示效果。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案：</strong>由于悬停显示功能与目前的 MID 硬件不兼容，开发人员必须选择其它事件来触发动画或工具提示。例如，当玩家到达与动画对象或工具提示对象相关的游戏环节时，便能触发动画或工具提示。另一种方法则是设计一个界面，借助某种手段临时将点击事件解释为鼠标悬停事件，例如按住某个按钮，便可点击触摸屏移动光标，而不会产生点击操作。</p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.2.4．兼容右击功能</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题：</strong>在典型的 MID 触摸屏上，用户通过在屏幕上进行稍长时间的点击来启用右键功能，但这可能会导致用户意外进行左击操作。此外，无法同时实现左击和右击操作。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案：</strong>开发人员应提供其它的用户交互来代替右击功能，如在屏幕上使用双击或添加可点击的控制按钮。游戏开发人员也可要求用户使用外接鼠标或其它指点设备，虽然这会影响用户体验。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.3．外形</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">许多问题都直接来自于 MID 与标准 PC 的硬件差异。例如，与 PC 不同，MID 可能具有触摸屏、操纵杆、用户可定义的按钮和“菜单”按钮等专用按钮，但通常不具备键盘或 CD-ROM 光驱。虽然可以添加键盘、光驱或其它外设，但这会降低 MID 的便携性。此外，不同型号的 MID 会在其设计中包含不同的元素，因此每种设备在外形方面的局限性会有所不同。这种变化通常要求开发人员在按照核心要求设计应用时，重点考虑硬件特性的最低水平。</p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.3.1．尽量减少命令输入</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题：</strong>相对于标准 PC 提供的键盘和鼠标而言，MID 的外形对输入方式造成了许多限制。即使某些游戏是使用游戏手柄在电脑上操纵的，但是它还需要使用手柄上的许多其它功能按钮，而这在 MID 上是无法实现的。另外，如果某个游戏将键盘的快捷键作为游戏的主要操作途径，则 MID 也会存在一些问题。然而，主要由鼠标进行操作的游戏则不受 MID 外形的影响。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案：</strong>开发人员应减少进行游戏所需的命令数量，以此解决 MID 输入方式有限的问题。但是，更灵活的解决方案则是创建屏幕按钮。特别是提供那些与环境相关的按钮，仅在游戏需要时才会出现，这就提供了一种开放的解决方案，有效解决输入方面的问题。</p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">3.3.2．解决键盘问题</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">问题：</strong>除发出命令外，许多游戏还要求使用键盘来输入信息，如为人物命名、创建人物资料、保存游戏或在线聊天等。通常，大多数游戏在登录时都需要使用键盘输入人物名称，但在其它时刻都不需要使用键盘。某些游戏还要求玩家使用键盘来命名保存的游戏。在许多情况下，屏幕键盘不会出现在游戏界面上，因此无法解决这些问题。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">最佳方案：</strong>开发人员在设计游戏时应避免其与屏幕键盘产生冲突（例如，不将游戏默认设置为全屏模式），或者将游戏设计为仅在需要时，才会在界面上提供屏幕键盘。有一种简单的方法可用来减少键盘输入，即提供诸如人物名称、保存游戏名称等文本字符串的默认值，并允许使用屏幕选项来选择这些值。这些文本字符串的其它值也可通过添加界面按钮来提供，使用该界面按钮可随机在开发人员创建的人物名单中选择新值。也可根据玩家游戏结束时的屏幕截图，以及日期与时戳来识别保存的游戏。由于聊天功能通常不是游戏的核心内容，所以在 MID 中一般都会禁用该功能，并且不会对用户体验造成影响。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12980" alt="" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 9. 全屏模式下显示的屏幕键盘。</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><span style="font-weight: normal; line-height: normal; color: #333333; font-family: Arial, sans-serif;"> </span></strong></p>
<div class="sectionheading" style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">4. Hildon UI 设计的 BKM</strong></div>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">Hildon 用户界面是以任务为导向的，这就意味着它可以实现与专用和优化的应用和功能集类似的普通任务。例如，仅仅通过 2 次点击就可以打开书签中保存的网站，或发送新的电子邮件。</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">PC 所采用的基于鼠标和键盘的交互模式与 Hildon 交互模式有许多区别，在设计用户界面时必须充分考虑这些因素。当用户在行走时，要准确地点触某个屏幕按钮可能会比较困难。用户的手还可能会挡住屏幕的部分区域（UI 控制按钮或内容等）。因此要优化 UI 设计，仅使用少数几个操作即可完成一项任务，避免给用户带来不必要的麻烦。UI 上的任务流应遵循标准的操作流程，比如从左到右、从上到下，而非强迫用户在各个界面进行操作。</strong></p>
<p><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">4.1 Hildonized 与 Un-Hildonized UI</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">由于 MID 的应用框架以 GTK 为基础，这就意味着以 GTK 为基础编写的应用所需的移植工作会相对较少，但是 Hildon UI 的各种工具条按钮会更大一些，方便用户使用手指进行操作。以下 2 个截屏显示了经过与未经过 Hildon UI 改进的两种界面。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12981" alt="" width="573" height="348" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 10. 未经过 Hildon 改进的 UI</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12982" alt="" width="573" height="349" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 11. 经过 Hildon 改进的 UI</strong></p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">4.2 菜单</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">菜单命令应根据它们的重要性和功能关系进行安排。如果有许多命令，可将功能比较相近的命令分组到一个子菜单，在第一级菜单上仅使用子菜单标题，比如：&#8217;文件&#8217;-&gt;&#8217;新建&#8217; 以及 &#8216;文件&#8217;-&gt;&#8217;保存&#8217;。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">在 Hildon UI 中，菜单项是纵向排列的，这与 PC 环境中横向排列方式不同。最常用的命令或子菜单应位于菜单的前几级，不太重要的可以设计在下方，以便于用户操作。使用分隔符在菜单内对相关的菜单项进行分组。在纵向上，应避免超过 7 行命令或子菜单，在横向上应避免超过 3 列菜单。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">当前无法使用的命令应呈灰色显示。Hildon 的一项特有功能就是它会对选择灰色菜单项的操作进行响应，通常会弹出一条信息，解释为什么该功能无法使用，比如“没有可以撤销的内容”。这样，用户便可以按正确的方法使用应用。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">对于第一个应用菜单标题，应使用一个可以反映应用功能的词语，比如“文档”、“图像”、“卡片”，而不是“文件”。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12983" alt="" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 12. Midinux 中的菜单。</strong></p>
<p><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">4.3 工具条</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">工具条应能使用户轻松地访问应用的常用或重要功能。以下是设计和使用工具条的一些规则。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">工具条中项目的数量取决于每个项的宽度以及是否会显示任务导航条（从普通屏幕切换到全屏幕）。</p>
<ul style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 16px; line-height: 16px; padding: 0px;">
<li style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;">如果应用使用多个视图，则可以考虑改变并优化每个视图中工具条上显示的功能。</li>
<li style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;">应该为应用的基本功能提供一些最常见的图标。</li>
<li style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;">工具条图标必须直观易懂，能够直接反映出它们代表的操作。图标形象应从日常生活中取材，以便用户将其与设备上的任务联系起来。</li>
<li style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;">应用菜单上应包含所有显示的命令。</li>
<li style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;">由于屏幕空间有限，应该提供在菜单中隐藏某个工具条的功能。</li>
<li style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;">必要时，应使用分隔符标记分组图标。</li>
<li style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;">应避免在工具条上使用需要本地化的文本，因为不同的文本长度会打乱工具条的布局。可能的话，应尽量使用图标来代替文本，以节省工具条空间。</li>
</ul>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12985" alt="" height="73" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 13. Midinux 中的工具条。（浏览器、播放器、E-mail、GPS、Office 工具、电话簿…）</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><span style="font-weight: normal; line-height: normal; color: #333333; font-family: Arial, sans-serif;"> </span></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">4.4 对话框</strong></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">可使用各种对话框来指引用户完成某个任务。应尽量使任务变得简单，避免设置一长串的对话框。对于那些比较复杂的任务，可以设置一个新的窗口。如果该任务需要来自其它应用的信息，并且没有将信息作为预设的列表提供，则建议将其作为一个新窗口实施，而非对话框。对话框显示在应用区域的中央</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12986" alt="" width="573" height="303" /></strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 14. office工具中的对话框。</strong></strong></p>
<p><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">4.5 通知</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">通知用于向用户反馈信息。有 2 种类型的通知：消息框或信息条。 <br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" />消息框一般显示在屏幕的中央并包含简短的信息，同时提供按钮供用户作出响应。在用户对注释中的信息进行确认之前，应用处于暂停状态。<br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" />信息条不需要用户执行任何操作。它们显示在应用区域的右上角。 <br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" />图 15 显示了消息框和信息条的差别。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">
<p></strong></strong></strong></p>
<table style="font-family: arial, sans-serif; border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; padding: 0px; margin: 0px;" border="0" cellspacing="0" cellpadding="0" width="410">
<tbody style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">
<tr style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">
<td style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;" width="205" align="left"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12988" alt="" width="201" height="88" /></td>
<td style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;" width="20"></td>
<td style="font-family: Arial, sans-serif; padding: 0px; margin: 0px;"><img style="font-family: arial, sans-serif; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://software.intel.com/file/12990" alt="" width="180" height="50" /></td>
</tr>
</tbody>
</table>
<p><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;"></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><strong style="font-family: arial, sans-serif; padding: 0px; margin: 0px;">图 15. 消息框（左）和信息条（右）</strong></p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">
<div class="sectionHeading" style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 4px; padding-left: 0px; color: #000000; font-size: 12px; font-weight: bold; border-bottom-style: solid; border-bottom-width: 1px; border-color: #bababa;">总结</div>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">本文针对 MID 的 UI 设计提出了一些主要问题，并针对屏幕尺寸、触摸屏以及外形方面的因素提供了 UI 设计的方案。由于 Hildon 用户界面是以任务为导向的，所以它需要一些特别的考虑。本白皮书还提供了 Hildon UI 设计的已知最佳方案（BKM）。</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">
<div class="sectionHeading" style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 4px; padding-left: 0px; color: #000000; font-size: 12px; font-weight: bold; border-bottom-style: solid; border-bottom-width: 1px; border-color: #bababa;">参考文档</div>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;">[1] Best Practices in Game Design for the Ultra-Mobile PC. Matt Gillespie, Michael Finkel and Victoria Bailey<br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" />[2] Hildon User Interface Style Guide Summary Version 1.1. <br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" /><br style="font-family: arial, sans-serif; padding: 0px; margin: 0px;" />[3] MID Application UI Design Guide.</p>
<p style="font-family: Arial, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: normal; font-size: 1em; line-height: 16px; padding: 0px;"><a href="http://software.intel.com/zh-cn/articles/best-known-methods-of-ui-design-for-mid/">http://software.intel.com/zh-cn/articles/best-known-methods-of-ui-design-for-mid/</a></p>
<p></strong></p>
<p></strong></p>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=469</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android build system 分析之 envsetup.sh</title>
		<link>http://artskill.cn/blog/?p=465</link>
		<comments>http://artskill.cn/blog/?p=465#comments</comments>
		<pubDate>Fri, 03 Dec 2010 16:53:40 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=465</guid>
		<description><![CDATA[每次进入到android source目录后的第一件事恐怕就是先执行. build/envsetup.sh，完成一些命令的初始化，今天主要分析envsetup.sh。 1. 命令-也就是envsetup.sh中的函数 function help() 　　　　　　　　　　　　　　　　　　# 显示帮助信息 function get_abs_build_var()　　　　　　　　　　　# 获取绝对变量 function get_build_var()　　　　　　　　　　　　　 # 获取绝对变量 function check_product()　　　　　　　　　　　　　# 检查product function check_variant()　　　　　　　　　　　　　 # 检查变量 function setpaths()　　　　　　　　　　　　　　　　# 设置文件路径 function printconfig()　　　　　　　　　　　　　　　# 打印配置 function set_stuff_for_environment()　　　　　　  # 设置环境变量 function set_sequence_number()　　　　　　　　  # 设置序号 function settitle()　　　　　　　　　　　　　　　　  # 设置标题 &#8230; <a href="http://artskill.cn/blog/?p=465">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>每次进入到android source目录后的第一件事恐怕就是先执行. build/envsetup.sh，完成一些命令的初始化，今天主要分析envsetup.sh。</p>
<p>1. 命令-也就是envsetup.sh中的函数</p>
<p>function help() 　　　　　　　　　　　　　　　　　　# 显示帮助信息<br />
function get_abs_build_var()　　　　　　　　　　　# 获取绝对变量<br />
function get_build_var()　　　　　　　　　　　　　 # 获取绝对变量<br />
function check_product()　　　　　　　　　　　　　# 检查product<br />
function check_variant()　　　　　　　　　　　　　 # 检查变量<br />
function setpaths()　　　　　　　　　　　　　　　　# 设置文件路径<br />
function printconfig()　　　　　　　　　　　　　　　# 打印配置<br />
function set_stuff_for_environment()　　　　　　  # 设置环境变量<br />
function set_sequence_number()　　　　　　　　  # 设置序号<br />
function settitle()　　　　　　　　　　　　　　　　  # 设置标题<br />
function choosetype()　　　　　　　　　　　　　　 # 设置type<br />
function chooseproduct()　　　　　　　　　　　　  # 设置product<br />
function choosevariant()　　　　　　　　　　　　   # 设置variant<br />
function tapas()　　　　　　　　　　　　　　　　    # 功能同choosecombo<br />
function choosecombo()　　　　　　　　　　　　　# 设置编译参数<br />
function add_lunch_combo()　　　　　　　　　　　# 添加lunch项目<br />
function print_lunch_menu()　　　　　　　　　　　# 打印lunch列表<br />
function lunch()　　　　　　　　　　　　　　　　　 # 配置lunch<span id="more-465"></span><br />
function m()　　　　　　　　　　　　　　　　　　　# make from top<br />
function findmakefile()　　　　　　　　　　　　　　# 查找makefile<br />
function mm()　　　　　　　　　　　　　　　　　　# make from current directory<br />
function mmm()　　　　　　　　　　　　　　　　　# make the supplied directories<br />
function croot()　　　　　　　　　　　　　　　　　# 回到根目录<br />
function cproj()<br />
function pid()<br />
function systemstack()<br />
function gdbclient()<br />
function jgrep()　　　　　　　　　　　　　　　　　# 查找java文件<br />
function cgrep()　　　　　　　　　　　　　　　　  # 查找c/cpp文件<br />
function resgrep()<br />
function tracedmdump()<br />
function runhat()<br />
function getbugreports()<br />
function startviewserver()<br />
function stopviewserver()<br />
function isviewserverstarted()<br />
function smoketest()<br />
function runtest()<br />
function godir () 　　　　　　　　　　　　　　　　 # 跳到指定目录</p>
<p># add the default one here<br />
add_lunch_combo generic-eng</p>
<p># Execute the contents of any vendorsetup.sh files we can find.<br />
for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/build/vendorsetup.sh 2&gt; /dev/null`<br />
do<br />
echo &#8220;including $f&#8221;<br />
. $f<br />
done</p>
<p>2. lunch命令</p>
<p>已经有人分析过了，直接搬过来：</p>
<p><a href="http://www.lupaworld.com/home.php?mod=space&amp;uid=131820&amp;do=blog&amp;id=149462">http://www.lupaworld.com/home.php?mod=space&amp;uid=131820&amp;do=blog&amp;id=149462</a></p>
<p>这里说一下check_product的流程：</p>
<p>待续</p>
<p>3. choosecombo</p>
<p>待续</p>
<p><a href="http://www.cnblogs.com/cnhome/archive/2010/07/24/1784382.html">http://www.cnblogs.com/cnhome/archive/2010/07/24/1784382.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=465</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android事件处理分析</title>
		<link>http://artskill.cn/blog/?p=462</link>
		<comments>http://artskill.cn/blog/?p=462#comments</comments>
		<pubDate>Fri, 03 Dec 2010 16:51:14 +0000</pubDate>
		<dc:creator>搜集者</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://artskill.cn/blog/?p=462</guid>
		<description><![CDATA[按键事件 对于按键事件，调用mDevices-&#62;layoutMap-&#62;map进行映射。映射实际是由 KeyLayoutMap::map完成的，KeyLayoutMap类里读取配置文件qwerty.kl，由配置 文件 qwerty.kl 决定键值的映射关系。你可以通过修 改./development/emulator/keymaps/qwerty.kl来改变键值的映射关系。 JNI 函数 在frameworks/base/services/jni/com_android_server_KeyInputQueue.cpp文 件中，向 JAVA提供了函数android_server_KeyInputQueue_readEvent，用于读 取输入设备事件。  C代码： static jboolean android_server_KeyInputQueue_readEvent(JNIEnv* env, jobject clazz, jobject event) { gLock.lock(); sp hub = gHub; if (hub == NULL) { hub = new EventHub; gHub = hub; } gLock.unlock(); int32_t deviceId; int32_t type; int32_t scancode, keycode; &#8230; <a href="http://artskill.cn/blog/?p=462">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000; font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; line-height: 18px; font-size: 12px;"> </span></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;"><span style="color: red; font-size: 14pt;"><strong>按键事件</strong></span></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">对于按键事件，调用mDevices-&gt;layoutMap-&gt;map进行映射。映射实际是由 KeyLayoutMap::map完成的，KeyLayoutMap类里读取配置文件qwerty.kl，由配置 文件 qwerty.kl 决定键值的映射关系。你可以通过修 改./development/emulator/keymaps/qwerty.kl来改变键值的映射关系。</p>
<p>JNI 函数<br />
在frameworks/base/services/jni/com_android_server_KeyInputQueue.cpp文 件中，向 JAVA提供了函数android_server_KeyInputQueue_readEvent，用于读 取输入设备事件。 <span id="more-462"></span><br />
C代码：</p>
<div class="cnblogs_code" style="background-color: #f5f5f5; font-family: 'Courier New'; font-size: 13px; word-break: break-all; overflow-x: auto; overflow-y: auto; padding: 5px; border: 1px solid #cccccc;"><img id="code_img_opened_e1c2dd92-a008-46f9-b1d2-d4f44baa7157" class="code_img_opened" style="vertical-align: middle; padding-right: 5px; border: 0px initial initial;" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /></p>
<div id="cnblogs_code_open_e1c2dd92-a008-46f9-b1d2-d4f44baa7157">
<div><span style="font-family: 'Courier New'; color: #0000ff;">static</span><span style="font-family: 'Courier New'; color: #000000;"> jboolean android_server_KeyInputQueue_readEvent(JNIEnv</span><span style="font-family: 'Courier New'; color: #000000;">*</span><span style="font-family: 'Courier New'; color: #000000;"> env, jobject clazz,<br />
jobject </span><span style="font-family: 'Courier New'; color: #0000ff;">event</span><span style="font-family: 'Courier New'; color: #000000;">)<br />
{<br />
gLock.</span><span style="font-family: 'Courier New'; color: #0000ff;">lock</span><span style="font-family: 'Courier New'; color: #000000;">();<br />
sp hub </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> gHub;<br />
</span><span style="font-family: 'Courier New'; color: #0000ff;">if</span><span style="font-family: 'Courier New'; color: #000000;"> (hub </span><span style="font-family: 'Courier New'; color: #000000;">==</span><span style="font-family: 'Courier New'; color: #000000;"> NULL) {<br />
hub </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">new</span><span style="font-family: 'Courier New'; color: #000000;"> EventHub;<br />
gHub </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> hub;<br />
}<br />
gLock.unlock();<br />
int32_t deviceId;<br />
int32_t type;<br />
int32_t scancode, keycode;<br />
uint32_t flags;<br />
int32_t value;<br />
nsecs_t when;<br />
</span><span style="font-family: 'Courier New'; color: #0000ff;">bool</span><span style="font-family: 'Courier New'; color: #000000;"> res </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> hub</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">getEvent(</span><span style="font-family: 'Courier New'; color: #000000;">&amp;</span><span style="font-family: 'Courier New'; color: #000000;">deviceId, </span><span style="font-family: 'Courier New'; color: #000000;">&amp;</span><span style="font-family: 'Courier New'; color: #000000;">type, </span><span style="font-family: 'Courier New'; color: #000000;">&amp;</span><span style="font-family: 'Courier New'; color: #000000;">scancode, </span><span style="font-family: 'Courier New'; color: #000000;">&amp;</span><span style="font-family: 'Courier New'; color: #000000;">keycode,<br />
</span><span style="font-family: 'Courier New'; color: #000000;">&amp;</span><span style="font-family: 'Courier New'; color: #000000;">flags, </span><span style="font-family: 'Courier New'; color: #000000;">&amp;</span><span style="font-family: 'Courier New'; color: #000000;">value, </span><span style="font-family: 'Courier New'; color: #000000;">&amp;</span><span style="font-family: 'Courier New'; color: #000000;">when);<br />
env</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">SetIntField(</span><span style="font-family: 'Courier New'; color: #0000ff;">event</span><span style="font-family: 'Courier New'; color: #000000;">, gInputOffsets.mDeviceId, (jint)deviceId);<br />
env</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">SetIntField(</span><span style="font-family: 'Courier New'; color: #0000ff;">event</span><span style="font-family: 'Courier New'; color: #000000;">, gInputOffsets.mType, (jint)type);<br />
env</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">SetIntField(</span><span style="font-family: 'Courier New'; color: #0000ff;">event</span><span style="font-family: 'Courier New'; color: #000000;">, gInputOffsets.mScancode, (jint)scancode);<br />
env</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">SetIntField(</span><span style="font-family: 'Courier New'; color: #0000ff;">event</span><span style="font-family: 'Courier New'; color: #000000;">, gInputOffsets.mKeycode, (jint)keycode);<br />
env</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">SetIntField(</span><span style="font-family: 'Courier New'; color: #0000ff;">event</span><span style="font-family: 'Courier New'; color: #000000;">, gInputOffsets.mFlags, (jint)flags);<br />
env</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">SetIntField(</span><span style="font-family: 'Courier New'; color: #0000ff;">event</span><span style="font-family: 'Courier New'; color: #000000;">, gInputOffsets.mValue, value);<br />
env</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">SetLongField(</span><span style="font-family: 'Courier New'; color: #0000ff;">event</span><span style="font-family: 'Courier New'; color: #000000;">, gInputOffsets.mWhen,<br />
(jlong)(nanoseconds_to_milliseconds(when)));<br />
</span><span style="font-family: 'Courier New'; color: #0000ff;">return</span><span style="font-family: 'Courier New'; color: #000000;"> res;<br />
}</span></div>
</div>
</div>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">readEvent调用hub-&gt;getEvent读了取事件，然后转换成JAVA的结构。</p>
<p>事件中转线程<br />
在frameworks/base/services/java/com/android/server/KeyInputQueue.java 里创建了一个线程，它循环的读取事件，然后把事件放入事件队列里。<br />
Java代码:</p>
<div class="cnblogs_code" style="background-color: #f5f5f5; font-family: 'Courier New'; font-size: 13px; word-break: break-all; overflow-x: auto; overflow-y: auto; padding: 5px; border: 1px solid #cccccc;"><img id="code_img_opened_50773e52-df66-4163-b0ae-72b0a844ceed" class="code_img_opened" style="vertical-align: middle; padding-right: 5px; border: 0px initial initial;" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /></p>
<div id="cnblogs_code_open_50773e52-df66-4163-b0ae-72b0a844ceed"><span style="font-family: 'Courier New'; color: #000000;"></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">Thread mThread = new Thread(&#8220;InputDeviceReader&#8221;) {<br />
public void run() {<br />
android.os.Process.setThreadPriority(<br />
android.os.Process.THREAD_PRIORITY_URGENT_DISPLAY);</p>
<p>try {<br />
RawInputEvent ev = new RawInputEvent();<br />
while (true) {<br />
InputDevice di;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">// block, doesn&#8217;t release the monitor<br />
readEvent(ev);</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">boolean send = false;<br />
boolean configChanged = false;</p>
<p>if (false) {<br />
Log.i(TAG, &#8220;Input event: dev=0x&#8221;<br />
+ Integer.toHexString(ev.deviceId)<br />
+ &#8221; type=0x&#8221; + Integer.toHexString(ev.type)<br />
+ &#8221; scancode=&#8221; + ev.scancode<br />
+ &#8221; keycode=&#8221; + ev.keycode<br />
+ &#8221; value=&#8221; + ev.value);<br />
}</p>
<p>if (ev.type == RawInputEvent.EV_DEVICE_ADDED) {<br />
synchronized (mFirst) {<br />
di = newInputDevice(ev.deviceId);<br />
mDevices.put(ev.deviceId, di);<br />
configChanged = true;<br />
}<br />
}</p>
<p></span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> &#8230;&#8230;</span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> }</span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> }</span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> }</span></div>
<div><span style="font-family: 'Courier New'; color: #000000;">};</span></div>
</div>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;"><span style="color: red;"><strong><span style="font-size: small;">按键、触摸屏流、轨迹球程分析</span></strong></span></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">输入事件分发线程<br />
在frameworks/base/services/java/com/android/server/WindowManagerService.java里创建了一个输入事件分发线程，它负责把事件分发到相应的窗口上去。</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">
按键触摸屏流程分析:</p>
<p>WindowManagerService类的构造函数</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">WindowManagerService()</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">mQueue = new KeyQ();</p>
<p>因为 WindowManagerService.java (frameworks\base\services\java\com\android\server)中有：</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">private class KeyQ extends KeyInputQueue implements KeyInputQueue.FilterCallback</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">KeyQ 是抽象类 KeyInputQueue 的实现，所以 new KeyQ类的时候实际上在 KeyInputQueue 类中创建了一个线程 InputDeviceReader 专门用来从设备读取按键事件，</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">代码：<br />
<img id="code_img_opened_62132c69-fd85-40d9-94ab-bfc6127ab80d" class="code_img_opened" style="vertical-align: middle; padding-right: 5px; border: 0px initial initial;" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /></p>
<div class="cnblogs_code" style="background-color: #f5f5f5; font-family: 'Courier New'; font-size: 13px; word-break: break-all; overflow-x: auto; overflow-y: auto; padding: 5px; border: 1px solid #cccccc;">
<div id="cnblogs_code_open_62132c69-fd85-40d9-94ab-bfc6127ab80d">
<div><span style="font-family: 'Courier New'; color: #000000;">Thread mThread </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">new</span><span style="font-family: 'Courier New'; color: #000000;"> Thread(</span><span style="font-family: 'Courier New'; color: #000000;">&#8220;</span><span style="font-family: 'Courier New'; color: #000000;">InputDeviceReader</span><span style="font-family: 'Courier New'; color: #000000;">&#8220;</span><span style="font-family: 'Courier New'; color: #000000;">) {</p>
<p></span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">void</span><span style="font-family: 'Courier New'; color: #000000;"> run() {</p>
<p>// 在循环中调用：</span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> readEvent(ev);<br />
&#8230;<br />
send </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> preprocessEvent(di, ev);<br />
</span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> </span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> //实际调用的是 KeyQ 类的 preprocessEvent 函数<br />
&#8230;<br />
</span><span style="font-family: 'Courier New'; color: #0000ff;">int</span><span style="font-family: 'Courier New'; color: #000000;"> keycode </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> rotateKeyCodeLocked(ev.keycode);<br />
</span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> </span></div>
<div><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">int</span><span style="font-family: 'Courier New'; color: #000000;">[] map </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> mKeyRotationMap;</p>
<p></span><span style="font-family: 'Courier New'; color: #0000ff;">for</span><span style="font-family: 'Courier New'; color: #000000;"> (</span><span style="font-family: 'Courier New'; color: #0000ff;">int</span><span style="font-family: 'Courier New'; color: #000000;"> i</span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;">0</span><span style="font-family: 'Courier New'; color: #000000;">; i</span><span style="font-family: 'Courier New'; color: #000000;">&lt;</span><span style="font-family: 'Courier New'; color: #000000;">N; i</span><span style="font-family: 'Courier New'; color: #000000;">+=</span><span style="font-family: 'Courier New'; color: #000000;">2</span><span style="font-family: 'Courier New'; color: #000000;">) {</p>
<p></span><span style="font-family: 'Courier New'; color: #0000ff;">if</span><span style="font-family: 'Courier New'; color: #000000;"> (map </span><span style="font-family: 'Courier New'; color: #000000;">==</span><span style="font-family: 'Courier New'; color: #000000;"> keyCode)</p>
<p></span><span style="font-family: 'Courier New'; color: #0000ff;">return</span><span style="font-family: 'Courier New'; color: #000000;"> map[i</span><span style="font-family: 'Courier New'; color: #000000;">+</span><span style="font-family: 'Courier New'; color: #000000;">1</span><span style="font-family: 'Courier New'; color: #000000;">];</p>
<p>} </span><span style="font-family: 'Courier New'; color: #008000;">//</span><span style="font-family: 'Courier New'; color: #008000;"> </span><span style="font-family: 'Courier New'; color: #008000;"><br />
</span><span style="font-family: 'Courier New'; color: #000000;"><br />
addLocked(di, curTime, ev.flags,RawInputEvent.CLASS_KEYBOARD,<br />
newKeyEvent(di, di.mDownTime, curTime, down,keycode, </span><span style="font-family: 'Courier New'; color: #000000;">0</span><span style="font-family: 'Courier New'; color: #000000;">, scancode,&#8230;));</p>
<p>QueuedEvent ev </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> obtainLocked(device, when, flags, classType, event);<br />
}<br />
};</p>
<p></span></div>
</div>
</div>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">readEvent() 实际上调用的是 com_android_server_KeyInputQueue.cpp (frameworks\base\services\jni)中的</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">static jboolean android_server_KeyInputQueue_readEvent(JNIEnv* env, jobject clazz,jobject event) 来读取事件，</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">bool res = hub-&gt;getEvent(&amp;deviceId, &amp;type, &amp;scancode, &amp;keycode,&amp;flags, &amp;value, &amp;when)调用的是EventHub.cpp (frameworks\base\libs\ui)中的：</p>
<p>bool EventHub::getEvent (int32_t* outDeviceId, int32_t* outType,</p>
<p>int32_t* outScancode, int32_t* outKeycode, uint32_t *outFlags,</p>
<p>int32_t* outValue, nsecs_t* outWhen)</p>
<p>在函数中调用了读设备操作：res = read(mFDs.fd, &amp;iev, sizeof(iev));</p>
<p>在构造函数 WindowManagerService()调用 new KeyQ() 以后接着调用了：</p>
<p>mInputThread = new InputDispatcherThread();<br />
&#8230;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">mInputThread.start();</p>
<p>来启动一个线程 InputDispatcherThread</p>
<p>run()<br />
process();<br />
QueuedEvent ev = mQueue.getEvent(&#8230;)</p>
<p>因为WindowManagerService类中： final KeyQ mQueue;</p>
<p>所以实际上 InputDispatcherThread 线程实际上从 KeyQ 的事件队列中读取按键事件，在process() 方法中进行处理事件。</p>
<p>switch (ev.classType)<br />
case RawInputEvent.CLASS_KEYBOARD:<br />
&#8230;<br />
dispatchKey((KeyEvent)ev.event, 0, 0);<br />
mQueue.recycleEvent(ev);<br />
break;<br />
case RawInputEvent.CLASS_TOUCHSCREEN:<br />
//Log.i(TAG, &#8220;Read next event &#8221; + ev);<br />
dispatchPointer(ev, (MotionEvent)ev.event, 0, 0);<br />
break;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">case RawInputEvent.CLASS_TRACKBALL:<br />
dispatchTrackball(ev, (MotionEvent)ev.event, 0, 0);<br />
break;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">===============================================================</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">补充一些内容：</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">在写程序时，需要捕获KEYCODE_HOME、KEYCODE_ENDCALL、KEYCODE_POWER这几个按键，但是这几个按键系统做了特殊处理，</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">在进行dispatch之前做了一些操作，HOME除了Keygaurd之外，不分发给任何其他APP，ENDCALL和POWER也类似，所以需要我们系统</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">处理之前进行处理。</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">我的做法是自己定义一个FLAG，在自己的程序中添加此FLAG，然后在WindowManagerServices.java中获取当前窗口的FLAG属性，如果是我</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">们自己设置的那个FLAG，则不进行特殊处理，直接分发按键消息到我们的APP当中，由APP自己处理。</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">这部分代码最好添加在</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">@Override<br />
boolean preprocessEvent(InputDevice device, RawInputEvent event)</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">方法中，这个方法是KeyInputQueue中的一个虚函数，在处理按键事件之前的一个“预处理”。</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;"><span style="color: #ff0000;">PS:对HOME键的处理好像必需要修改PhoneWindowManager.java中的interceptKeyTi方法，具体可以参考对KeyGuard程序的处理。</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">===============================================================</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;"><span style="color: red; font-size: 14pt;"><strong> </strong></span></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;"><span style="color: red; font-size: 14pt;"><strong></strong></span></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;"><span style="color: red; font-size: 14pt;"><strong>系统底层事件处理过程</strong></span></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;"><strong></strong><br />
在系统启动后，android 会通过</p>
<p>static const char *device_path = &#8220;/dev/input&#8221;;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">bool EventHub::penPlatformInput(void)</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">res = scan_dir(device_path);</p>
<p>通过下面的函数打开设备。
</p>
<div class="cnblogs_code" style="background-color: #f5f5f5; font-family: 'Courier New'; font-size: 13px; word-break: break-all; overflow-x: auto; overflow-y: auto; padding: 5px; border: 1px solid #cccccc;"><img id="code_img_opened_e7dc8805-ae8e-4728-a41b-70b82835c742" class="code_img_opened" style="vertical-align: middle; padding-right: 5px; border: 0px initial initial;" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /></p>
<div id="cnblogs_code_open_e7dc8805-ae8e-4728-a41b-70b82835c742">
<div><span style="font-family: 'Courier New'; color: #0000ff;">int</span><span style="font-family: 'Courier New'; color: #000000;"> EventHub::pen_device(</span><span style="font-family: 'Courier New'; color: #0000ff;">const</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">char</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">*</span><span style="font-family: 'Courier New'; color: #000000;">deviceName)<br />
{<br />
&#8230;<br />
fd </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> open(deviceName, O_RDWR);<br />
&#8230;<br />
mFDs[mFDCount].fd </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> fd;<br />
mFDs[mFDCount].events </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> POLLIN;<br />
&#8230;<br />
ioctl(mFDs[mFDCount].fd, EVIOCGNAME(</span><span style="font-family: 'Courier New'; color: #0000ff;">sizeof</span><span style="font-family: 'Courier New'; color: #000000;">(devname)</span><span style="font-family: 'Courier New'; color: #000000;">-</span><span style="font-family: 'Courier New'; color: #800080;">1</span><span style="font-family: 'Courier New'; color: #000000;">), devname);<br />
&#8230;<br />
</span><span style="font-family: 'Courier New'; color: #0000ff;">const</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">char</span><span style="font-family: 'Courier New'; color: #000000;">*</span><span style="font-family: 'Courier New'; color: #000000;"> root </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> getenv(</span><span style="font-family: 'Courier New'; color: #800000;">&#8220;</span><span style="font-family: 'Courier New'; color: #800000;">ANDROID_ROOT</span><span style="font-family: 'Courier New'; color: #800000;">&#8220;</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
snprintf(keylayoutFilename, </span><span style="font-family: 'Courier New'; color: #0000ff;">sizeof</span><span style="font-family: 'Courier New'; color: #000000;">(keylayoutFilename),<br />
</span><span style="font-family: 'Courier New'; color: #800000;">&#8220;</span><span style="font-family: 'Courier New'; color: #800000;">%s/usr/keylayout/%s.kl</span><span style="font-family: 'Courier New'; color: #800000;">&#8220;</span><span style="font-family: 'Courier New'; color: #000000;">, root, tmpfn);<br />
&#8230;<br />
device</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">layoutMap</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">load(keylayoutFilename);<br />
&#8230;<br />
}<br />
</span></div>
</div>
</div>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">打开设备的时候，如果 device-&gt;classes&amp;CLASS_KEYBOARD 不等于 0 表明是键盘。</p>
<p>常用输入设备的定义有：</p>
<p>enum {<br />
CLASS_KEYBOARD      = 0&#215;00000001, //键盘</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">CLASS_ALPHAKEY      = 0&#215;00000002, //</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">CLASS_TOUCHSCREEN   = 0&#215;00000004, //触摸屏</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">CLASS_TRACKBALL     = 0&#215;00000008 //轨迹球<br />
};</p>
<p>打开键盘设备的时候通过上面的 ioctl 获得设备名称，命令字 EVIOCGNAME 的定义在文件：</p>
<p>kernel/include/linux/input.h 中。</p>
<p>#define EVIOCGNAME(len)   _IOC(_IOC_READ, &#8216;E&#8217;, 0&#215;06, len) /* get device name */</p>
<p>在内核键盘驱动文件 drivers/input/keyboard/pxa27x_keypad.c 中定义了设备名称：pxa27x-keypad</p>
<p>static struct platform_driver pxa27x_keypad_driver = {</p>
<p>.probe        = pxa27x_keypad_probe,</p>
<p>.remove        = __devexit_p(pxa27x_keypad_remove),</p>
<p>.suspend    = pxa27x_keypad_suspend,</p>
<p>.resume        = pxa27x_keypad_resume,</p>
<p>.driver        = {</p>
<p>.name    = &#8220;pxa27x-keypad&#8221;,</p>
<p>.owner    = THIS_MODULE,</p>
<p>},</p>
<p>};</p>
<p>ANDROID_ROOT 为环境变量，在android的命令模式下通过 printenv 可以知道它为： system</p>
<p>所以 keylayoutFilename 为：/system/usr/keylayout/pxa27x-keypad.kl</p>
<p>pxa27x-keypad.kl 定义了按键映射，具体内容如下：</p>
<div class="cnblogs_code" style="background-color: #f5f5f5; font-family: 'Courier New'; font-size: 13px; word-break: break-all; overflow-x: auto; overflow-y: auto; padding: 5px; border: 1px solid #cccccc;"><img id="code_img_opened_e1f3d177-b9d0-4fff-8bc5-8de45d8ee9b0" class="code_img_opened" style="vertical-align: middle; padding-right: 5px; border: 0px initial initial;" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /></p>
<div id="cnblogs_code_open_e1f3d177-b9d0-4fff-8bc5-8de45d8ee9b0">
<div><span style="font-family: 'Courier New'; color: #000000;"># NUMERIC KEYS 3&#215;4<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">2</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">1</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">3</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">2</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">4</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">3</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">5</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">4</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">6</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">5</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">7</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">6</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">8</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">7</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">9</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">8</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">10</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">9</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">11</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">0</span><span style="font-family: 'Courier New'; color: #000000;"><br />
key </span><span style="font-family: 'Courier New'; color: #000000;">83</span><span style="font-family: 'Courier New'; color: #000000;"> POUND<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">55</span><span style="font-family: 'Courier New'; color: #000000;"> STAR</p>
<p># FUNCTIONAL KEYS<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">231</span><span style="font-family: 'Courier New'; color: #000000;"> MENU        WAKE_DROPPED<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">192</span><span style="font-family: 'Courier New'; color: #000000;"> BACK           WAKE_DROPPED<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">193</span><span style="font-family: 'Courier New'; color: #000000;"> HOME       WAKE<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">107</span><span style="font-family: 'Courier New'; color: #000000;"> DEL        WAKE<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">102</span><span style="font-family: 'Courier New'; color: #000000;"> CALL        WAKE_DROPPED<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">158</span><span style="font-family: 'Courier New'; color: #000000;"> ENDCALL     WAKE_DROPPED<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">28</span><span style="font-family: 'Courier New'; color: #000000;"> DPAD_CENTER     WAKE<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">115</span><span style="font-family: 'Courier New'; color: #000000;"> VOLUME_UP<br />
key </span><span style="font-family: 'Courier New'; color: #000000;">114</span><span style="font-family: 'Courier New'; color: #000000;"> VOLUME_DOWN<br />
</span></div>
</div>
</div>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">如果没有定义键盘映射文件，那么默认使用系统的 /system/usr/keylayout/qwerty.kl 可以修改 /system/usr/keylayout/qwerty.kl 文件改变Android公司的按键映射。</p>
<p>device-&gt;layoutMap-&gt;load(keylayoutFilename) 调用的是文件 KeyLayoutMap.cpp (frameworks\base\libs\ui)中的函数：</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px;">status_t KeyLayoutMap::load(const char* filename)通过解析 pxa27x-keypad.kl<br />
把按键的映射关系保存在 ：KeyedVector&lt;int32_t,Key&gt; m_keys; 中。</p>
<p>当获得按键事件以后调用：<br />
status_t KeyLayoutMap::map(int32_t scancode, int32_t *keycode, uint32_t *flags)</p>
<p>由映射关系 KeyedVector&lt;int32_t,Key&gt; m_keys 把扫描码转换成andorid上层可以识别的按键。</p>
]]></content:encoded>
			<wfw:commentRss>http://artskill.cn/blog/?feed=rss2&amp;p=462</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

