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;
}
}
}
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..需要注意啊!
Android开发日志 UI(2) 事件绑定
本文已经参加 “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”
为princehaku原创 如果您忘了我的地址 请使用google搜索 “Android开发日志”
Android里面
常用的事件分为如下几个
这些事件的用法呢?..
其实也很简单
看如下这段代码(来自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);
Android开发日志 UI设计工具
本文为princehaku原创 已经参加 “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”
如果您忘了我的地址 请使用google搜索 “Android开发日志”
今天找到个好东西Android的UI设计工具
其实官方也有个appinventor
不过呢..我没得到批准..而且貌似要用手机才行..
我也没手机..
找到了这个..
这个是它的界面
看不清楚请点一下..
这个工具的功能挺强的..
布局 啊..完全用它没问题..
点Generate可以生成XML..
然后用之前提到的方法即可生成应用的界面..
Android开发日志 UI (1)
本文为princehaku原创 已经参加 “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”
如果您忘了我的地址 请使用google搜索 “Android开发日志”
要在android里面设置布局..
setContentView(R.layout.main);
<?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>
<?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>
话说真的很丑么?..
Android开发日志 资源文件
本文为princehaku原创 已经参加 “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”
如果您忘了我的地址 请使用google搜索 “Android开发日志”
之前的kvb..
因为有课表的数据..
只是做了小小的测试..
没想到直接把全部的html插入的话..
string会溢出..constant string too long
那就只好用资源文件了!
在android里面的资源文件定义是很方便的
只需要在资源文件夹加入即可
调用的方式如下
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文件..然后生成日程把!
Android开发日志 KVB移植..
本文为princehaku原创 已经参加 “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”
如果您忘了我的地址 请使用google搜索 “Android开发日志”
之前做的时候全封装成一个类了..
虽然还没有做好.
先测试下移植是否正常
先直接使用..
卡住了..
这样再试试..加入个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);
显示出了结果
那也就是说解析式正常的了..
好..移植成功..android果然强大..
接下来是完成kvb的核心部分…
解析课程到日程表..
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);
}
}
Android开发日志 PRE
本文为princehaku原创 已经参加 “首届 Google 暑期大学生博客分享大赛——2010 Android 篇”
如果您忘了我的地址 请使用google搜索 “Android开发日志”
今天才看到这个…
果断下载SDK..
话说原来Android居然是java..以前一直以为是c++
正好KVB(自动抓取教务处课表然后存进用户的日程表)
缓慢的进度快收尾了..
做一个Android版的…
星际争霸2 之强大的关键词
看看这个….在打完红石星之后的新闻..
我不说话..