Big Bug Ban

兴趣 践行 创新

Android开发日志 HTTP联网下载

 

本文已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

为princehaku原创   如果您忘了我的地址  请使用google搜索  “Android开发日志”

最开始看到Android的参考文档..发现有java.net.HttpURLConnection一阵狂喜..

之前有用HttpURLConnection封装了HTTP的GET和POST两个方法..于是直接将以前的类放入

但是出问题了..什么都没有返回..去掉final..跳出了警告…

过多的重定向?..什么意思…找啊找…看到某论坛上的一位和我的差不多.

只是少了很多的setRequestProperty

难道是因为这个?..

于是乎..去掉所有setRequestProperty

然后正常了…

好了..得到GAE上返回的数据了…接下来就是在手机再次解析这些数据..然后存入日程..

还有就是得新加个进程…服务器上的数据也要改..中间得加缓存机制..不然超时很容易….希望明天能搞定…

最后放上下载的类 ..去掉了POST..去掉了cookie…基本只能用来单下载了…

package VirtualBroser;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 下载网页内容
 * 
 * @author princehaku
 */
public class VB {
  
	/**
	 * url
	 * 
	 * @param url
	 *            提交地址
	 * @param encode
	 *            编码
	 */
	@SuppressWarnings("finally")
	public String get(String url, String encode) throws Exception {

		String line = "";

		String content = "";

		HttpURLConnection httpConn = null;

		try {
			URL turl = new URL(url);
			// System.out.println(url);
			httpConn = (HttpURLConnection) turl.openConnection();
			httpConn.setRequestMethod("GET");
                        httpConn.connect();
			InputStream uurl=null;

			uurl = httpConn.getInputStream();

			BufferedReader br = new BufferedReader(new InputStreamReader(uurl,
					encode));
			while (line != null) {
				line = br.readLine();
				if (line   !=   null)
					content = content.toString() + line.toString() + "\n";
			}
			// 关闭连接
			httpConn.disconnect();
			// System.out.println(content);
			return content;

		} catch (Exception e) {
			// 关闭连接
			httpConn.disconnect();
			// System.out.println(e.getMessage());
			throw e;
                }
	}
}

Written by princehaku

8月 7th, 2010 at 5:01 下午

Posted in Android

Tagged with ,

without comments

Android开发日志 日程处理

 

本文已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

为princehaku原创   如果您忘了我的地址  请使用google搜索  “Android开发日志”

最近制作的KVB – 全自动课表生成器..android版快要接近尾声了…

这个是系统流图..

抓取课表和产生日程部分..都是由服务器进行处理

目前已经放置到GAE..由google app engine进行处理

返回的结果比原有数据少很多..极大的减轻了手机的资源耗尽..

现在在手机部分还有个问题.就是将服务器返回的结果以日程的方式存入手机.

记得j2me上可以使用jsr75规范进行PIM的各种处理

google了一下..发现android也是可以操作日程的

使用前需要在manifest.xml中加入

 
    
    
    
    

    private void addEvent()
    {
          ContentValues event = new ContentValues();
          event.put("calendar_id", 1);//唯一的标识符
          event.put("title", "Event Title");//标题
          event.put("description", "Event Desc");//描述
          event.put("eventLocation", "Event Location");//地点
          long startTime = 120000000;
          long endTime = 120010200;
          event.put("dtstart", startTime);//开始的时间
          event.put("dtend", endTime);//结束的时间
          Uri eventsUri = Uri.parse("content://calendar/events");
          Uri url = getContentResolver().insert(eventsUri, event);//存入
    }

但是呢..模拟器不能用…哎…

这个暂时留到最后测试..

先把GAE上的那个给弄好

———————————————-

Update

To access the Corporate Calendar on Motorola devices, use “content://calendarEx” in place of “content://calendar”.

Update 2

For Android devices using 2.2 (Froyo) or greater, where previously you had content://calendar you should write content://com.android.calendar

以上是最近才找到的…加不起日程的原因..2.2 以及摩托罗拉系列改变了uri..需要注意啊!

Written by princehaku

8月 7th, 2010 at 12:58 上午

Posted in Android

Tagged with ,

without comments

Android开发日志 UI(2) 事件绑定

 

本文已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

为princehaku原创   如果您忘了我的地址  请使用google搜索  “Android开发日志”

Android里面

常用的事件分为如下几个

QQ截图未命名

