听说下一个互联网时代是终端时代,而且最近微博、IPhone、Android都特火。于是就开始捣鼓起Android来,虽然去年三月份的时候就花了三千四百大洋买Milestone。但是一直忙于学习与考试没有功夫来学习学习Android方面的开发。新年元旦利用两天假期+万能的Google搜出来的代码搞了第一个Android应用程序,虽然是第一个,但不是“Hello World”级别的,至少还是多线程的:)

庐山真面目:MyWhois

这就是我的第一个Android应用:MyWhois,通过在输入框输入域名后查询该域名的所有者信息。当然域名Whois信息的查询接口我已经在我的网站上开发好了,MyWhois只不过是通过http get方式调用一下而以。好了下面就简单介绍一下如何开发这个应用吧。

Android开发环境的搭建

我的环境是Windwos 7 64bit+Eclipse Helios Service Release 1+JDK 6 64bit,那么首先上Android Developer 官网下载最新的installer_r08-windows.exe,下载完之后通过提示安装相应的SDK及工具包,这一步安装还是比较顺利只不过下载的时间较长而以。安装好SDk之后,还需要从官网下载Eclipse的Android开发工具插件ADT并通过Eclipse菜单中的Help->Install New Software…进行安装,安装好之后在菜单Windows->Preferences->Android->Android Perferences的SDK Location中指向Android SDK的安装目录(如下图)。之前我在安装过程中到这一步之后就一直提示我目录错误,SDK列表刷不出来。其实主要是因为adb.exe与Android 1.5的位置不同,还有我之前安装的ADT版本好像只支持Android 1.5版的。通过升级了ADT就解决了该问题。

OK,以上就是Android开发的环境搭建的几个基本步骤。详细的步骤请参考SDK里的Installing the SDK。

MyWhois开发

1.项目目录结构

下面就是具体的应用开发了,在下面的内容开始之前,先允许你开个小差在Eclipse上捣鼓个“Hello World”的Android程序先过一过瘾。那么我们就认为你已经有了一点点的经验。在开发应用程序之前我们首先需要创建一个Android应用程序。创建好之后我们来看看我们项目的目录结构(如下图)。简单介绍一下:res/layout/main.xml是程序的界面代码部分,src/CBCYE.MyWhois/MyWhois.java是程序的代码部分。

2. 程序界面部分开发

习惯了.NET拖拽的方式来开发程序界面而且鉴于IDE严重比不上Visual Studio所以可以使用第三方的DroidDraw来开发应用程序的界面。之后再把代码拷贝到main.xml中。本程序中使用到的控件有:EditText、TextView、Button。具体的界面自己画吧,效果图如下:

需要注意的是由于有些Whois信息比较多一屏可能显示不了,那么就需要滚动条。Android里面需要使用ScrollView与TextView结合来实现滚动条功能。具体代码如下:

1 < ScrollView xmlns:android ="http://schemas.android.com/apk/res/android"
2 android:layout_width ="306px" android:layout_height ="410px"
3 android:layout_x ="7px" android:layout_y ="61px"
4 android:scrollbars ="vertical" android:fadingEdge ="vertical" >
5 < TextView
6 android:id ="@+id/ResultView"
7 android:layout_width ="fill_parent"
8 android:layout_height ="fill_parent"
9 android:layout_marginTop ="2px"
10 android:layout_marginBottom ="2px"
11 android:layout_marginLeft ="2px"
12 android:layout_marginRight ="2px"
13 android:text ="请在输入框中输入域名"
14 android:layout_x ="7px"
15 android:layout_y ="61px"
16 >
17 </ TextView >
18 </ ScrollView >
19

3.程序代码部分开发

本部分基本上靠Google来完成。我自己加了些注释,大家应该看得懂,思路是:通过监听Button的OnClick事件之后获得EditText的值。创建一个新的线程(否则主界面会假死)向事先定义好的接口地址请求Whois信息并通过Handler来将返回的消息界面到TextView控件。

MyWhois_SourceCode package CBCYE.MyWhois;

import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.EditText;
import android.widget.Button;

import android.os.Message;
import android.os.Handler;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EncodingUtils;

