2010年3月25日 星期四

Android and HttpRequest I

public String getHttpRequest(String urlstr) {
// TODO Auto-generated constructor stub
String result="";

try
{
HttpClient hc = new DefaultHttpClient();
HttpEntity entity = null;
HttpGet httpget = new HttpGet(urlstr);
HttpResponse rp = hc.execute(httpget);

if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
entity = rp.getEntity();
result = EntityUtils.toString(entity);
}
else
{
result="err";
}
hc.getConnectionManager().shutdown();
}
catch (Exception se)
{
result=se.getMessage();
}
return result;
}

2010年3月16日 星期二

Android and SQLite II

private String mDBPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+ "/";
private String mDBFilename = "";
SQLiteDatabase database;
String mDirectory ="myDB";

//設定資料庫路徑
public void setDatabase(String Directory,String DBFile ) {
// TODO Auto-generated constructor stub
mDirectory = Directory;
mDBFilename = DBFile;
}

//將資料庫傳送到記憶卡
public SQLiteDatabase OpenDB(Context con,int RFile)
{
try
{
String DBFile = mDBPath + mDirectory+"/" + mDBFilename;
File dr = new File(mDBPath + mDirectory);
if(!dr.exists()) dr.mkdir();

if(!(new File(DBFile)).exists())
{
InputStream is = con.getResources().openRawResource(RFile);
FileOutputStream fos = new FileOutputStream(DBFile);
byte[] b = new byte[8192];
int count=0;

while((count=is.read(b))>0)
{
fos.write(b,0, count);
}
fos.close();
is.close();
}

database = SQLiteDatabase.openOrCreateDatabase(DBFile, null);
return database;
}
catch(Exception se)
{
throw new RuntimeException(se.getMessage());
}
}
//讀取資料庫內容
// [HASPMap[String,String]] > < 不能用 ][取代
public ArrayList [HASPMap[String,String]] getDBTable(String table, String[] Fields)
{
ArrayList[HASPMap[String,String]] dbdata = new ArrayList[HASPMap[String,String]]();
Cursor c= database.query(table, Fields, null, null, null, null, null);
for(int i=0;i {
c.moveToPosition(i);
[HASPMap[String,String]] d = new [HASPMap[String,String]] ();
for(int j=0; j {
d.put(Fields[j], c.getString(j));
}
dbdata.add(d);
}
return dbdata;
}

2010年3月13日 星期六

Android and SQLite I

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;

public class main extends Activity implements OnClickListener, TextWatcher {

private final String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+ "/myDB";
private final String DATABASE_FILENAME = "etraffic.sqlite";
SQLiteDatabase database;
Button btnSelectWord;
AutoCompleteTextView actvWord;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

database = openDatabase();
btnSelectWord = (Button) findViewById(R.id.btnSelectWord);
actvWord = (AutoCompleteTextView) findViewById(R.id.actvWord);
btnSelectWord.setOnClickListener(this);
actvWord.addTextChangedListener(this);

}

public void onClick(View view)
{
String sql = "SELECT * FROM FreewayPoint_CCTV where cctv_id=?";
Cursor cursor = database.rawQuery(sql, new String[]{
actvWord.getText().toString()
});

String result = "找不到";

if(cursor.getCount()>0)
{
cursor.moveToFirst();
result=cursor.getString(cursor.getColumnIndex("roadsection"));
}

myClass cl =new myClass();
cl.Alert(result, "Title", this);
}

private SQLiteDatabase openDatabase() {
try {

String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();

if (!(new File(databaseFilename)).exists()) {

InputStream is = getResources().openRawResource(
R.raw.etraffic);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;

while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}

fos.close();
is.close();
}

SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
return database;
} catch (Exception e) {
}
return null;
}

@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub

}

PostGIS and PostgreSql 功能說明

環域
select * from "GISpoint" where st_contains (buffer(st_geomfromtext('Point(2 2)'),1.0),"gisPoints");
select * from "GISpoint" where st_contains (buffer(st_geomfromtext('Point(2 2)'),1.1),"gisPoints");
select * from "GISpoint" where st_within "gisPoints“,buffer(st_geomfromtext('Point(2 2)'),1.1))

