Archive for 七月 2011

Android 监听短信接收 获取发件号码、短信内容

Android在收到短信后会发送一个Action为android.provider.Telephony.SMS_RECEIVED的广播,所以我们只需要写个类继承BroadcastReceiver就可以很容易地监听到短信。
Continue reading “Android 监听短信接收 获取发件号码、短信内容” »

Java中String和StringBuilder区别

一直以来,字符串操作我都直接用String,今天发现有个StringBuilder,研究了一下,发现我一直都是用一种低效率的方法。简单记下区别。
String:对应的内存空间其实是不可改变的。执行字符串相加时,其结果是放在重新申请的新的空间,看下面的例子: Continue reading “Java中String和StringBuilder区别” »

AlertDialog 不点按钮关闭对话框(用代码关闭)方法

之前创建AlertDialog一直用AlertDialog.Builder dialog=new AlertDialog.Builder(Context context),结果发现如果没有添加按钮,要关闭这个对话框就有点困难。AlertDialog继承自Dialog类,但是这个创建的dialog却没有dismiss方法.其实是我理解错了,看了开发文档,发现AlertDialog.Builder对象不是AlertDialog对象,AlertDialog.Builder只是一个创建AlertDialog的构建工具。但是AlertDialog的构造函数是protected,我们无法直接实例化一个AlertDialog对象。
还好,AlertDialog.Builder提供了create()方法,可以构建一个AlertDialog对象,于是我们可以使用dismiss()方法在代码中关掉AlertDialog.只要把第一句创建AlertDialog的代码修改一下,就可以直接使用,因为AlertDialog.Builder和AlertDialog的常用方法,功能和参数都是一样的。 Continue reading “AlertDialog 不点按钮关闭对话框(用代码关闭)方法” »

Android Activity中启动另一应用程序的方法,无需得到类名

在网上搜索了一会相关的实现代码,发现所有的文章都说是需要包名和类名。但是人家的程序,我们怎么可能知道哪个是第一个启动的Activity?所以,真正用在项目上,那种方法基本上没什么用的。于是查看官方文档,发现这样一个方法


public abstract Intent getLaunchIntentForPackage (String packageName) 

英文原文:Return a "good" intent to launch a front-door activity in a package, for use for example to implement an "open" button when browsing through packages.大概意思就是返回一个程序入口的Intent,就是Java程序的Main方法。
这下简单了,直接startActivity(返回的intent)即可。
下面的代码基于前文Android得到系统已安装应用程序包列表方法 自定义ListView显示 PackageManager的使用,直接下载前文的包,把Main.java内容替换成以下就可以:
Continue reading “Android Activity中启动另一应用程序的方法,无需得到类名” »

Android得到系统已安装应用程序包列表方法 自定义ListView显示 PackageManager的使用

得到系统安装的程序包,可以通过PackageManager对象getInstalledPackages方法,该方法直接返回一个包含程序包信息PackageInfo的List。今天学习PackageManager的同时,顺便记一下ListView使用自定义适配器以及自定义视图的方法,前面写得不够详细。先看效果图:

每一项分成三部分,左边是应用图标,右边分上下两部分,上面是应用名,下面是包名。顺便说一下,ListView的自定义布局,定义的是一项的布局,然后根据项的数量叠加。
下面是这个布局的xml代码 piitem.xml: Continue reading “Android得到系统已安装应用程序包列表方法 自定义ListView显示 PackageManager的使用” »

Android开发 新浪微博API的使用(发布微博)

今天下了个新浪微博的API研究研究,目前实现了发布微博功能,包括带图片的微博。为了安全,新浪微博的API中并没有提供用微博帐号密码登录的功能,而是采用OAuth授权,用户通过浏览器访问新浪网站登录,登录成功后,浏览器再返回key和secret给程序。
Continue reading “Android开发 新浪微博API的使用(发布微博)” »

