??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久国产综合精品麻豆,久久久久国产日韩精品网站,一本一道久久综合狠狠老http://www.shnenglu.com/franksunny/archive/2012/05/28/176433.htmlfrank.sunnyfrank.sunnySun, 27 May 2012 18:33:00 GMThttp://www.shnenglu.com/franksunny/archive/2012/05/28/176433.htmlhttp://www.shnenglu.com/franksunny/comments/176433.htmlhttp://www.shnenglu.com/franksunny/archive/2012/05/28/176433.html#Feedback0http://www.shnenglu.com/franksunny/comments/commentRss/176433.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/176433.html

做好产品

——《Facebook效应》读?/span>

全书概括

q一阵子匆匆看完了一遍大卫的《Facebook效应》,从书中我们可以一HFacebookq个传奇产品的启动和发展历程。整本书差不多是按照旉序来展开的,书的架构大致可以分ؓQ?/span>

前面十一章主要记叙了Facebookq个产品和公总无到有的发展历程Q?/span>

十二、十三两章主要描qFacebook最大的盈利来源q告的来历及其广告Ş式;

十四、十五章重点描述了Facebook的全球化和馈赠型l济理念Q?/span>

十六章概qC2009q一q中Facebook的发展;

十七章重ҎqC马克和Facebook贯穿始终的品理c?/span>

以上划分仅仅是我_读一遍的结Q本非大卫的官方说法Qؓ此仅供参考?/span>

产品的三条线

阅读q本书,可以让我q个从来没有用过Facebook的h大致了解Facebook公司和品的三条U:产品Uѝ运营线和融资线Qh值线Q?/span>

产品U脉l?/span>

2004q??日第一ơ上U品,功能仅包含照片、简介,d好友和捅人;

2004q?月,增加留言墙和组功能Q?/span>

2005q夏Q开N中生注册Q但独立q营Q与大学部不互通;

2005q?1月左叻I上线囄功能Q?/span>

2006q?月,高中部和大学部互联;

2006q?月,职场|络首次dQ遭遇冷场;

2006q??日,上线动态新d涂鸦墙;

2006q??6日,面向全世界开放注册;

2007q??4日F8大会的D办,意味着开攑^台的上线Q?个月后,注册的开发者达?5万,q行的应用程序达C2?千个Q;

2007q?1?日,灯塔和自助在U广告项目上U;

2008q末Qfacebook联谊会启动;

2009q?月,开始仿TwitterQ?/span>

2009q?月,开放信息流API(stream API)Q意味着Facebook的发展,逐渐走出Facebook|站Q按我的理解Q已l上升到产品_阶段Q?/span>

q营U脉l?/span>