public class MyWhois extends Activity{
private TextViewvResult;
private EditTexteKeyWord;
/** Calledwhentheactivityisfirstcreated. */
@Override
public void onCreate(BundlesavedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.main);

ButtonsButton1
= (Button)findViewById(R.id.Submit);
vResult
= (TextView)findViewById(R.id.ResultView);
eKeyWord
= (EditText)findViewById(R.id.KeyWord);

// 注册点击事件监听者
sButton1.setOnClickListener( new OnClickListener()
{
public void onClick(ViewaView){
TextViewvResult
= (TextView)findViewById(R.id.ResultView);
vResult.setText(
" 正在查询中,请稍等! " );

// 新建查询线程,否则UI界面会假死
ThreadmThread = new Thread( new Runnable(){
public void run(){
try {
// 返回的数据需要使用'\n'来换行!
URLurl = new URL( " http://www.cbcye.cn/whois.axd?w= " + eKeyWord.getText().toString());

URLConnectionurlConnection
= url.openConnection();
InputStreamis
= urlConnection.getInputStream();

/* 用ByteArrayBuffer做缓存 */
ByteArrayBufferbaf
= new ByteArrayBuffer( 50 );
int current = 0 ;

while ((current = is.read()) != - 1 ){
baf.append((
byte )current);
}

/* 将缓存的内容转化为String,用UTF-8编码 */
StringmyString
= EncodingUtils.getString(baf.toByteArray(), " UTF-8 " );
// myString=newString(baf.toByteArray());
// vResult.setText(myString);
Messagemg = Message.obtain();
mg.obj
= myString;
mHandler.sendMessage(mg);

}
catch (Exceptione){
e.printStackTrace();
}
}

});
mThread.start();
}
}

);
}

// 定义一个Handler
private HandlermHandler = new Handler(){
public void handleMessage(Messagemsg){
Stringm
= (String)msg.obj;
if (m.length() <= 0 )
{
vResult.setText(
" 查询结果为空. " );
}
else
{
vResult.setText(m);
}
}
};
}

由于程序需要使用网络连接所以需要事先声明程序的权限,这一点还是挺好的,毕竟移动流量比有线的贵很多。设置的地方是在MyWhois.Manifest中添加相应的权限定义语句,具体如下:

MyWhois_Permission <? xmlversion="1.0"encoding="utf-8" ?>
< manifest xmlns:android ="http://schemas.android.com/apk/res/android"
package
="CBCYE.MyWhois"
android:versionCode
="1"
android:versionName
="1.0" >
< uses-permission android:name ="android.permission.INTERNET" />
< application android:icon ="@drawable/icon" android:label ="@string/app_name" >
< activity android:name =".MyWhois"
android:label
="@string/app_name" >
< intent-filter >
< action android:name ="android.intent.action.MAIN" />
< category android:name ="android.intent.category.LAUNCHER" />
</ intent-filter >
</ activity >

</ application >

</ manifest >


调试与部署

Android应用程序的调试可以使用SDK自带的虚拟机来实现也可以通过USB接口连接真实的手机来实现(需要在手机中开启USB调试)。如果需要使用虚拟机来实现的话在Eclipse菜单Windows->Android SDK and Manager的Virtual devices中新建虚拟机。


那么在调试的时候就会让你选择是使用哪台虚拟机或者是使用USB相连的手机来进行调试,如果选择自动模式的话可能系统会自动启动一台虚拟机来进行调试。

最后,我们就可以在虚拟机里看到我们开发的程序了。

当然,我们实际开发过程中可能这些信息还不够,那么我们就可以点击Eclipse中的Debug Tab在Log Cat中查看更详细调试信息。USB连接手机的调试与虚拟机类似。

总结

初步试了一下Android,虽然代码都是从网上东拼西凑的而且对Java也不是太了解。但是觉得蛮有意思、蛮有成就感的,特别是自己开发的程序能在自己的手机上运行时。我觉得程序开发这一些应该问题不大。另外要是界面开发这一块再有点大改进或者有更好的IDE来支持开发的话那就太完美了。未来的互联网就是终端的天下,信息基于终端开发的应用会越来越多,开发起来也会越来越简单。

源码下载

参考资料

Android之旅--Handler与多线程

Android线程交互(Handler+Thread 和 AsyncTask)

更多相关文章

  1. [笔记]2012年移动大趋势(上)
  2. Android开发规范(编码+性能+UI)
  3. USB开发------android AOA开发
  4. 【Android】Android开发规范详解
  5. Android智能电视应用程序开发浅谈(一)
  6. 安卓开发一步到位
  7. 【雨松MOMO】Android(安卓)软件开发与游戏开发1 至 32系列博文大
  8. 7款Android开发者常用的Android(安卓)UI组件
  9. 独立android开发者开发app如何盈利

随机推荐

  1. Android(安卓)- 混淆jar包 ProGuard GUI
  2. 解决android上java.net.UnknownHostExcep
  3. Android动态加载技术 系列索引
  4. Android7.0适配心得
  5. Android(安卓)Java层的anti-hooking技巧
  6. android网络与通信
  7. Android开发基础01——Android(安卓)SDK
  8. Android(安卓)实现ListView的点击变色的
  9. 腾讯的Android助手占用adb,android sdk无
  10. (原创)Android(安卓)Studio常用快捷键大全