如何使用java來控制Google Calendar, 以下兩分投影片提供說明和實際的範例
Google Calendar Api 簡介
Google Calendar Api java 的 範例和程式碼
2009年3月30日 星期一
2009年3月24日 星期二
在java 下 讀取 Google Calendar api 的 XML 資料
標籤:
google api,
java
前提 import 所需要的liberary
code 如下
// import
import com.google.gdata.util.AuthenticationException;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
/**
* This is a test template
*/
public class CalendarPureXml {
public static void main(String[] args) throws IOException, SAXException, AuthenticationException {
//---- set proxy if hava proxy-----------------------------------
Properties systemSettings = System.getProperties();
systemSettings.put("proxyPort","80");
systemSettings.put("proxyHost","proxy.quanta.corp");
//---------------------------------------------------------------
//----get XML by network , the example is my calendar------------
URL feedUrl = new URL("http://www.google.com/calendar/feeds/chiachunchuang%40gmail.com/private-6f9ef2889d8ccb2b63254d091d7cfc63/full");
URLConnection con = null;
try {
con = feedUrl.openConnection();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
InputStream is = con.getInputStream();
//----------------------------------------------------------------
//----get XML-----------------------------------------------------
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = null;
try {
docBuilder = docBuilderFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
Document doc = docBuilder.parse (is);
//normalize text redivsentation
doc.getDocumentElement ().normalize ();
//-----------------------------------------------------------------
//----print information--------------------------------------------
//print title
System.out.println ("Root element of the doc is " +
doc.getDocumentElement().getNodeName());
System.out.println("-------------------------------------------------");
//--EX 1 get child node---------------------------------------
NodeList UPEntry = (NodeList) doc.getDocumentElement().getChildNodes();
// 取得 item
Node ent=UPEntry.item(1);
System.out.println("child name 1 : " + ent.getNodeName());
System.out.println("child value 1 : " + ent.getTextContent());
//------------------------------------------------------
System.out.println("-------------------------------------------------");
//--EX 2 get node with title---------------------------------------
NodeList entTitle= doc.getElementsByTagName("title");
System.out.println("Total of Title : " + entTitle.getLength());
System.out.println("Title name 0 : " + entTitle.item(0).getNodeName());
System.out.println("Title value 0 : " + entTitle.item(0).getTextContent());
//------------------------------------------------------
System.out.println("-------------------------------------------------");
//--EX3 get entrys count which = entry------
NodeList listOfEntry = doc.getElementsByTagName("entry");
int totalEntrys = listOfEntry.getLength();
System.out.println("Total no of entry : " + totalEntrys);
//------------------------------------------------------------
// get entry value
// listOfEntry.item(int I) 第i個entry but entry 還有很多值
// 重複 getElementsByTagName( Name ) 取得想要的資訊
//------------------------------------------------------------
//-----------------------------------------------------------------
}
}
- google data api
- JAVAXP
code 如下
// import
import com.google.gdata.util.AuthenticationException;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
/**
* This is a test template
*/
public class CalendarPureXml {
public static void main(String[] args) throws IOException, SAXException, AuthenticationException {
//---- set proxy if hava proxy-----------------------------------
Properties systemSettings = System.getProperties();
systemSettings.put("proxyPort","80");
systemSettings.put("proxyHost","proxy.quanta.corp");
//---------------------------------------------------------------
//----get XML by network , the example is my calendar------------
URL feedUrl = new URL("http://www.google.com/calendar/feeds/chiachunchuang%40gmail.com/private-6f9ef2889d8ccb2b63254d091d7cfc63/full");
URLConnection con = null;
try {
con = feedUrl.openConnection();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
InputStream is = con.getInputStream();
//----------------------------------------------------------------
//----get XML-----------------------------------------------------
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = null;
try {
docBuilder = docBuilderFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
Document doc = docBuilder.parse (is);
//normalize text redivsentation
doc.getDocumentElement ().normalize ();
//-----------------------------------------------------------------
//----print information--------------------------------------------
//print title
System.out.println ("Root element of the doc is " +
doc.getDocumentElement().getNodeName());
System.out.println("-------------------------------------------------");
//--EX 1 get child node---------------------------------------
NodeList UPEntry = (NodeList) doc.getDocumentElement().getChildNodes();
// 取得 item
Node ent=UPEntry.item(1);
System.out.println("child name 1 : " + ent.getNodeName());
System.out.println("child value 1 : " + ent.getTextContent());
//------------------------------------------------------
System.out.println("-------------------------------------------------");
//--EX 2 get node with title---------------------------------------
NodeList entTitle= doc.getElementsByTagName("title");
System.out.println("Total of Title : " + entTitle.getLength());
System.out.println("Title name 0 : " + entTitle.item(0).getNodeName());
System.out.println("Title value 0 : " + entTitle.item(0).getTextContent());
//------------------------------------------------------
System.out.println("-------------------------------------------------");
//--EX3 get entrys count which = entry------
NodeList listOfEntry = doc.getElementsByTagName("entry");
int totalEntrys = listOfEntry.getLength();
System.out.println("Total no of entry : " + totalEntrys);
//------------------------------------------------------------
// get entry value
// listOfEntry.item(int I) 第i個entry but entry 還有很多值
// 重複 getElementsByTagName( Name ) 取得想要的資訊
//------------------------------------------------------------
//-----------------------------------------------------------------
}
}
java 加入 控制 XML package
標籤:
java
網路上搜尋一下有幾個 liberary 可以使用
在此介紹 JAVAXP
1.下載JAVAXP
java -jar JAXP_142.jar
● 到所在檔案目錄
● 記得java path 要先設好
2. improt 這個 liberary (...\lib\*.jar檔)
在此介紹 JAVAXP
1.下載JAVAXP
- 到官方網站下載
- 下載完執行解壓縮
java -jar JAXP_142.jar
● 到所在檔案目錄
● 記得java path 要先設好
2. improt 這個 liberary (...\lib\*.jar檔)
2009年3月23日 星期一
Google Base -Google 的廣告看板
標籤:
google api
----------------------------------------------------
What is Google Base
----------------------------------------------------
● Base = Database?
● 是資料庫沒錯
依照google 定好的欄位或自行新增欄位 ,填入資料
● 提供任何想張貼的訊息
類似布告欄
● 公開資料
----------------------------------------------------
介紹 轉貼自 http://blue.lins.fju.edu.tw/~mao/google/benefit4user.html
----------------------------------------------------
2005年11月16日, Google Base發表, 允許網友上網張貼任何資訊, 它說「如果你有需要和別人分享的信息,但又不知道從何開始, 那麼Google Base 就是為你量身制作的服務」
目前祗接受英文的資訊, 也只有英文的介面
Google Base 是一個讓用戶自行張貼「任何」資訊的空間, 經由 Google 搜尋引擎查找。雖然號稱「任何」資訊, 仍然有些預期的類型: 見附註
----------------------------------------------------
應用 轉貼自 http://www.digitalcontent.org.tw/e/temp/1214/941214_ourlinx.htm
----------------------------------------------------
本質 上,Google只是提供了一個平台,讓用戶在上面按一定的遊戲規則自由發揮,至於遊戲能玩多大,取決於參與者的想像力。
現在有人在上面賣汽車,有人賣皮 鞋手袋,有人賣珠寶首飾,這些都不算多有創意。
有人徵婚,有人想讓全世界知道「我愛你」,有人想為小貓找個家,有人則要為小貓找男朋友,有人聲稱可以幫你 找工作……,
你的想像力有多大,Google Base就有多大。
----------------------------------------------------
相關資訊
----------------------------------------------------
首頁
http://www.google.com/base/
右下方三個選項
1. "One at a time" 選項可以po 文章或檔案 到google base 裡
2. "Data feed" 比較像資料庫,點進去看就可以看到自己傳的資料
3. "API" 就是 api 的說明教學
官方提供的應用例子
http://google-code-featured.blogspot.com/search/label/base
查詢一些在 google base 上有記錄的資料
如
job center 找工作的
http://www.jobcentral.com/index.asp
BaseEstate 找房子的
http://www.baseestate.com/
不過這些訊息都在美國, 因為只支援 美國、英國,德國
----------------------------------------------------
附註 分類類型 轉貼自 http://blue.lins.fju.edu.tw/~mao/google/benefit4user.html
----------------------------------------------------
blogs [部落格]
Coupons
Clinical trials
Events and activities [事件與活動]
Housing[房屋信息]
Jobs
Mobile content
News and articles[新聞與文章]
Nursing home
People profiles[人]
Podcasts
Protein
Products[商品]
Recipes
Reference articles[參考文獻]
Reviews[評論]
Services[服務]
Vehicles[車輛]
Wanted ads[需求信息]
Wine and food
----------------------------------------------------
What is Google Base
----------------------------------------------------
● Base = Database?
● 是資料庫沒錯
依照google 定好的欄位或自行新增欄位 ,填入資料
● 提供任何想張貼的訊息
類似布告欄
● 公開資料
----------------------------------------------------
介紹 轉貼自 http://blue.lins.fju.edu.tw/~mao/google/benefit4user.html
----------------------------------------------------
2005年11月16日, Google Base發表, 允許網友上網張貼任何資訊, 它說「如果你有需要和別人分享的信息,但又不知道從何開始, 那麼Google Base 就是為你量身制作的服務」
目前祗接受英文的資訊, 也只有英文的介面
Google Base 是一個讓用戶自行張貼「任何」資訊的空間, 經由 Google 搜尋引擎查找。雖然號稱「任何」資訊, 仍然有些預期的類型: 見附註
----------------------------------------------------
應用 轉貼自 http://www.digitalcontent.org.tw/e/temp/1214/941214_ourlinx.htm
----------------------------------------------------
本質 上,Google只是提供了一個平台,讓用戶在上面按一定的遊戲規則自由發揮,至於遊戲能玩多大,取決於參與者的想像力。
現在有人在上面賣汽車,有人賣皮 鞋手袋,有人賣珠寶首飾,這些都不算多有創意。
有人徵婚,有人想讓全世界知道「我愛你」,有人想為小貓找個家,有人則要為小貓找男朋友,有人聲稱可以幫你 找工作……,
你的想像力有多大,Google Base就有多大。
----------------------------------------------------
相關資訊
----------------------------------------------------
首頁
http://www.google.com/base/
右下方三個選項
1. "One at a time" 選項可以po 文章或檔案 到google base 裡
2. "Data feed" 比較像資料庫,點進去看就可以看到自己傳的資料
3. "API" 就是 api 的說明教學
官方提供的應用例子
http://google-code-featured.blogspot.com/search/label/base
查詢一些在 google base 上有記錄的資料
如
job center 找工作的
http://www.jobcentral.com/index.asp
BaseEstate 找房子的
http://www.baseestate.com/
不過這些訊息都在美國, 因為只支援 美國、英國,德國
----------------------------------------------------
附註 分類類型 轉貼自 http://blue.lins.fju.edu.tw/~mao/google/benefit4user.html
----------------------------------------------------
blogs [部落格]
Coupons
Clinical trials
Events and activities [事件與活動]
Housing[房屋信息]
Jobs
Mobile content
News and articles[新聞與文章]
Nursing home
People profiles[人]
Podcasts
Protein
Products[商品]
Recipes
Reference articles[參考文獻]
Reviews[評論]
Services[服務]
Vehicles[車輛]
Wanted ads[需求信息]
Wine and food
----------------------------------------------------
Google Youtube Api
標籤:
google api
YouTube影片檔案格式YouTube接受廣泛的影片檔案格式如:.WMV、.AVI、.MOV 和 .MPG。 以下是某些可改善運作情形的設定:
MPEG4 (Divx、Xvid) 格式
MP3 音效
影片解析度: 480x360 或更高
畫面速率: 24fps 或更高
其他功能記錄於YouTubeData API.ppt
http://docs.google.com/Presentation?docid=dgrnpzdv_101gqz2bjfs&hl=zh_TW
幾點補充
1. 關於影片下載問題,官方 "沒有提供下載功能" ,不過google 一下就會發現很多工具
2. 所有檔案上傳到youtube都會 轉成 "FLV 檔 "
3. 聲音檔雖然可以上傳,不過上傳後會有編譯錯誤的訊息
4. 聲音檔下載的話,也有 flv 轉 mp3 或 wmv 的工具
6. google voice 最近要推出, 不過還沒有API 提供.....
補充文章(以下皆為轉貼)
下載youtube 影片
http://www.tcgs.tc.edu.tw/~sagit/info/p12.htm
audio files can upload to youtube?
http://www.jakeludington.com/youtube/20080406_can_i_upload_mp3_or_wma_audio_files_to_youtube.html
google voice
https://www.google.com/voice/about
MPEG4 (Divx、Xvid) 格式
MP3 音效
影片解析度: 480x360 或更高
畫面速率: 24fps 或更高
其他功能記錄於YouTubeData API.ppt
http://docs.google.com/Presentation?docid=dgrnpzdv_101gqz2bjfs&hl=zh_TW
幾點補充
1. 關於影片下載問題,官方 "沒有提供下載功能" ,不過google 一下就會發現很多工具
2. 所有檔案上傳到youtube都會 轉成 "FLV 檔 "
3. 聲音檔雖然可以上傳,不過上傳後會有編譯錯誤的訊息
4. 聲音檔下載的話,也有 flv 轉 mp3 或 wmv 的工具
6. google voice 最近要推出, 不過還沒有API 提供.....
補充文章(以下皆為轉貼)
下載youtube 影片
http://www.tcgs.tc.edu.tw/~
audio files can upload to youtube?
http://www.jakeludington.com/
google voice
https://www.google.com/voice/
2009年3月16日 星期一
Sun Opensource Community Day 心得
標籤:
java
一天下來也聽了不少東西,基本上說要全部都了解是蠻困難的,但也學到不少新觀念
有一點小小的遺憾
下午有分組演講,沒辦法分身去聽所有的
議題一覽
在補充 Bruce Eckel 推薦的書
The Pragmatic Programmer: From Journeyman to Master
Peopleware
整理的心得如下
有一點小小的遺憾
下午有分組演講,沒辦法分身去聽所有的
議題一覽
- Dynamic Languages on JVM(Featuring Jython)
- 1985擁抱自由軟體與開放元碼並開壤面對嶄新授權模式
- EJ3B的理想與現實
- OSGI與GlassFish3 HK2 動態服務核心解析
- JAVAFX這次來真的
- 在雲端上喝JAVA咖啡(Hadoop)
- Flex,GWT與JAVA的應用整合
- OSGI動態服務模組開發實作
- Iwbd開放原始碼的輕量級資料庫存取程式庫
- 以java設計Facebook應用程式
- OpenEJB另一個選擇
在補充 Bruce Eckel 推薦的書
The Pragmatic Programmer: From Journeyman to Master
Peopleware
整理的心得如下
2009年3月11日 星期三
Google site 介紹
標籤:
google api
想簡單的建立個人網頁嗎? Google Site 是一個好選擇
沒空間嗎?他也可以一個100MB的網路硬碟(有點小的說...)
介紹投影片 http://docs.google.com/Presentation?docid=dgrnpzdv_147fx65m7fp&hl=zh_TW
沒空間嗎?他也可以一個100MB的網路硬碟(有點小的說...)
介紹投影片 http://docs.google.com/Presentation?docid=dgrnpzdv_147fx65m7fp&hl=zh_TW
2009年3月2日 星期一
KML
標籤:
google api,
google earth api,
KML
介紹一下 KML
KML 一種標籤語言,針對Google Earth 的描述語言
如同XML對於html, KML相對於Google Earth
除KML外,針對Google Earth 的另一種標籤語言
KMZ
為KML打包的壓縮格式
解壓縮後即可看到KML 檔
----------------------------------------------------------------------------------------------------------
Summary
----------------------------------------------------------------------------------------------------------
KML 及 KMZ 是 控制 Google Earth上的圖層的描述,包含增加圖層
如節點、範圍、路徑、建築物
除增加圖層外,也有錄影功能,更能顯現出路徑的表達,或旅遊的紀錄
在節點的描述可以加入javascript
節點內可以鑲入圖片、影片或一些排版
但此javascript有許多語法被限制,如alert, event
----------------------------------------------------------------------------------------------------------
Tool
----------------------------------------------------------------------------------------------------------
Google Earth export
Notepad
Mapmash KMLCreator
http://mapmash.googlepages.com/kmlpoint.html
Google SketchUp
http://sketchup.google.com/index.html
----------------------------------------------------------------------------------------------------------
教學
----------------------------------------------------------------------------------------------------------
Document:
http://code.google.com/apis/kml/documentation/
Tutorial:
http://code.google.com/apis/kml/documentation/kml_tut.html
附錄 Tutorial摘要
Touring 漫遊,導覽
Altitude Modes 圖層高度設定
Time and Animation 圖層動作,如會動的倫敦之眼
Cameras 視角控制
Adding PhotoOverlays 加入類似街景視圖的圖片
Sky Data in KML 產生Sky data 的文件
Adding Custom Data 標籤的描述語言說明
Models 建立建築物
Working with Regions 繪製區域範圍圖層
Updates 更新其他的KML屬性
Expiration 使連結資料可以重複更新
----------------------------------------------------------------------------------------------------------
範例
----------------------------------------------------------------------------------------------------------
http://earth.google.com/intl/zh-TW/outreach/global_dev.html
http://earth.google.com/intl/zh-TW/outreach/tutorials.html
另外 整理成PPT 在
http://docs.google.com/EmbedSlideshow?docid=dgrnpzdv_124ddhkp4gv
KML 一種標籤語言,針對Google Earth 的描述語言
如同XML對於html, KML相對於Google Earth
除KML外,針對Google Earth 的另一種標籤語言
KMZ
為KML打包的壓縮格式
解壓縮後即可看到KML 檔
----------------------------------------------------------------------------------------------------------
Summary
----------------------------------------------------------------------------------------------------------
KML 及 KMZ 是 控制 Google Earth上的圖層的描述,包含增加圖層
如節點、範圍、路徑、建築物
除增加圖層外,也有錄影功能,更能顯現出路徑的表達,或旅遊的紀錄
在節點的描述可以加入javascript
節點內可以鑲入圖片、影片或一些排版
但此javascript有許多語法被限制,如alert, event
----------------------------------------------------------------------------------------------------------
Tool
----------------------------------------------------------------------------------------------------------
Google Earth export
Notepad
Mapmash KMLCreator
http://mapmash.googlepages.com/kmlpoint.html
Google SketchUp
http://sketchup.google.com/index.html
----------------------------------------------------------------------------------------------------------
教學
----------------------------------------------------------------------------------------------------------
Document:
http://code.google.com/apis/kml/documentation/
Tutorial:
http://code.google.com/apis/kml/documentation/kml_tut.html
附錄 Tutorial摘要
Touring 漫遊,導覽
Altitude Modes 圖層高度設定
Time and Animation 圖層動作,如會動的倫敦之眼
Cameras 視角控制
Adding PhotoOverlays 加入類似街景視圖的圖片
Sky Data in KML 產生Sky data 的文件
Adding Custom Data 標籤的描述語言說明
Models 建立建築物
Working with Regions 繪製區域範圍圖層
Updates 更新其他的KML屬性
Expiration 使連結資料可以重複更新
----------------------------------------------------------------------------------------------------------
範例
----------------------------------------------------------------------------------------------------------
http://earth.google.com/intl/zh-TW/outreach/global_dev.html
http://earth.google.com/intl/zh-TW/outreach/tutorials.html
另外 整理成PPT 在
http://docs.google.com/EmbedSlideshow?docid=dgrnpzdv_124ddhkp4gv
訂閱:
文章 (Atom)