程序员…
28 Jun

2010年6约27日,周日下午,由CSDN和《程序员》杂志联合策划组织,旨在与业界人士分享IT产品背后的技术和用户体验故事的线下活动TUP(Technology, User Experience, Product)系列活动日前在北京丽亭华苑酒店成功举办,首期活动以“移动开发实践”为主题。
受CSDN&《程序员》总编刘江邀请,我去分享了自己对android方面的一些体会和心得,本来预期200人参加的活动,从wudi那边看到报名的有500多人,最终选了300多人参与了活动,场面还是比较火爆的,到处站的都是人,CSDN在国内技术圈还是有不错影响力的;
活动从下午1电30分正式开始,刘江主持,介绍了TUP的核心价值,然后我是第一个演讲的,我和大家分享的题目是《Google Android盈利模式探析及其应用突围之道》,和大家分享了android目前的市场;可行的一些盈利模式,我的观点是现阶段,广告和应用中收费(注意不是收费应用)是两个比较成熟的模式,除此之外还有做平台,做培训,咨询等等模式可以尝试;借着和大家分享了应用突围之道,举了两个例子,说明如何让你的应用在众多应用中脱颖而出(分析数据很重要),最后和大家分享了android的发展趋势,我个人觉得android终端多元化,终端网络化的趋势很明显,那么带来的就是应用的巨大需求(个性化,国际化,本地化的),从而使得android人才缺口非常大。
从大家的提问和会后的交流来看,很多人还是比较迷茫的,对现况的迷茫,对市场的迷茫,比如国内外大大小小的软件商店很多人就看不明白,原因很简单,看到的都是表表象,透过表象,把握住本质就很清晰了。
比较冏的是名片带少了,后来给不少人手工写了联系方式,本来后面还有个互动交流的环节,由于临时有些事情,没来得及参加就撤退了,有些遗憾。
今天各大媒体的报道都出来,看到基本商都是用的我topic里的一个观点“andoid应用突”》做为报道点,希望大家能顺利突围!
4 May
带了一个moto 的 milestone回来,到家发现我的mac无法给他充电,查了好大一会,找到一个解决的办法,如下:
按照http://blog.gruby.com/2006/11/27/charging-a-motorola-razr-over-usb/ 这个文章说的,下载一个motocharger.app.zip ,然后解压放在applications目录下,运行就可以充电了。
原因不晓,感兴趣的自己链过去了解~
24 Sep
今天起了大大早,搬出十八般武器研究起android market的数据通讯,想看看是数据传输的方式以加以借鉴和参考。
最终结果是Sniffer到数据通信了,但是无法破解其使用的协议,最终很多内容无法还原,如此看来其走的肯定是一套私有的协议,那么下一步就是,有时间的话反编译android market客户端的源代码,看看其协议是怎么样的。
截图一张:

20 May
这篇文章是非技术性的,所以使用中文写,免得写了大家看不懂,呵呵。
写书不是第一次,出版却是第一本,至于原因,就不详述了,去年9月开始参与一些图书的翻译和撰写中,截至到目前,这段时间一共参与了三本书,按照参与的先后顺序,分别是《The Rails Way》,《Google API 编程.开发.实例》以及《Google Android开发入门与实战》。
其中《The Rails Way》是做为译者参与,其他翻译者都是国内第一批Rails技术人员,分散在全国各地,还有一名译者在加拿大,我一共翻译了5章内容,分别是第2章“Working_with_Controllers”,第10章“ActionView”,第13章“Session__Session_Management”,第15章“XML_and_ActiveResource”和第16章“ActionMailer”,翻译很早前就结束了,目前好像还在审稿、校核工作,由YiTan在跟,至于何时出版,我还真不知道。
《Google API 编程.开发.实例》我是从去年9月份介入,开始参与选题和策划,截至撰写相关内容,因为我自身是Google重度使用者,平时也比较多的使用和了解GoogleAPI,所以写起来得心应手,一共写了“Google Account Authentication”,“Google AJAX Language API”,“Google Chart API”,“Blogger Data API”,“Feedburner API”,“Google Code Search Data API”和“Google Book Search Book Viewability API”这些章节,前前后后也花了不少零碎的时间。其他作者大多都Google内部的同学,本书已经进入出版流程,由博文视点出版社策划出版,应该在6.5号Google开发者大会上可以看到,如下是本书第一版封面。

本书特点:本书覆盖了Google绝大多数的API,其中针对每个API就其原理、用法做了详细说明,最后基本上都有实际的例子演示如何使用。
《Google Android开发入门与实战》是08年11月份开始撰写的,和另外一个朋友一起,两个人陆续的差不多用了半年时间,在09年4月份差不多全部写完,后面主要是都在校核和审稿,由人民邮电出版社出版,5月底6月初即可上市,封面如下:

