Android开发笔记:编写运行第一个手机程序如此简单
我与Java
大二的时候,修过Java的选修课,考了90多分。虽说如此,但一直以来,我的Java水平仅停留在只会写一个简单的Hello world。可能是我对Java一向没有什么好感,平时也不会用到它!Kubuntu里的OpenJDK和Eclipse,都是为了交作业而安装的:)
开发环境配置
昨天就搭建好了Android开发环境了。我发现我之前安装的Eclipse Galileo版本是安装不了官网上下载的ADT插件的。所以,我被迫去Eclipse官网重新下载了最新的Eclipse Indigo Classic 3.7.1。问题解决了。另外,用OpenJDK代替Sun JDK完全没有问题!
开发环境的搭建参考官网的详细教程:
http://developer.android.com/sdk/installing.html
参考这篇教程,我在Android模拟器上成功运行了一个的Hello world:
http://developer.android.com/resources/tutorials/hello-world.html
一个选择题程序
在Hello world的基础上,稍加修改,做了一个简单的选择题程序。得益于Eclipse便捷的UI编辑工具,像堆砌积木一样,不到1分钟就做好了界面!请大家无视界面内容,以免影响你的情绪。
界面的XML配置内容如下,在按钮里,指定了响应onClick事件的函数。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/question" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="小虾" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="iceboy" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小白" />
</RadioGroup>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"
android:onClick="clickOK"/>
</LinearLayout>
在Activity代码里给按钮加入响应事件,打完代码,按Ctrl+Shift+O自动补全import,Eclipse的代码补全强大的惊人。
完整的Activity代码如下:
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
}
public void clickOK(View view){
RadioGroup rg = (RadioGroup)findViewById(R.id.radioGroup1);
int id = rg.getCheckedRadioButtonId();
String text = "";
switch(id){
case R.id.radio0:
text = "你太聪明了!";
break;
case R.id.radio1:
case R.id.radio2:
text = "你太愚昧了!";
break;
}
new AlertDialog.Builder(this)
.setTitle("结果")
.setMessage(text)
.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
HelloAndroidActivity.this.finish();
}
}).show();
}
}
按钮事件由clickOK函数响应,判断RadioGroup中被选中的按钮ID,使用AlertDialog输出提示结果信息。
这个AlertDialog的show方法不会阻塞当前线程,而弹出的对话框的按钮响应事件是异步的。
使用Activity的this.finish();方法来退出程序。不过这样做好像没有结束进程,请教Java大牛,如果要结束进程,是使用System.exit()不?
模拟器运行
使用SDK自带的模拟器运行的效果:
手机运行
然后,我想试试放在手机上运行。一开始,我在Eclipse的菜单里,通过导出未签名的Package,用蓝牙传输到手机上,运行之后,提示“应用程序未安装”。十分奇怪,难道是因为没有签名???上网查了一下,看来就是这个原因!
我直接复制工程目录下bin下的apk文件到手机上,意料之中,运行成功!
Android-x86运行
另外,我把apk文件复制到了我的Android-x86虚拟机上!这个Android-x86比起java那个模拟器,速度相差太大了。大家可以看看:
java模拟器CPU一直是100%,导致我的笔记本风扇一直在高速运转。而在VirtualBox的Android-x86只用了1%的CPU。相差甚远!另外,Android-x86的开机速度非常之快。不过,我还是习惯使用Virtualbox的休眠功能,连开机过程都免了。
因为我还没有配置好Eclipse与虚拟机的连接,所以我这里用了另外一种方法来复制文件到x86的虚拟机里。非常实用!!!
在终端里切换到apk所在的目录下,然后运行
root@xiaoxia-pc:/java/HelloAndroid/bin# python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
然后在虚拟机的Android里,输入网址 http://192.168.56.1:8000/
Android-x86里的运行效果:








2012年02月11日 05:52
哈哈 我也想玩玩android编程~~
2012年02月11日 09:39
板凳!我也想玩~
2012年02月11日 09:39
不错,希望把你们的开发过程都记录下来写成一系列的教程就好了。
我也想学习Android的开发,写点小东西什么的。
2012年02月13日 16:06
以后做android方面的开发,我尽量多写些文字说明吧。
我也是需要什么才上网查找资料的,还没有时间看各种教程。
2012年02月11日 11:32
有意思,玩点新鲜的东西挺刺激的。
你又加入到Android开发阵营了
2012年02月13日 16:05
恩!等熟悉了,把一些我需要应用移植android上面。
2012年02月11日 13:38
Android-X86。。。怎么都感觉有点无语。。。
更无语的是虚拟机竟然大胜模拟器。
很奇怪为什么很少有人用vmware运行这个?vmware player不也是免费的?虽然我也是用Virtual Box跑的。
2012年02月13日 16:03
只是用惯了,觉得vbox好用。还是开源的。
2012年03月21日 22:21
xiaoxia,那个android-X86在vbox里有驱动么,我没有找到对应的VM驱动,我就喜欢弄些操作系统鼓捣来鼓捣去
2012年03月23日 13:09
你需要安装啥驱动呢???
个人感觉,用这个虚拟镜像来做开发,其实很足够了呀~
2012年02月11日 13:50
表示模拟器速度不够快(PC配置高另说),我一般调试大一点的,图形的会直接真机
2012年02月13日 16:01
我还不知道如何在真机上测试和调试。
2012年02月11日 13:50
拒说,以后android会抛弃java,用google的方言golang!!!!!!
2012年02月11日 13:56
这在已有的几个系统版本是无恙的,无所谓
2012年02月13日 15:49
也好,不大喜欢java。
2012年02月13日 18:41
Android运行使用C++来开发的吧!
http://coolshell.cn/articles/3549.html
2012年02月13日 18:41
Android支持使用C++来开发的吧!
http://coolshell.cn/articles/3549.html
2012年02月11日 19:15
好方法,肯定快乐不少
2012年02月13日 02:11
嗯!虚拟机里的Android-x86效率很高!!!跟我手机一样流畅。
2012年02月12日 10:01
我一直以为博主是女生呢。。。
2012年02月13日 02:06
怎么样?失望了吧!
2012年02月13日 10:16
http://blog.csdn.net/coolszy/article/details/6787042
可以看看这里面的android开发教程,写的还行吧……
我开始就是看这个教程的……
2012年02月13日 14:00
看了原来是视频教程啊!
唉,还是有时间再关注一下吧。。。最近事情比较多。
你知道如何在android上建立VPN?类似在2.3系统上实现4.0里面的API VpnService.Builder的功能?
2012年05月09日 17:03
参考下这个:http://www.cnmsdn.com/html/201007/1279056988ID6833.html
2012年02月15日 01:13
如果真的开发游戏,如何跑NDK和编译C/C++?
2012年02月15日 04:41
在PC上开发编译。然后在手机运行
我在笔记本上写了个helloworld,arm gcc编译后放到手机上,可以运行。
2012年02月15日 22:02
个人觉得安卓的开发和Qt好像
2012年02月17日 00:37
请问Xiaoxia的email?
2012年02月18日 02:32
我觉得你探索一下我博客,应该很多地方都会见到我留的Email。
特别是源代码。
xiaoxia@xiaoxia.org
2012年03月21日 22:23
我有在小虾的MYqq看到,嘎嘎
2012年03月23日 13:10
细心的同学
2012年02月20日 09:38
最近也在研究android,谢谢小虾的分享,学到了很多东西
2012年02月29日 13:35
这是linux 上的eclipse?界面怎么调的?还算紧凑,默认的太浪费空间了
2012年02月29日 16:36
我这局部截图是在笔记本上的,eclipse是在官网下载的标准版本。可能你用的那个版本比较适合于大屏幕的吧。
2012年03月07日 18:46
是呀,不仅简单,而且有趣,我也在学习。
2012年03月11日 20:54
python -m SimpleHTTPServer
这是一个Linux的十大最牛命令之一。。。