交集
select "CountyNameCht","TownNameCht","CountyNameEng","TownNameEng","CountyId","TownId"
from "CityTown" where st_intersects("geom",buffer(st_geomfromtext('Point({0} {1})'),{2})

吸附
select astext("geom"),line_interpolate_point("geom", line_locate_point("geom", PointFromText('Point(322655 2778900)')))
from "RoadSpeed"
order by Distance("geom",PointFromText('Point(322655 2778900)')) limit 1

坐標轉換
spatial_ref_sys
select * from "spatial_ref_sys"
select * from "spatial_ref_sys" where "srid"=4326 (WGS84)
select * from "spatial_ref_sys" where "srid"=3828 (TWD67 -121)
select * from "spatial_ref_sys" where "srid"=3826 (TWD97 -121)

select "Id", "TownId","TownCode","CountyNameCht", "TownNameCht","CountyNameEng", "TownNameEng", "CountyId",
st_transform(setsrid(geom,4326),3826) as geom
into "CityTown_67“ from "CityTown“
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2)

由空間資訊轉換坐標字串
select st_astext(geom) from \"BusPathLine\"

算距離
st_distance(geom,st_geomfromtext('Point(121.12341 24.23432)')

2009年12月16日 星期三

思考 要先有商業模式嗎?

雲:沒有。我覺得先做大,不要太想賺錢,利益不要最大化,才可能有最大利益。如果拿QQ跟facebook來比,facebook公司成立3、4年,這幾個月才獲利,雖然流量大過QQ,每個使用者只賺幾分錢,但QQ在2007年收益是facebook的4倍,每個使用者都能賺11、12元,線上廣告才約占13%,大部分收入來自於虛擬物品、遊戲、移動服務,相較之下,西方沒有這麼多的創意,我倒覺得可以向東方學習獲利模式。

李:你講得蠻對,互聯網上應該有多元化的獲利模式。真實世界有很多種不同付錢的方法,你買車、買房子、電視購物,都是先送再收錢。網路相對較一元化,主要是靠廣告、搜尋機制,希望有更多元化的嘗試。不過,我認為廣告、電子商務還是一個相當重要的收入來源,因為網路上很多的服務是免費的。
不過創新工場比較希望有business model,目前不適合做別人沒試過的創業模式,我們打造很多的小公司,有95%收入還是來自廣告、電子商務,我們比較不希望冒巨大的風險。
話說回來,我對於你們的商業模式很看好,幾乎是一種新媒體。兩廂情願,用戶選擇了你,他可能沒辦法抱怨,放一點置入性廣告在裡面,就像電影中放了可口可樂的杯子,潛移默化的做,如果你覺得我推的太厲害,就不要來上,這是個人選擇。我不知道怎麼去轉換成錢,但是你可以明顯看到,一個有很多跟隨者的人,可以設計一個合理的收費方式。
http://forum.30.com.tw/Board/show.aspx?go=1738&pg=3

2009年12月15日 星期二

FLEX 的編碼

private function getRSSContent():void
{
var request:URLRequest = new URLRequest(); //宣告網址要求物件
var loader:URLLoader= new URLLoader(); //宣告網址讀取物件

request.url=getXML.url; // 設定網址
loader.dataFormat = URLLoaderDataFormat.BINARY; // 文件的格式(本文是big5)
loader.addEventListener(Event.COMPLETE,completeHandlerXML); // 連結文成後執行 completeHandlerXML
loader.load(request);

}

private function completeHandlerXML(event:Event):void
{
var loader:URLLoader= URLLoader(event.target); //宣告網址讀取物件並讀取事件
var txt:ByteArray = ByteArray(URLLoader(event.target).data); //將文章放入到矩陣中
var utf8str:String=txt.readMultiByte(txt.length,"big5"); //字串為big5
var xmlObj:XML= new XML(utf8str); //字串轉換為XML
DG_RSS.dataProvider=xmlObj.channel.item;
}

學習 FLEX 跳出視窗

flex 的調出一個視窗功能
navigateToURL(request, "_blank");

javascript
window.open('');


參考 http://help.adobe.com/zh_TW/AS3LCR/Flash_10.0/flash/net/URLLoader.html