这些事件的用法呢?..

其实也很简单

看如下这段代码(来自KVB)

public class MainActivity extends Activity implements OnClickListener{

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        bt=(Button)findViewById(R.id.button);
        bt.setOnClickListener(this);
    }
    /**点击按钮的事件
     *
     */
    public void onClick(View arg0) {
    //To Do
    }
}

这里我将主类实现OnClickListener的方法onClick(View arg0);

然后我就可以将它和一个事件绑定了
比如这里的bt.setOnClickListener(this);
也就是说当我点击按钮的时候..就会调用这个类的onClick事件啦
当然.您也可以自己写一个类来实现OnClickListener
然后再把它绑定给事件

官方的文档在这里

Written by princehaku

8月 5th, 2010 at 11:00 下午

Posted in Android

Tagged with ,

without comments

Android开发日志 UI设计工具

 

本文为princehaku原创   已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

如果您忘了我的地址  请使用google搜索  “Android开发日志”

今天找到个好东西Android的UI设计工具

其实官方也有个appinventor

不过呢..我没得到批准..而且貌似要用手机才行..

我也没手机..

找到了这个..

droiddraw-r1b14(点击下载)

这个是它的界面

看不清楚请点一下..

这个工具的功能挺强的..

布局 啊..完全用它没问题..

点Generate可以生成XML..

然后用之前提到的方法即可生成应用的界面..


Written by princehaku

8月 4th, 2010 at 9:01 下午

Posted in Android

Tagged with ,

without comments

Android开发日志 UI (1)

 

本文为princehaku原创   已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

如果您忘了我的地址  请使用google搜索  “Android开发日志”

要在android里面设置布局..

可以用res/layout/XXX  其实这个无所谓..一个标准而已
然后在主程序

setContentView(R.layout.main);

就可以调用
默认的netbeans里面有生成一个main.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">" 
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Hello Android from NetBeans"/>
</LinearLayout>
会显示出一段话  (请注意我标大红色的那个小分号.很关键.不能丢弃..至少在这里是..很诡异啊..)
然后这个是我设计的给KVB用的.目前就一个图片而已..
image
XML如下..
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">"
<ImageView android:id="@+id/imageview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/bg"
/>
</LinearLayout>

话说真的很丑么?..

8$L`O6}9PX[]JA_{J0{3QJ6

L`3%LMKSLT{SFGC]R(EBL)P

Written by princehaku

8月 4th, 2010 at 12:12 上午

Posted in Android

Tagged with ,

with 2 comments

Android开发日志 资源文件

 

本文为princehaku原创   已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

如果您忘了我的地址  请使用google搜索  “Android开发日志”

之前的kvb..

因为有课表的数据..

只是做了小小的测试..

没想到直接把全部的html插入的话..

string会溢出..constant string too long

那就只好用资源文件了!

在android里面的资源文件定义是很方便的

image

只需要在资源文件夹加入即可

调用的方式如下

        InputStream fs =this.getResources().openRawResource(R.raw.kb);

这个是我kvb的详细的例子..读取的kb.html是我的课表html文件..

/**
 * Copyright (c) 2010 princehaku
 * All right reserved.
 * Author princehaku
 * Site http://haku.hk
 * Created on : 2010-8-1, 22:31:48
 */

package org.me.androidkvb;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import net._3haku.kvb.CourseTable.CourseTable;
import net._3haku.kvb.util.Parser;
/**
 *
 * @author princehaku
 */
public class MainActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // ToDo add your GUI initialization code here
        TextView tv = new TextView(this);
        setContentView(tv);
        try {
        tv.setText("please wait");
        InputStream fs =this.getResources().openRawResource(R.raw.kb);

        InputStreamReader read = new InputStreamReader (fs,"gb2312");

        BufferedReader   in   =   new   BufferedReader(read);

        String kbhtml="";//FileInputStream fs;
        tv.setText("step1");
        int i=0;
        while(in.ready()&&i++<1000)
        {
            kbhtml +=in.readLine();
        }
        fs.close();
        CourseTable Tb=Parser.parseTable(kbhtml);
        tv.setText("step2");
        String res=Tb.getRowNums()+"周\r\n"+Tb.getCoursesNums()+"个课程\r\n";
        tv.setText(res);
        }
        catch (Exception ex) {
            tv.setText(ex.getMessage());
        }
    }

}

关于i那个地方…