2004q??日在哈佛上线Q其后逐步分批地在常春藤院校中铺开Q在W一批用L发展上做得相当成功(产品q营6月后Q刚?0岁的马克Q就有风投愿意估?000万美元,不过也只是意向而已Q;

2004q_在面临众多校园同cM品时Q马克采用了“包围{略”Q?/span>

2004q?1?0日,q营10个月后迎来百万注册用P

2004q?2月,Ҏ公司折扣推广q告zdQؓ公司初期带来了稳定的大额营收Q?/span>

2005q夏Q公司总裁帕克被解职,意味着Facebook的运营将走向更加职业化(q是我自q理解Q;

2005q?0月,注册用户辑ֈ500万;

2005q_辑ֈ500万之后几个星期,团队从用户们频繁更改介图片,引发囄功能上线Qv初扎克伯格ƈ未同意,但最l被说服Q到2009q末Qfacebook拥有300亿张囄Q成为拥有最多图片的|站Q;

2006q??日上U动态新d涂鸦墙(囄功能的成功,让他们挖掘成功的原因Q借鉴RSSQ构Z全新的动态新闻,不过后来遭遇了危机,甚至游行Q扎克伯格等人看C动态新ȝ轰动效应Q更加坚定了动态新ȝ正确性,q且48时内攻坚增加了隐私控制功能以让用户讑֮哪些动态可以发布出去)Q?/span>

2006q??6日,在^息动态新dQ开放注册,意味着寚w了大学、高中和职场后,面向全社会开放;

2006q?0月,每日注册数达5万,注册用户辑ֈ?000万(12月䆾Q活跃用户ؓ1200万)Q?/span>

2007q??4日,z跃用户?400万,每天?5万h加入Q一q后Q这个数据达C7000万)Q?/span>

2007q?1?日上U的灯塔NQ没有被及时处理Q直?1?9日才改进产品,但显然ؓ时已晚了Q该事g最l导致首席运营官?008q?月由谢丽替代范Q这一高管变动QFacebookC了强劲的q告和盈利之路,q一举迈入了Q?/span>

2008q?月,z跃用户?.45亿;

2009q?月䆾的新服务条款事gQ从起初的反对到最后演变成赞许Q?/span>

2009q?月,FaceBook?000万美元收购FriendfeedQ一家由google前明星E序员员工开发的产品Q;同时当月的活跃用戯?.75亿;

2010q?月,z跃用户Cؓ5ѝ?/span>

融资Qh|U脉l?/span>

起初学院z融资Q马克和萨维林各投入1万美元运作,2004q夏׃萨维林的ȝ账户Q马克后来借掏腰包近10万用于运作;

2004q秋季开学前Q被泰尔{估?00万美元,泰尔{h注资60万美元;

2005q?月前后,被阿克塞合伙公怼?亿美元,吉姆.布雷耶联合公司投?370万美元;

2006q?月,被估?亿美元,接受?750万美元的W三轮投资,从而缓解了当时五六月䆾被维亚康?亿美元收购的可能Q不q由于进军职场网l的失意Q在10亿美元售出的军_中摇摆,很可惜雅虎在马克{h犹U不决时没有一鼓作气拿下)Q?/span>

2007q?0?4日,被估?50亿美元,微Y投入2.4亿美元购?.6%股䆾Q李嘉诚投入6000万美元购?.4%股权Q后来,李嘉诚追加了6000万美元的投资Q再加上其他的投资,q一轮融资达?.75亿美元,为Facebook后来q接08q开始的ơ贷危机引发的经萧条中U篏了大量资源?/span>

书中咸少提到盈利Q一斚wFacebook前期发展q是主要靠融资而非盈利Q二来我觉得融资和盈利都是反应品h值线方向的东西,所以就没做梳理。另外由于成书在2010q_所以Facebook飞速发展的最q两q都没有囊括q去Q我也比较懒Q不惛_详细q求一些近来的数据q加到这三条U的后面Q不q从书中所叙述Q已l详地展示了Facebook从无到有Q从到大的发展历程Q对于我们了解Facebook的品发展,已经_了?/span>

通过q本书,让我感悟C品与产品l理的一些东西:

Facebookq个产品的成功,跟其一直有马克d有关p,相比较与其它很多大公司收购一些成功的产品Q最后都走向衰退甚至销声匿q(诸如雅虎曄收购的很多新颖的产品Q以及本书中提到的MySpace的收购)。品的d或者品主的思想或者梦惛_重要Q自׃事Y件开发也有很长一D|间了Q接触过很多产品的开发,特别是在|易的经历,让我更加׃一个好的品,必须要有一个一以诏之的理念或思想Q否则很Ҏ跑题或者成Z个四不像Q一个v初很不错的最品,最后都会P代成一个用户压根不想用的臃肿品?/span>

产品的立意要明确而深q,产品的执行要循序渐进。Facebook起初的功能很,很多同类产品可能做的比Facebookq要早还要好Q但是Facebook之所以能够超别的品,后来者居上,与马克坚持的“做最好的、最单的、让用户以最方便的方式分享信息的产品”的明立意和Facebook一步一步扎实地在大学院校扩展到全世界有着必然的关pR作Z个h呢难免会动摇意志Q特别是在遭遇困隑֒利诱ӞFacebook曾l差点被卖给雅虎Q当时具有长q梦想的马克也屈服了Q但是命q之还是眷N克,让彼时的雅虎遭遇了下挫折Q如果那个时候Facebook真的卖给了雅虎,或许现在的Facebook没有那么成功了。另外马克还有一个梦惻I是期许Facebook能够辑ֈ“教h从善”?#8220;让FaceBook成ؓ使世界变得更的工具”Q这个梦惌q超q了其盈利和开办一家企业的动力Q成为Facebookq个产品生生不息的品精?/span>

本书十二、十三两章,重点描述谢丽加入Facebook后在q告斚w的方案,q两章提C很多诸如条幅q告、对接式q告、交互式q告、满需求的q告、生需求的q告和在U自助广告等{广告概늚提出Q让我这个同样厌恶广告的人,也对q告产生了兴,让我怿其实q告作ؓ一U信息也是可以达到双赢的效果Q而ƈ非以前看电视剧时那么反感q告了(但是很多q告斚w的知识真的匮乏,希望有h能够指点一下,或者介l些资料Q?/span>

本书虽然q说Q但是让人看h像是看说一P很多人物Q诸如马克、莫斯科l茨、肖恩、吉姆和泰尔{等人物都很丰满Q对我留下深d响的q是肖恩Q作Z个争议h士,正是׃他的杰出工作Q帮助马克他们团队真正从打闹Q迈向了企业化进E,肖恩q个角色扮演的绝ҎFacebook发展历程中得校园品脱颖而出的基矟?/span>

目前暂时小品到q里吧,q本书还是相当不错的Q感谢火q提供电子版本?/span>



frank.sunny 2012-05-28 02:33 发表评论
]]>
[转]使用internalQcom.android.internalQ和hiddenQ@hideQAPIshttp://www.shnenglu.com/franksunny/archive/2011/09/26/156865.htmlfrank.sunnyfrank.sunnyMon, 26 Sep 2011 09:52:00 GMThttp://www.shnenglu.com/franksunny/archive/2011/09/26/156865.htmlhttp://www.shnenglu.com/franksunny/comments/156865.htmlhttp://www.shnenglu.com/franksunny/archive/2011/09/26/156865.html#Feedback3http://www.shnenglu.com/franksunny/comments/commentRss/156865.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/156865.html׃黏脓后原有图片显CZ出来Q感兴趣的可以下载word文档Q详见如?nbsp;http://www.shnenglu.com/Files/franksunny/Using%20internal%20and%20hide%20api.rar

使用internalQcom.android.internalQ和hiddenQ@hideQAPIs

Part One

原文路径Q?a >http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/

Android有两U类型的API是不能经由SDK讉K的?

W一U是位于com.android.internal包中的API。我称之ؓinternal API。第二种APIcd是一pd被标Cؓ@hide属性的cdҎ。从严格意义上来Ԍq不是一个单一的APIQ而是一l小的被隐藏的APIQ但我仍其假设ZUAPIQƈUC为hidden API?

Hidden API 例子

你可以查看一下android的源码,q能扑ֈ一些变量、函数和cȝQ都被@hide属性标C?

下面的例子就是在WifiManagerQAPI 10源码Q中隐藏的变量?

image_thumb13_thumb

另一个例子是在WifiManagerQAPI 10源码Q中隐藏了setWifiApEnabled函数?

image_thumb15_thumb

因此Q只要你看到@hide属性,那你看到的就是hidden API?

Internal?/strong>hidden API的区?/strong>

Hidden API之所以被隐藏Q是想阻止开发者用SDK中那些未完成或不E_的部分(接口或架构)。D个例子,Bluetooth API在API 5Q?span>Android 2.0Q上才开放;在API 3 ?上都是用@hide属性隐藏了。当q些API被验证和清理后,Google的开发者会U除@hide属性,q让其在API 5官方化。很多地方在API 4 ?之间发生了变化。如果你的程序依赖某些隐藏的APIQ当光|到新的q_上时Q就有可能陷入困境?

对于internal API来说Q从来都没有计划其开攑և来。它是Android?#8220;内部厨房”Q对开发者来_应该其视作黑盒。凡事都会有变化的。如果你依赖某些internal APIQ也有可能在新的Android release上,q些internal API发生变化Q从而o你失望?

ȝ一下区别:

Hidden API = q行中的工作Q?

Internal API = 黑盒Q?

Internal?/strong>hidden API的编译时 vs. q行?/strong>

当你使用Android SDKq行开发的时候,你引用了一个非帔R要的jar文g——android.jar。它位于Android SDKq_的文件夹中(SDK_DIR/platforms/platform-X/android.jarQ其中,X表示API{Q。这个android.jarUL了com.android.internal包中所有的c,也移掉了所有标记有@hide的类Q枚举,字段和方法?

但当你在讑֤上启动应用程序时Q它加载framework.jarQ简单来_它和android.jar{同Q,而其未移?span>internal API和hidden API。(但它对开发者来_q不能友好地讉KQ因此,我将向大家展CZ通过反射如何使用q些APIQ?

关于internal APIQ还有一件事需要说明。Eclipse的ADT插g增加了一个额外的规则Q那是止使用com.android.internal包中的Q何东ѝ所以,即便是我们可以拿到最原始的android.jarQ未删减版)Q也没有L的办法通过Eclipse使用q些internal API?

你可以亲自检查一下。创Z个新的Android工程Q或者用已有的Q。查看一下它引用的类库(叛_project Properties –> Java Build Path –> LibrariesQ?

image_thumb30_thumb

image_thumb29_thumb

重要的ȝQinternal和hidden API在SDK中是按照一L方式处理的(都从android.jar中移除了Q,但internal API更惨的是Q还被Eclipse的ADT插g昑ּ止了?

不通过反射使用internal?/strong>hidden API

q些文章的终极目标是让开发者能够不通过反射使用Internal和Hidden API。如果你完成了接下来部分中描q的步骤Q你能使用q些Internal和Hidden APIQ如同公开的API。你不再需要用反?

注:如果你正在用这些非公开?/strong>APIQ你必须知道Q你的程序有着极大的风险。基本上Q无法保证在下一ơ的Android OS更新Ӟq些API不被破坏Q也无法保证不同的运营商有着一致的行ؓ。你自己军_吧?/strong>

接下来有三个场景Q?

1. Internal ?span>hidden API都可用(场景AQ?

2. ?span>Hidden API可用Q场景BQ?

3. ?span>Internal API可用Q场景CQ?

场景A是B、C的d。场景B是最单的一个(不需要对Eclipse的ADT修改Q?

场景AQ阅读Part1, 2, 3, 4, 5

场景BQ阅读Part1, 2, 3, 5

场景CQ阅读Part1, 2, 3, 4, 5

Part 2

原文路径Q?a >http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-2-hacking-around/

在上一中Q我解释了ؓ什么我们不通过反射׃很难使用internal和hidden API。这是因为android.jar中就没包含这些APIQ因此,没h能够在编译时引用q些cR?/p>

q篇文章描q如何还原最初的android.jar。这允许我们像使用公开的API那样使用internal和hidden API?/p>

如何得到原版android.jarQ?/strong>

我们需要修改android.jarQ这样它才能包含所有的*.class文gQ包括internal和hidden APIc)。有两种办法Q?/p>

1Q?Android是一个开源工E。我们可以下载源码ƈ搭徏~译环境Q这样它׃能移除那些internal和hidden的类了。这个办法比较困难;

2Q?每个模拟器或真机在运行时都会有一个等同android.jar的东ѝ我们可以从q里拿到jar文gQ提取出原始?class文gQƈ拯到Android SDK的android.jar中?/p>

我将采用Ҏ2。它易于开始,q不需要搭建Linux环境及编译环境等?/p>

从设备上获取framework.jar

你可以用命令行Qadb pullQ从模拟器或讑֤上下载文Ӟ或者用DDMSQ借助Eclipse或SDK中的应用Q?/p>

注意Q模拟器通常?dex文g中包含代码,而真Z般在优化版的dex文g中包含代?#8212;—odex文g。操作odex文g比较困难Q这也是Z么我选择模拟器的原因?/p>

与Android SDK中的android.jar{同的文件是framework.jar。这个文件位于设备的Q?system/framework/framework.jar

adb pull /system/framework/framework.jar

image当framework.jar从设备上下下来之后,重命名ؓframework.zipq解压到独立的文件夹中,看v来是q个样子的:

 

classes.dex正是我们需要的?/p>

创徏framework-classes.zip

首先Q我们需要把.dex文g转换?jar格式。你可以使用通用的工具dex2jar。只需要运行:

dev2jar classes.dex

当{换结束时Q你应该得到了classes.dex.dex2jar.jar文g。重命名为framework-classes.zip。用zip查看器,q入到framework-classes.zip/com/android/internal/Q?/p>

image

恭喜你,你已l拥有了所有的.class文gQ包括internal?span>hidden APIQ尽截囑֏认了internal部分Q?/p>

创徏original-android.jar

Android SDK的android.jar位于ANDROID_SDK/platforms/android-X/android.jarQX表示API{Q?/p>

拯android.jar成custom-android.jar。解压至custom-android文g夏V将framework-classes.zip中所有的.class文g拯到custom-android文g夹中Q你需要覆盖所有已l存在的.class文gQ?/p>

然后Q压~custom-android文g成original-android.zip。重命名为original-android.jar?/p>

步骤ȝ

1. 选择你的目标q_X

2. 创徏目标q_X的模拟器

3. 启动模拟器,下蝲/system/framework/framework.jar

4. 重命?span>framework.jar -> framework.zip

5. 从framework.zip中抽取classes.dex

6. 使用dex2jar工具Q将其{换成classes.jar

7. 重命?span>classes.jar -> framework-classes.zip

8. 拯android.jar –> custom-android.zip

9. 解压custom-android.zip至custom-android文g?/p>

10. framework-classes.zip中所有文件拷贝至custom-android文g夹(覆盖存在的文Ӟ

11. 压羃custom-android文gҎoriginal-android.zip

12. 重命?span>original-android.zip -> original-android.jar

打完收功?/p>

ȝ

我们q原了android.jarQ其包含所有的internal?span>hidden API?class文g。这只是W一步。下一步将创徏定制的androidq_Q其用未删节版的android.jarQƈ其d到Android SDK platforms文g夹中?/p>

Part 3

原文路径Q?a >http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-3-custom-android-platform/

在上一中Q我已经展示了如何创Z个包含所有internal和hidden API的original-android.jar?/p>

接下来的工作是要修改已l存在的Androidq_QSDK_DIR/platforms/platform-X/android.jarQX表示API{Q。你可以直接使用Part2中创建的original-android.jar替换android.jar。但q样的话Q你的所有工E都直接用internal和hidden API而没有Q何限制。这不够方便Q因为在多数的工E中你不希望q样。甚臻I你可能更希望止q些APIQADT/android.jar的默认行为)。但对于一些特定的工程Q你希望能够使用q些internal和hidden API?/p>

Z辑ֈq样的灵zL,你需要创Z个新的自定义的Androidq_。当不需要访问internal?span>hidden APIӞ你只需使用原有的Androidq_。当你用这些APIӞ你用自定义的Androidq_?/p>

Android SDK文g夹结?/strong>

让我们看一?span>Android SDK树是如何l织的:

image

我们需?#8220;platforms”文g夏V看一下里面:

image

q里列出了支持的Androidq_?/p>

现在Q我们看一下它是如何与Eclipse讑֮兌的。选择你的工程Q右?#8211;> Properties –> Android。你会看到一l支持的Androidq_Q与…/platforms/folder怼Q。下面是截图Q?/p>

image

创徏新的q_

Z创徏一个新的^収ͼ我们需要拷贝android-9文g?-> android-9-internals。让我们做一些修正:

1. 删除其中的android.jar

2. 拯original-android.jarQƈ改名为android.jar

3. 修改build.prop文gQ?/p>

ro.build.version.sdk=9 -> ro.build.version.sdk=-9

ro.build.version.release=2.3 -> ro.build.version.release=2.3.extended

重启Eclipse。ƈ认你能看到新的q_。下面是我所看到的:

image

Z么我选择API{?9Q这是因为它必须是一个数字,而且它不能是9Q或者其它已l存在的API{Q。否则,你自定义的^台将不能被用(它在列表里可见,但选中后也不能正常工作Q编译时仍然使用相应API{的原始^収ͼ?/p>

下面是引用类库的截图Q当前工E选中了自定义的^収ͼQ?/p>

image

ȝ

在上一中Q我已经告诉你如何创Z个未删节版的android.jar。在q一中Q我向你展示了如何创Z个自定义的Androidq_Qƈ在其中用original-android.jar。这对于hidden API来说已经_了。但对于internal API来说Q还需要另一步。这是因为ADT仍然不允怋用com.android.internal包中的类Q参见上图中?#8220;forbidden”讉K规则Q。下一节我向你展C如何定制ADT来允怋用internal包中的类?/p>

============华丽的分割线=============

在实际的操作q程中,我创建的自定义的android.jarQAPI 10Q不能被Eclipse成功加蝲Q会出现以下的错误框Q如同网站上其它人操作的l果一P期待解决Ҏ?/p>

clip_image012

不过Q作者提供了可用的自定义的android.jarQ如果不惌己尝试的话,可以直接从网站下载,地址在Part5中给出,E等?/p>

Part 4

原文路径Q?span>http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-4-customizing-adt/

在上一文章里Q我描述了如何创Z个自定义的original-android.jarQ以及如何创Z个自定义的Androidq_来用这个original-android.jar。这对Hidden API来说_了。但?span>Internal API来说Q仍然还有一个包袱:Eclipse的ADT插g。它限制使用com.android.internal包中的Q何类?

有几U方法可以解册个访问限制?

1Q?ADT源码可以下蝲。因此,删除/修改代码中的某些代码Q从而编译出一个新的ADT是可以的。麻烦的是你需要搭?4位LinuxpȝQ下载源码,~译{。它需要花费一些时间。当有新的ADT版本Ӟ你需要重来一遍?

2Q?另外的方法就是修改ADT的字节码。用一个类g“com/android/internax/**”的字W串替换“com/android/internal/**”?

W二U方法可以用脚本实现。ƈ且不需要访问源码以及可在Windows上操作。这也是Z么我在这中选用W二U解x案的原因?

修改ADT的字节码

q入Eclipse的plugins文g夏V找到文件名看v来像“com.android.ide.eclipse.adt_*.jar”的文件。备份一下这个文Ӟ以防中间有错误发生)。ƈ拯q个文gC?#8220;experimental”文g夹,在这里,我们要完成对其字节码的修攏V?

重命?.jar?.zip。解压这个文件到单独的文件夹。参看以下图片:

image

现在Q进入到com/android/ide/eclipse/adt/internal/project子文件夹?

扑ֈAndroidClasspathContainerInitializer.class文g?

image

q个文g包含“com/android/internal/**”字符丌Ӏ接下来是要替换这个字W串Q例?#8220;com/android/internax/**”。改变字W串的长度理Z是安全的Q但最好还是替换其中的一个字母,q保持长度一致?

我用notepad++修改的,它支持非可印刷字W,因此在对其修ҎQ不要触C攚w可印刷字W?

image

当做完这个,保存文g。压~这个文件夹Q保证文件名与原始文件一模一栗在我这里,文g名是Qcom.android.ide.eclipse.adt_8.0.1.v201012062107-82219.zip?

注意Q确保压~文件的正确性。比较原始文件和修改文g的根文gl构?

现在Q用修改后的版本替换原来的ADT?.jar文g。然后,启动Eclipse?

在用库H口Q你应该看到下面的样子,一切都变得那么的美好:

image

步骤ȝ

1. 关闭Eclipse

2. 从Eclipse的plugin文g夹中拯出ADT插g的jar文g

3. 重命?span>.jar -> .zipQ然后解压至独立的文件夹

4. 扑ֈcom/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class文g

5. ?#8220;com/android/internax/**”替换“com/android/internal/**”

6. 压羃q个文g?

7. 重命?span> .zip -> .jar

8. 用修改后的jar替换原始的ADT jar文g

9. 启动Eclipse

l论

q是不用反也能?span>Internal API的最后一步?/p>

Part 5

 

原文路径Q?span>https://devmaze.wordpress.com/2011/01/19/using-com-android-internal-part-5-summary-and-example/

Z能够使用Internal和Hidden APIQ你需要:

1. 创徏自定义的original-android.jarQ包含所有的.class文g

2. 创徏自定义的Androidq_来用original-android.jar

3. 修改ADT插gQ允怋用com.android.internal包(只ؓInternal APIQ?

4. 创徏新的工程Q引用自定义的Androidq_Q本文中的例子)

在本文中Q我向你们展示如何使用那些Internal和Hidden API?

此外Q在本文的结,我列Z一些自定义的Androidq_Q它们都包含Internal?span>Hidden API。我附带了它们,是ؓ了可能你不想花太多时间在q方面,但又惛_速的试什么?

例子

创徏一个新工程Q选择2.3.extenderq_Q?

下面是代码:

q个代码使用?span>Internal APIQPowerProfileQ和Hidden APIQisWifiApEnabledQ。我不用使用反射p~译q运行这些代码?

自定义^?/strong>

下面有些q_Q是我ؓ自己创徏的。只用拷贝它们到SDK_DIR\platforms文g夹下。这只是让Hidden API可用。对?span>Internal APIQ你需要修改你的ADT插g?

API 3Q?span>http://www.megaupload.com/?d=S1F2MKYZ

API 4Q?span>http://www.megaupload.com/?d=VUCTRI3Y

API 7Q?span>http://www.megaupload.com/?d=7ITNILBK

API 8Q?span>http://www.megaupload.com/?d=EXT5FKKT

API 9Q?span>http://www.megaupload.com/?d=EXT5FKKT

API 10Q?span>http://www.megaupload.com/?d=FCV78A9M

==============华丽的分割线=============

我尝试了其中的几个自定义q_Q发玎ͼinternal 和hidden API真的是可用了Q但也有一些意外的问题Q如AlertDialog.Builder(Context context)居然说Context参数是多余的。?

没花旉ȝIؓ什么会q样Q如果哪位童鞋知道原因,告诉我哈~~

 

@import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

frank.sunny 2011-09-26 17:52 发表评论
]]>
SYMBIANE序动态加载TTF字体使用结http://www.shnenglu.com/franksunny/archive/2011/02/21/140287.htmlfrank.sunnyfrank.sunnyMon, 21 Feb 2011 02:28:00 GMThttp://www.shnenglu.com/franksunny/archive/2011/02/21/140287.htmlhttp://www.shnenglu.com/franksunny/comments/140287.htmlhttp://www.shnenglu.com/franksunny/archive/2011/02/21/140287.html#Feedback0http://www.shnenglu.com/franksunny/comments/commentRss/140287.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/140287.html阅读全文

frank.sunny 2011-02-21 10:28 发表评论
]]>
使用SHBrowseForFolder函数打开文g目录对话?/title><link>http://www.shnenglu.com/franksunny/archive/2010/12/30/137754.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Thu, 30 Dec 2010 10:35:00 GMT</pubDate><guid>http://www.shnenglu.com/franksunny/archive/2010/12/30/137754.html</guid><wfw:comment>http://www.shnenglu.com/franksunny/comments/137754.html</wfw:comment><comments>http://www.shnenglu.com/franksunny/archive/2010/12/30/137754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/franksunny/comments/commentRss/137754.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/franksunny/services/trackbacks/137754.html</trackback:ping><description><![CDATA[     摘要: 使用SHBrowseForFolder函数打开文g目录对话?nbsp; <a href='http://www.shnenglu.com/franksunny/archive/2010/12/30/137754.html'>阅读全文</a><img src ="http://www.shnenglu.com/franksunny/aggbug/137754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/franksunny/" target="_blank">frank.sunny</a> 2010-12-30 18:35 <a href="http://www.shnenglu.com/franksunny/archive/2010/12/30/137754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在S60非UI框架E序中弹提示信息http://www.shnenglu.com/franksunny/archive/2010/12/17/136802.htmlfrank.sunnyfrank.sunnyFri, 17 Dec 2010 13:26:00 GMThttp://www.shnenglu.com/franksunny/archive/2010/12/17/136802.htmlhttp://www.shnenglu.com/franksunny/comments/136802.htmlhttp://www.shnenglu.com/franksunny/archive/2010/12/17/136802.html#Feedback0http://www.shnenglu.com/franksunny/comments/commentRss/136802.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/136802.html 完整文档下蝲地址http://www.shnenglu.com/Files/franksunny/RNotifier.7z

如何?/span>S60?/span>UI框架E序中弹提示信息

 

在非依赖?/span>UI?/span>S60E序中,也就是不建立在控件环境基上的E序Q比如控制台应用E序Q独立的U程{。在q些E序中需要弹提示信息的时候,׃能直接用ZCCoeControl的Q?/span>UIcMQ因些程序中没有供养CCoeControl生存?/span>CCoeEnv环境Q当然不嫌繁琐,在程序的main函数中像自己创徏zd规划器一样去创徏CCoeEnv环境也是一个可行的ҎQ但是这出本文的涉及范_本文提出的是不创?/span>CCoeEnv环境情况下,通过RNotifier?/span>RNotifier的派生类来实现弹提示信息?/span>

RNotifier单应?/span>

其实RNotifier?/span>RFs一样都是派生自RSessionBaseQ所以用v来也是类似的Q下面给Z个最单的例子代码

       RNotifier vNotifier;

       User::LeaveIfError(vNotifier.Connect());

       CleanupClosePushL(vNotifier);

 

       //title and context

       TBuf<256> title;

       TBuf<256> context;

       title.Copy(_L("info"));

       context.Copy(_L("data"));

 

       // Button text

       _LIT(KYesButton, "Yes");

       _LIT(KNoButton, "No");

 

       // Display the dialog

       TInt button;

       TRequestStatus status;

       vNotifier.Notify(title, context, KYesButton, KNoButton, button, status);

       User::WaitForRequest(status);

 

       // destroy notifier

       CleanupStack::PopAndDestroy();

q行上述代码可以得到如下的对话框提示

RNotifier本n?/span>RFs是基?/span>Symbian OS的,而非专属?/span>S60q_的,所以在UIQ{^Cl箋可以使用RNotifierQ这在跨q_开发上相当的便利,省去了移植的苦恼?/span>

RNotify复杂应用

上面例子代码是最单的一U?/span>RNotifier的应用,Z开发的方便和提高开发效率,S60装了一?/span>CAknGlobal*?/span>RAknKeyLock{的cMW三方开发者用,׃?/span>UIQq_上我没有涉及q,而且目前借助S60的开源代码,我就拿一?/span>S60中的相关c?/span>CAknGlobalConfirmationQuery来说明下吧,在源代码sf\mw\classicui\uifw\AvKon\notifsrc路径下面有多个类似类的源代码。其?/span>CAknGlobalConfirmationQuery除了二阶D|造外Q最主要的就?/span>ShowConfirmationQueryL?/span>UpdateConfirmationQuery?/span>CancelConfirmationQuery三个函数Q这三个函数的代码罗列如?/span>

        /**

        * Shows global Confirmation query synchronously

        *

        * @param    aStatus         TRequestStatus which will be completed when user

        *                               selects one item from the list query.

        * @param    aPrompt         Prompt text

        * @param    aSoftkeys       Softkey resource

        * @param    aAnimation      Animation resource

        * @param    aTone           Tone id

        * @param    aDismissWithAllKeys If set ETrue the query gets dismissed with all

        *                                   keypresses

        */

EXPORT_C void CAknGlobalConfirmationQuery::ShowConfirmationQueryL(

    TRequestStatus& aStatus,

    const TDesC& aPrompt,

    TInt aSoftkeys,

    TInt aAnimation,

    const TDesC& aImageFile,

    TInt aImageId,

    TInt aImageMaskId,

    CAknQueryDialog::TTone aTone,

    TBool aDismissWithAllKeys )

{

    delete iBuffer;

    iBuffer = NULL;

    iBuffer = CBufFlat::NewL(KBufferGranularity);

 

    RBufWriteStream bufStream;

    bufStream.Open(*iBuffer);

 

    CleanupClosePushL(bufStream);

 

    bufStream.WriteInt32L(KAKNNOTIFIERSIGNATURE);

 

    if ( aDismissWithAllKeys )

    {

        bufStream.WriteInt8L( ETrue );

    }

    else

    {

        bufStream.WriteInt8L( EFalse );

    }

 

    bufStream.WriteInt32L(aSoftkeys);

    bufStream.WriteInt32L(aAnimation);

    bufStream.WriteInt16L(aImageId);

    bufStream.WriteInt16L(aImageMaskId);

    bufStream.WriteInt16L(aTone);

    bufStream.WriteInt16L(aPrompt.Length());

    bufStream << aPrompt;

    bufStream.WriteInt16L(aImageFile.Length());

    if (aImageFile.Length())

    {

        bufStream << aImageFile;

    }

 

    bufStream.WriteInt32L(iSkinsMajorId);

    bufStream.WriteInt32L(iSkinsMinorId);

 

    if (iAknSDData)

    {

        bufStream.WriteInt8L(ETrue);

        bufStream << *iAknSDData;       

    }

    else

    {

        bufStream.WriteInt8L(EFalse);           

    }

 

    iBufferPtr.Set(iBuffer->Ptr(0));

    iNotify.StartNotifierAndGetResponse(aStatus, KAknGlobalConfirmationQueryUid,

        iBufferPtr, iResultBuf);

 

    CleanupStack::PopAndDestroy();  // bufStream

}

该函数用于显C对话框。其主要的实现就是调?/span>RNotifier?/span>StartNotifierAndGetResponse函数?/span>

EXPORT_C void CAknGlobalConfirmationQuery::UpdateConfirmationQuery( TInt aSoftkeys )

{

    iSoftkeys = aSoftkeys;

    iCmd = EAknUpdateGlobalQuery;

    TPckgBuf<SAknNotifierPackage<SAknGlobalMsgQueryParams> > pckg;

    pckg().iParamData.iCmd = iCmd;

    pckg().iParamData.iSoftkeys = iSoftkeys;

 

    TPckgBuf<TInt> ret;

    iNotify.UpdateNotifier( KAknGlobalConfirmationQueryUid, pckg, ret);

}

该函数用于对话框产生后更新对话框Q其功能是使用函数RNotifier::UpdateNotifier?/span>

EXPORT_C void CAknGlobalConfirmationQuery::CancelConfirmationQuery()

{

    if (iBuffer)

    {

        iNotify.CancelNotifier(KAknGlobalConfirmationQueryUid);

        delete iBuffer;

        iBuffer = 0;

    }

}

该函数用于对话框产生后程序取消对话框Q其功能是使用函数RNotifier::CancelNotifier?/span>

RNotifier的实现跟t?/span>

通过以上两个代码Q我们差不多?/span>RNotifiercȝ使用了解了,但是q个RNotifier到底是如何实现弹Z个对话框呢?

其实RNotifier的真正实现是通过Symbian OS?/span>C/S架构来实现的Q这个在文章开提?/span>RNotifier?/span>RFs一h生自RSessionBase已l埋下了伏笔?/span>

RNotifier的源代码实现位于sf\os\kernelhwsrv\kernel\eka\euser\us_ksvr.cppQ这个代码中q有RChunk?/span>RDevice?/span>RHandleBase{等基础cȝ实现代码?/span>

RNotifier的服务器c?/span>CNotifierServer和服务器会话通道c?/span>CNotifierSession以及相关的其他类则位?/span>sf\os\kernelhwsrv\kernel\eka\ewsrv\ws_main.cpp中。这些类的声明则位于sf\os\kernelhwsrv\kernel\eka\include\twintnotifier.h文g中?/span>

再深入进去,׃了解?/span>RConsolec,q个cȝ声明位于sf\os\kernelhwsrv\kernel\eka\include\e32twin.h中,代码实现位于sf\os\kernelhwsrv\kernel\eka\ewsrv\co_cli.cpp中。搞了半天又遇到一?/span>C/S架构Q这?/span>Client?/span>Server?/span>CWsServerQ其通道?/span>CWsSessionQ在CWsSession内最主要的类?/span>CWsWindowQ这几个cȝ声明位于sf\os\kernelhwsrv\kernel\eka\include\ws_std.hQ而这几个cȝ实现代码则又l回?/span>sf\os\kernelhwsrv\kernel\eka\ewsrv\ws_main.cp中去了?/span>

好了Q自己暂时只能走到这一步了Q上面只是简单给Z些源代码的\径,有兴的同学可以M探究竟,我才疏学就只能点到为止了?/span>

Ƣ迎对其有更深入挖掘的同学能够发布新的小l?/span>,到时记得分n到我的邮?/span>frank.sunny@163.comQ当然假如我文中有什么错误也希望能够告知我一?/span>,谢谢?/span>

 

 



frank.sunny 2010-12-17 21:26 发表评论
]]>
关于监控摄像头拍照与摄像http://www.shnenglu.com/franksunny/archive/2010/12/10/136093.htmlfrank.sunnyfrank.sunnyFri, 10 Dec 2010 11:58:00 GMThttp://www.shnenglu.com/franksunny/archive/2010/12/10/136093.htmlhttp://www.shnenglu.com/franksunny/comments/136093.htmlhttp://www.shnenglu.com/franksunny/archive/2010/12/10/136093.html#Feedback1http://www.shnenglu.com/franksunny/comments/commentRss/136093.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/136093.html 

关于监控摄像头拍照与摄像

 

׃工作中需要用到类g像新微薄一P监控拍照后弹出照片是否上传分享的要求Qؓ此就试了下监控拍照和摄像?/span>

一开始没有头l,都不知道搜烦什么关键字Q茫无目的下居然发现论坛有h推荐陈子腑ֆ?/span>wikiQ具?/span>wiki链接如下

内|相机应用程序新拍摄的照片和视频片段

其实参考陈子腾的方法很Ҏ做好一个监控功能了Q在q里׃多说?/span>

之所以想写下博文,是因U方式实际上涉及?/span>Symbian OS提供?/span>Publish&Subscribeq一Ҏ的进E间通信机制Q我之前使用的进E间通信除了C/S?/span>RMsgQue之外Q就是?/span>AppUi框架通过TApaTask::SendMessage的方法来实现Q至?/span>RProcess::SetParameter不能在进E间实时的传输消息,只能是开启进E时传递一些信息(比如同步用的信号量等Q。这ơȝ是接触了?/span>PSq程间通信Q就自己也尝试了q种方式?/span>

SDK中的描述?/span>

Publish & Subscribe is a new API provided by the real-time kernel (EKA2). It allows publisher processes to define and update a set of properties; other processes, called subscribers, can listen for changes to a property, and get property values. The process that defines a property can specify access rights for both reading and writing. Rights can be defined in terms of either requiring a particular security capability, by a process SID, or by a process VID. Publish & Subscribe replaces System Agent and the usage of temporary Shared Data keys.

也就是说发布者定义或更新一套属性,然后订阅者开启监听的情况下就能接受到更新Q然后可以去获取属性值的更改?/span>

定义属?/font>

在这里最主要的是在发布者定义属性时Q一定要用发布者程序的SID也就?/span>UID3Q否则会?/span>-46的错误,也即下面代码

RProperty::Define(KPSUidCameraCfg, KCameraCfgModify, RProperty::EInt);

KPSUidCameraCfg必须是你发布E序?/span>UID3或者你另外?/span>mmp中定义的SID|至于后面?/span>KCameraCfgModify属性和cd值就Ҏ要求来设|了?/span>

监控属?/font>

监控属性需要绑定到具体的属性然后开启一?/span>Subscribe的异步方?/span>

iProperty.Attach(KPSUidCameraCfg, KCameraCfgModify);

iProperty.Subscribe(iStatus);

SetActive(); // Tell scheduler a request is active

通常监控属性是一个异步过E,所以我们会为其专门写一个活动对象类Q用以异步监?/span>

修改属?/font>

虽然属性定义是有安全性要求,但是更新属性,没那么严格了,可以直接通过RProperty的静态方法来修改

RProperty::Set(KPSUidCameraCfg, KCameraCfgModify, 1 );

d属?/font>

订阅者当收到属性有更改Ӟ也可以直接通过RProperty的静态方法来d

RProperty::Get(KPSUidCameraCfg, KCameraCfgModify, val);

删除属?/font>

׃属性值在手机重启前会一直存在,所以属性没有用Ӟ我们要求其删除Q删除也可以通过RProperty的静态方法简单实玎ͼ具体如下

RProperty::Delete(KPSUidCameraCfg, KCameraCfgModify);

 

l合PSq一q程间通讯的方法和pȝ摄像头应用程序中的用,我们可以昄知道Q该Ҏ适用于开发一些通用的底层控Ӟ可以l第三方开发者需要时监控用,发布者类g一个广播系l?/span>

感觉不是很复杂,q单小l如上吧Q以后用遇到问题再更新?/span>

 



frank.sunny 2010-12-10 19:58 发表评论
]]>
Symbian 5thE序如何搬迁到Symbian ^3q_http://www.shnenglu.com/franksunny/archive/2010/11/04/132445.htmlfrank.sunnyfrank.sunnyThu, 04 Nov 2010 07:33:00 GMThttp://www.shnenglu.com/franksunny/archive/2010/11/04/132445.htmlhttp://www.shnenglu.com/franksunny/comments/132445.htmlhttp://www.shnenglu.com/franksunny/archive/2010/11/04/132445.html#Feedback0http://www.shnenglu.com/franksunny/comments/commentRss/132445.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/132445.html阅读全文

frank.sunny 2010-11-04 15:33 发表评论
]]>
Symbian 摄像头编E预?/title><link>http://www.shnenglu.com/franksunny/archive/2010/11/03/132293.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 03 Nov 2010 06:55:00 GMT</pubDate><guid>http://www.shnenglu.com/franksunny/archive/2010/11/03/132293.html</guid><wfw:comment>http://www.shnenglu.com/franksunny/comments/132293.html</wfw:comment><comments>http://www.shnenglu.com/franksunny/archive/2010/11/03/132293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/franksunny/comments/commentRss/132293.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/franksunny/services/trackbacks/132293.html</trackback:ping><description><![CDATA[     摘要:  文档中涉及到贴图Q懒得搞Q就附带一份word文档吧,需要的可以下下 http://www.shnenglu.com/Files/franksunny/camera.rar 摄像头编E预?目前使用摄像头编E,|上用的最多的都是直接调用手机自带的照?摄像E序来完成,不过使用q种方式Q可控性就昑־׃些,为此q期对直接用ECAM APIq行了下单预研?照相程 因ؓ本次预研?..  <a href='http://www.shnenglu.com/franksunny/archive/2010/11/03/132293.html'>阅读全文</a><img src ="http://www.shnenglu.com/franksunny/aggbug/132293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/franksunny/" target="_blank">frank.sunny</a> 2010-11-03 14:55 <a href="http://www.shnenglu.com/franksunny/archive/2010/11/03/132293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取手机短信和彩信号码的Ҏhttp://www.shnenglu.com/franksunny/archive/2010/09/25/127638.htmlfrank.sunnyfrank.sunnySat, 25 Sep 2010 09:44:00 GMThttp://www.shnenglu.com/franksunny/archive/2010/09/25/127638.htmlhttp://www.shnenglu.com/franksunny/comments/127638.htmlhttp://www.shnenglu.com/franksunny/archive/2010/09/25/127638.html#Feedback3http://www.shnenglu.com/franksunny/comments/commentRss/127638.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/127638.html阅读全文

frank.sunny 2010-09-25 17:44 发表评论
]]>
Symbian端彩信读取初?/title><link>http://www.shnenglu.com/franksunny/archive/2010/07/28/121498.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Wed, 28 Jul 2010 13:16:00 GMT</pubDate><guid>http://www.shnenglu.com/franksunny/archive/2010/07/28/121498.html</guid><wfw:comment>http://www.shnenglu.com/franksunny/comments/121498.html</wfw:comment><comments>http://www.shnenglu.com/franksunny/archive/2010/07/28/121498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/franksunny/comments/commentRss/121498.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/franksunny/services/trackbacks/121498.html</trackback:ping><description><![CDATA[     摘要:   Symbian端彩信读取初?  上周׃目需要对彩信dq行了预研,虽然q未涉及彩信的拦截,只是对Symbian S60手机收g׃的彩信和彩信通知的内容进行提取ƈ分析Q但是也是了下之前一直没有搞q的彩信q浑_结一下。ؓ了体现分析过E的逻辑性,下文q是由入繁Q而是采用由已知到未知的说明过E来q行?彩信和彩信通知的区?正如前面博文《Symbian...  <a href='http://www.shnenglu.com/franksunny/archive/2010/07/28/121498.html'>阅读全文</a><img src ="http://www.shnenglu.com/franksunny/aggbug/121498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/franksunny/" target="_blank">frank.sunny</a> 2010-07-28 21:16 <a href="http://www.shnenglu.com/franksunny/archive/2010/07/28/121498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.sh-jixiang.cn" target="_blank">þѾƷƵ</a>| <a href="http://www.dyph.net.cn" target="_blank">þþþ߽ۺϳ</a>| <a href="http://www.sz-kwei.cn" target="_blank">ɫʹþۺ</a>| <a href="http://www.jixianfengzx.cn" target="_blank">뾫Ʒþþ</a>| <a href="http://www.cn987.cn" target="_blank">ҹþþþüŮӰԺ</a>| <a href="http://www.sic-mosi2.cn" target="_blank">ɾþۺ777</a>| <a href="http://www.gzxwlt.cn" target="_blank">þùۺϾƷ</a>| <a href="http://www.889kk8.cn" target="_blank">Ʒþˬۺ</a>| <a href="http://www.tpjh.com.cn" target="_blank">69Ʒþþþ99</a>| <a href="http://www.szjjls.cn" target="_blank">ݺɫۺվþþþþþ</a>| <a href="http://www.ghfsp.cn" target="_blank">99þ99þþƷƬ</a>| <a href="http://www.xcvcd.cn" target="_blank">þþþӰԺŮ</a>| <a href="http://www.vzxu.cn" target="_blank">þþƷӰԺ</a>| <a href="http://www.beautydiary-tw.cn" target="_blank">þþƷav</a>| <a href="http://www.ks-design.cn" target="_blank">˼˼þþƷ</a>| <a href="http://www.igzan.cn" target="_blank">ɫav˾þô߽ӰԺ</a>| <a href="http://www.61fushi.cn" target="_blank">þþwww</a>| <a href="http://www.anglein.cn" target="_blank">Ʒþþþþ</a>| <a href="http://www.zawin.cn" target="_blank">999Ʒþþþþ</a>| <a href="http://www.cqtqtz.cn" target="_blank">þۺɫݺ</a>| <a href="http://www.kzhg.net.cn" target="_blank">޾ƷþþþþĻ</a>| <a href="http://www.xinhuahz.cn" target="_blank">޾Ʒþþþsm</a>| <a href="http://www.rljps.cn" target="_blank">Ʒþþþ</a>| <a href="http://www.bandetek.cn" target="_blank">þþþþavѿƬ</a>| <a href="http://www.zhongxiangka.cn" target="_blank">޹Ʒþþž</a>| <a href="http://www.bhxs.net.cn" target="_blank">ŷղþ99</a>| <a href="http://www.pu89.cn" target="_blank">þùѹۿƷ</a>| <a href="http://www.dywanjiale.cn" target="_blank">Ůþþþþ</a>| <a href="http://www.k7yg835v.cn" target="_blank">Ʒþþþþ޾Ʒ</a>| <a href="http://www.bqtao.cn" target="_blank">Ʒ99þaaaһëƬ</a>| <a href="http://www.rcipbrdgydr.cn" target="_blank">Ʒþþһ</a>| <a href="http://www.sobseo.cn" target="_blank">þþƷ˹ҹ</a>| <a href="http://www.pw823.cn" target="_blank">þþþ</a>| <a href="http://www.pxep.cn" target="_blank">91龫Ʒ91þþþ </a>| <a href="http://www.aipmusic.cn" target="_blank">þþþ޾Ʒ˵ </a>| <a href="http://www.20xjj.cn" target="_blank">ƷþþĻ</a>| <a href="http://www.bekin.com.cn" target="_blank">ɫۺϾþþþһ</a>| <a href="http://www.yslianzheng.cn" target="_blank">ɫۺϾþ88ɫۺ</a>| <a href="http://www.biezhuai.cn" target="_blank">ƯޱгĻþ</a>| <a href="http://www.hxjxjt88.cn" target="_blank">þõӰ</a>| <a href="http://www.vxe49.cn" target="_blank">þ޾ƷĻ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>