本书内容特点: * 国内第一本原创Android图书 * 完全基于Android最新的SDK1.5 * 全书除了大量小型案例之外还包含了5个Android平台下的完整商业实例及源码分析,分别是RSS阅读器、 基于GoogleMap的个人GPS、豆瓣客户端、在线音乐播放器、手机信息助手 * 随书附赠的光盘中包含300分钟的详细教学视频以及Android开发必备的开发资源 * 读者对于此书内容的疑问可以访问http://www.eoeandroid.com社区,作者团队将会及时解答,不在这里解答,谢谢。样章下载:http://www.eoeandroid.com/viewthread.php?tid=314&extra=page%3D1 视频下载:http://www.eoeandroid.com/viewthread.php?tid=328&extra=page%3D1PS:
这里只是我个人技术随笔,理论上不保证在这里解答图书中问题,如果你对图书有问题,
请前往其支持社区“《Google Android开发入门与实战》专版”寻求解答;
如果你想对我个人说些什么,那非常欢迎。
12 Mar
Android have lots of intent,it’s powerful and useful,here is some tips for you:
1,start web browser
Uri myBlogUri = Uri.parse("http://kuikui.javaeye.com");
returnIt = new Intent(Intent.ACTION_VIEW, myBlogUri);
2,Google map
Uri mapUri = Uri.parse("geo:38.899533,-77.036476");
returnIt = new Intent(Intent.ACTION_VIEW, mapUri);
3,show dialer tel
Uri telUri = Uri.parse("tel:100861");
returnIt = new Intent(Intent.ACTION_DIAL, telUri);
4,start call dialar
Uri callUri = Uri.parse("tel:100861");
returnIt = new Intent(Intent.ACTION_CALL, callUri);
5,uninstall apk
Uri uninstallUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);
6,install apk
Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
7,play audio
Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");
returnIt = new Intent(Intent.ACTION_VIEW, playUri);
8,show send email ui
Uri emailUri = Uri.parse("mailto:shenrenkui@gmail.com");
returnIt = new Intent(Intent.ACTION_SENDTO, emailUri);
9,send email
returnIt = new Intent(Intent.ACTION_SEND);
String[] tos = { "shenrenkui@gmail.com" };
String[] ccs = { "shenrenkui@gmail.com" };
returnIt.putExtra(Intent.EXTRA_EMAIL, tos);
returnIt.putExtra(Intent.EXTRA_CC, ccs);
returnIt.putExtra(Intent.EXTRA_TEXT, "body");
returnIt.putExtra(Intent.EXTRA_SUBJECT, "subject");
returnIt.setType("message/rfc882");
Intent.createChooser(returnIt, "Choose Email Client");
10,send sms
Uri smsUri = Uri.parse("tel:100861");
returnIt = new Intent(Intent.ACTION_VIEW, smsUri);
returnIt.putExtra("sms_body", "shenrenkui");
returnIt.setType("vnd.android-dir/mms-sms");
11,send email
Uri smsToUri = Uri.parse("smsto://100861");
returnIt = new Intent(Intent.ACTION_SENDTO, smsToUri);
returnIt.putExtra("sms_body", "shenrenkui");
12,send mms
Uri mmsUri = Uri.parse("content://media/external/images/media/23");
returnIt = new Intent(Intent.ACTION_SEND);
returnIt.putExtra("sms_body", "shenrenkui");
returnIt.putExtra(Intent.EXTRA_STREAM, mmsUri);
returnIt.setType("image/png");
if you have other intent,please share to me ,thx.
useful resource link here:
http://kuikui.javaeye.com/blog/318627
12 Mar
In some case,you may want do get Uniquely Identifying for a ‘real’ android phone,such as IMEI code,SimOperator etc, and we all kown ,the IMEI like ID card,and you can use TelephonyManager to get it,some usefull codes like this :
and,your output like here.
some userfull resource link:
http://developer.android.com/reference/android/telephony/TelephonyManager.html
4 Mar
In some case,you may want do get Uniquely Identifying for a ‘real’ android phone,and you can do it like this:
In Android.Provider.Settings.System we have some interesting values that could be of use, one specifically is “Android_ID”. From the documentation it is the following;
String ANDROID_ID The Android ID (a unique 64-bit value) as a hex string. “android_id”
Also, note that in an emulator this will return “null”, though a real device will return an actual value. The nice thing about this tid-bit of code is that you are not required any special permissions to call it, since it’s essentially a passive call to get information. No write access is (obviously) required.
Some userfull link resource come here:
21 Jan
F:\keytools>”C:\Program Files\Java\jdk1.6.0_10\bin\jarsigner.exe” -verbose -keystore keys/iceskysl.keystore -signedjar iTracks_signed.apk iTracks.apk iceskysl.keystore
18 Jan
在Android中使用GoogleMap非常方便,但是有些小技巧或者注意事项你必须牢记,否则调试半天你也不会找到啥线索,浪费时间不说,更让你狂抓,以下技巧都是我在实际项目中遇到的,不断更新和维护,如果你有类似技巧,欢迎分享:
(以下技巧是基于SDK 1.0的)
一、申请Apikey,并放在正确的位置
这个应该都知道,但是是申请得到的key放哪里很多人不知道,可以放在
1、XML布局文件中
<view android:id="@+id/mv"
class="com.google.android.maps.MapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:apiKey="01Yu9W3X3vbpYT3x33chPXXX7U1Z6jy8WYZXNFA"
/>
2、java中
mMapView = new MapView(this, "01Yu9W3X3vbpYT3x33chPxxx7U1Z6jy8WYZXNFA");
二、记得导入uses-library
由于1.0版本的修改,使得map包不再是默认的了,使用的时候需要在manifest中的application节点下加入
<uses-library android:name="com.google.android.maps" />
否则,你将遇到可恶的“java.lang.NoClassDefFoundError: ”,切记!
三、需要给予一定的权限
因为要使用GoogleMAP的service,所以需要
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
如果需要GPS等应用,还需要
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
四、Activity需要继承自MapActivity
类似如下代码;
package com.iceskysl.showmap;
import com.google.android.maps.MapActivity;
import android.os.Bundle;
public class ShowMap extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
Comments::最新评论