之前没有加..一直不知道是什么原因..

加i是限制读取的长度..

虽然说只读取了1k行..

但是还是不得行…

总共有2800+行…

算了..解析放服务器上去..

就让手机解析XML文件..然后生成日程把!

image

Written by princehaku

8月 2nd, 2010 at 11:46 下午

Posted in Android

Tagged with ,

with one comment

Android开发日志 KVB移植..

 

本文为princehaku原创   已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

如果您忘了我的地址  请使用google搜索  “Android开发日志”

之前做的时候全封装成一个类了..

虽然还没有做好.

先测试下移植是否正常

先直接使用..

卡住了..

QQ截图未命名

这样再试试..加入个step1..看看是哪里的问题

        TextView tv = new TextView(this);
        tv.setText("please wait");
        setContentView(tv);
        fs = new FileInputStream("src/resourse/kb.html");
        InputStreamReader read = new InputStreamReader (fs,"gb2312");
        BufferedReader   in   =   new   BufferedReader(read);
        tv.setText("step1");

看样子是读文件那里…

多半是文件系统..

先直接写入String试试..

CourseTable Tb=Parser.parseTable(kbhtml);
tv.setText("step2");
String res=Tb.getRowNums()+"周\r\n"+Tb.getCoursesNums()+"个课程\r";
tv.setText(res);

显示出了结果

png3

那也就是说解析式正常的了..

好..移植成功..android果然强大..

接下来是完成kvb的核心部分…

解析课程到日程表..

Written by princehaku

8月 1st, 2010 at 11:45 下午

Posted in Android

Tagged with ,

without comments

Android开发日志 开发环境安装

 

本文为princehaku原创   已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

如果您忘了我的地址  请使用google搜索  “Android开发日志”

其实呢..

还没有装好..因为site不能访问了..


不能访问. 得想其他办法 了..

http://androidappdocs.appspot.com/index.html

这个可以打开..但是下载后更新不能..

个方式.下载到桌面安装…

更新ing..

稍后继续…

<!–more–>

下载到桌面也不行..速度太慢了..

于是乎…抓包..找到了真实的下载地址

2.2版

文档  http://dl-ssl.google.com/android/repository/docs-2.2_r01-linux.zip

API  http://dl-ssl.google.com/android/repository/google_apis-8_r02.zip

plantform http://dl-ssl.google.com/android/repository/android-2.2_r02-windows.zip

1.5版

plantform http://dl-ssl.google.com/android/repository/android-1.5_r04-windows.zip

下载之后放入sdk目录下的temp..就可以安装了..(如果没有就新建一个)

另外..还有个nbandroid-0.3 netbeans的插件

装好后选tool – plantform     ADD    google android  然后选择sdk里面的目录就可以了

————————–

如果装好后发现不能选平台…

首先请创建一个虚拟的设备..

其次就可能是插件的问题…nbandroid(点击下载0.2版)成低一点的版本的就可以了…

我用的是0.1版

在插件面板 加入更新的源

http://kenai.com/downloads/nbandroid/updates.xml

然后再更新,就可以安装了

———————————————————————

运行下.hello world


/**
 * Copyright (c) 2010 princehaku
 * All right reserved.
 * Author princehaku
 * Site http://haku.hk
 * Created on : 2010-08-01, 08:01 AM
 */
package org.me.demo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

/**
 *
 * @author princehaku
 */
public class MainActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // ToDo add your GUI initialization code here
        TextView tv = new TextView(this);
         tv.setText("Hello, Android");
         setContentView(tv);

    }

}

Written by princehaku

7月 31st, 2010 at 6:29 下午

Posted in Android

Tagged with ,

with 9 comments

Android开发日志 PRE

 

本文为princehaku原创   已经参加   “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”

如果您忘了我的地址  请使用google搜索  “Android开发日志”

今天才看到这个…

果断下载SDK..

话说原来Android居然是java..以前一直以为是c++

正好KVB(自动抓取教务处课表然后存进用户的日程表)

缓慢的进度快收尾了..

做一个Android版的…

Written by princehaku

7月 31st, 2010 at 4:19 下午

Posted in Android

Tagged with ,

without comments

星际争霸2 之强大的关键词

 


看看这个….在打完红石星之后的新闻..

我不说话..

Written by princehaku

7月 31st, 2010 at 8:51 上午

Posted in things goes by

with 2 comments