开博一周年 Android应用开发一周年总结

         一年以前,因为对当时收入的不满,以及对那份连临时工都不如的工作未来的迷茫,还有我对计算机的向往,我决定回头干IT。考虑到移动应用开发目前比较热门,而Android市场占有率也节节攀升,而且语言采用的是以前在大学听过几节课的Java,我毅然选择了Android.虽然早有预料干这行会很辛苦,不加班才不正常,但是对于一个自己感兴趣的工作,即使是天天加班也很快乐,因为我在做我喜欢做的事。

         虽然有那么点Java基础,但是大学里真的学不到什么东西。 而且,我没碰Java都两年了,基本上都还给老师了(实在对不起左光华老师) ,所以一切都重头学起。每天下班后,还有周末,我都经常主动留在办公室帮同事值班,为的利用办公室的网络,学习Android。因为Android在界面方面用的是XML,Java基本上只用到最基础的知识,用不到Swing、SWT什么的,学习起来难度不大。 

           在一年以前,或者说一直到现在,很多人都认为Android不如IOS赚钱。有报告指出,超过60%的开发者没收入,剩余有收入的开发者中,有一半开发者表示收入很差或者不是很好。在这一点上,我觉得我是幸运的。在正式学习Android开发两个月以后(2010年9月),我发布了第一个应用,高清壁纸,就是发现现有的壁纸软件分辨率都太低,基本上都是适用于HVGA屏幕的,在我的MileStone效果很差,当时用的Wooboo广告平台(传应用送50RMB活动),到月低,差不多也有100块收入了(我明明设置了月底自动提现,但是那一百多块钱到现在好像还在Wooboo帐号里)。到了十月份,我把软件改成用WebView做UI(主要是因为我是新人,用Android做UI还不太会),把广告换成了adsense mobile(Google不允许把AdSense 移动广告放进应用里,不过我整个应用就是一浏览器,所以跟普通的网页基本没区别),收入达到了100多一点,当然,这是美元。没有什么比金钱的鼓励更实在了。接下来的几个月,我又更新了几次,到了今年1月,广告收入已经超过我本职工作的工资了,再加上近期我们领导干了几件不把我们当人看的事,我决定过完年辞职,专职做Android开发。2月份,过完年,顶着巨大的压力(几乎没有一个人支持)递了辞职报告。所谓有压力才有动力,我每天几乎从早上8点敲代码敲到晚上12点,发布了几个应用。到了4、5月份,收入差不多达到二级城市白领的标准了。但从6月份开始,一直到现在,adsense mobile单价暴跌,降到了0.02-0.04,以前可是0.07-0.1,收入严重缩水。最近发的几个应用全都换国内的广告平台,但是国内的平台十个九个黑。单价就一毛多一点,还扣量,最后还要扣6%的税,到手的没多少,感觉我们开发者完完全全就是给他们打工。

           最后感谢所有来到我博客的朋友,这个博客建立之初只是用作学习记录,没想到有这么多朋友喜欢。到目前为止,在几乎没有任何宣传的情况下,流量达到了800IP,虽然以前建过差不多有十来个网站,但好像这个是除了音乐网站外,流量最高的了。虽然收入缩水,但我还是会坚持。这世上有多少人能把自己的爱好兴趣当成工作?我觉得我很幸福。也许有一天我坚持不了了,我也会找家公司继续干这行。

          因为长期宅家不与人接触,语言表达能力退化,如果有看不懂,跳过吧。

Android NDK(JNI)开发入门

NDK这东西如果是第一次用有点麻烦,我花了一天时间参考网上的文章,总算写出了Hello World.网上的文章都直接拷代码,没几篇写得具体点的。说明一下,对于C语言,我属于新手,怎么个新法?就是花了一两天时间,看了几节视频教程的那种。所以下面我的观点有什么错误,请见谅。本来想录个视频教程,但想想还是算了,我得把配置好的环境全删了再装,太麻烦,和我一样新或者比我还新的新手朋友如果看不懂,留言吧,我尽心帮忙。
第一步,下载安装NDK和Cygwin,Cygwin这东西其实就类似于一个Linux的模拟器,你要是用Linux开发,就不用装这东西了。
NDK:http://developer.android.com/sdk/ndk/index.html 貌似今天不用翻墙,网页上已经是r6版,我用的是r5
Cygwin:http://www.cygwin.com/setup.exe 是一个在线安装的文件,下载了打开
Cygwin安装时会提示选两个路径,第一个是安装路径,第二个是安装文件下载后存放路径,注意区别。下载站点选mirrors.163.com,贼快。Select Packages时勾选devel里的make、gcc、gcc-core、gcc-g++这个不是很确定,反正我是把所有描述为C compiler,C++ complier的都选了。
我的安装路径:
Continue reading “Android NDK(JNI)开发入门” »