帶著五週年的快樂心情,選定了期待已久的No°168 Prime 牛排館,為兔年的五臟廟寫下完美的句點。
來到維多利亞酒店4樓,電梯打開就會看到大家都有拍照留念的168投影燈。
一坐到位置上,馬上開始熱烈的菜單討論。晚餐的套餐包含:餐前麵包、前菜、湯或沙拉、主菜、附餐、甜點與飲料。
經過網路上參考與再三討論,決定菜色以後,開始上菜囉!
1. 餐前麵包:吃起來有點像是軟嫩型的山東大餅,標準的越嚼越香,配上旁邊有點酸甜的醬料,實在讓人開始期待後面的餐點。
2. 前菜1─香煎明蝦:就像在港口吃的新鮮明蝦一般,肉質非常緊實,並帶有Q彈口感,微微鮮甜的滋味在口中迴盪。
前菜2─炙燒北海道干貝:保有干貝特殊一絲一絲的口感,在口中逐漸化開,咀嚼後海鮮的甜味在口中蔓延開來,是一道會直呼「喔~~~好甜喔!」的奇妙感受。
3. 沙拉與湯─季節鮮嫩沙拉:有著各式鮮蔬搭配油醋醬,本來覺得只是一道清爽的油醋沙拉,但切開最下層的番茄,搭配旁邊的馬芝拉起司與鮮蔬,表現出相當多層次的口感,番茄包覆著煙燻香味,清脆的蔬菜裹著酸甜的油醋,讓人一口接一口。
沙拉與湯─No°168巧達湯:整個巧達湯非常的濃郁,煙燻培根+牛肝蕈+干貝的絕妙組合,是一道我覺得必點的湯品。
4. 附餐─奶油洋芋泥:賣相非常樸素,奶油與洋芋都是我的最愛,所以沒辦法評論,只要是奶油+洋芋我都覺得讚。
附餐2─白酒香炒野菇:相當刷嘴的附餐,有著菇類原有的獨特口感,伴著微微的酒味,讓人一口接一口。
上主菜之前,先上了相關的配備,首先是看似很高級的牛排刀!
另一個就是重點中的重點,看起來會讓等等主餐很好吃的醬料!
5. 主菜─澳洲頂級冷藏羊排:有著完美的前菜,讓我們非常期待主菜的來到,很快的切一小塊羊排,沾了原本附的羊排醬,送入嘴巴.....10秒過去,
我問:怎麼樣?
++:很嫩,但是不香耶...
我:怎麼可能?
我也切了一塊,放入口中,......嗯,很嫩.....
正當有點失望之際,切下來另一個主菜─牛排雙重奏(精選老饕牛排、頂級和牛紐約客牛排),意思的撒了點以為很弱的法國鹽之花。
一口咬下去,牛肉的香味整個在口中散開,一整個無法形容那個滋味,只好拿出真相:
就在絕妙滋味在口中迴盪,立刻將法國鹽之花撒上一小塊羊排,我只能說:「天呀!鹽之花是美味的鑰匙」
就這樣,伴隨著各式醬料、很多很多的鹽之花與滿足的表情,清空了...
連蒜頭都清光光。
6. 點心─法芙納香蕉熱巧克力塔:常常在電視上看到香蕉與巧克力的甜點組合,但自己卻從來沒有嘗試過,一口咬下,暖暖的巧克力從蛋糕裡流出來,配上甜蜜的香蕉,真的是絕妙搭配。
點心2─水果雪酪冰淇淋蛋糕:普通酸酸甜甜的冰沙型蛋糕。
7. 飲料─摩卡卡布奇諾:我沒有很懂咖啡,但我覺得是好喝的咖啡。
總結:是一家非常適合想要好好犒賞自己的大家,別忘了帶上快樂的心情,並且記得沾鹽之花喔。
小提醒:如果點羊排,可能不會附上9項的牛排沾醬,記得要跟服務生說你想沾鹽之花喔。^.< ....
網頁
▼
2012年1月18日 星期三
2012年1月17日 星期二
2012年1月14日 星期六
iOS小抄_NSString的常用方法
字串比較:[@"被比較的文字" isEqualToString:@"比較的文字"];
字串相加:[@"要被加的文字" stringByAppendingString:@"要加的內容"];
字串相加2:[@"要被加的文字" stringByAppendingPathComponent:@"要加的內容"];
*會自動將用於路徑的/加上去。
字串切割(split):NSArray *array = [@"要被切割的文字" componentsSeparatedByString:@","];
*利用“,”切割文字,回傳NSArray
[array objectAtindex:0]來取得分割後的第一個結果。
取代字串:[str stringByReplacingOccurrencesOfString:@"被取代的" withString:@"取代的"];
字串轉整數(轉int):[@"要轉的文字" intValue];
字串轉整數(轉NSinteger):[@"要轉的文字" integerValue];
字串轉浮點(轉NSfloat):[@"要轉的文字" floatValue];
NSMutableData轉NSString:NSString *s = [[NSString alloc] initWithData:MutableData encoding:NSASCIIStringEncoding];
整數轉字串:[NSString stringWithFormat:@"%d", 12];
去除空白:str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
字串相加:[@"要被加的文字" stringByAppendingString:@"要加的內容"];
字串相加2:[@"要被加的文字" stringByAppendingPathComponent:@"要加的內容"];
*會自動將用於路徑的/加上去。
字串切割(split):NSArray *array = [@"要被切割的文字" componentsSeparatedByString:@","];
*利用“,”切割文字,回傳NSArray
[array objectAtindex:0]來取得分割後的第一個結果。
取代字串:[str stringByReplacingOccurrencesOfString:@"被取代的" withString:@"取代的"];
字串轉整數(轉int):[@"要轉的文字" intValue];
字串轉整數(轉NSinteger):[@"要轉的文字" integerValue];
字串轉浮點(轉NSfloat):[@"要轉的文字" floatValue];
NSMutableData轉NSString:NSString *s = [[NSString alloc] initWithData:MutableData encoding:NSASCIIStringEncoding];
整數轉字串:[NSString stringWithFormat:@"%d", 12];
去除空白:str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
2012年1月7日 星期六
憶1月7日
四年前的這個時候,我正躺在床上心裡帶著一些坎坷,想著明天可能會發生的情況。
轉眼間,已經在辦公室繞了一圈,初步認識了大家,回到坐位上敲打著鍵盤,寫著需要繳交的文件;在完全沒有蜜月期的情況下,很快的第一天下午開始默默寫著vb6單機程式,而現在過了四年,每天仍舊埋首在報告、程式碼、裝機與發呆中。
上個月,我桌面變成了這樣:
除了特地拿出來跟大家一起拍照的flyer以外,其他都是恰巧需要處理東西而放在桌子上的。
倒杯水,走回位子的路上看到桌面這個情景,心中五味雜陳,一個讀土木讀生工在那邊算力學算用水量,原本程式只是寫寫課堂作業、論文模擬的學生,現在突然學了一堆010101的東西;還記得剛工作時,常常跟其他工程師詢問或討論程式的內容,聽著一堆新鮮的名詞,沒有想過的流程;但不知道從什麼時候開始,討論的對象只剩下google,寫程式一個人、裝機也一個人,慢慢地有些人的問題我竟然也可以回答了,回頭一看什麼時候學了這麼多發不了財也餓不死自己的010101?
不是資訊科系,沒有深厚的基礎、沒有相關的背景知識,帶著一堆自己亂七八糟的概念,有些自學有些上課,七拼八湊的也還可以完成一個案子,也還可以幫人解解bug,也還可以讓人相信說出來的"ok"。
-----------------------------------------
除了那些糊口飯吃的粗劣技術,因為這四年而誕生的還有這個blog,原始一個純粹當作筆記的平台,慢慢變成了"想分享"的宣洩出口,希望討論的激盪、團隊的合作與"阿哈"的歡呼,沒辦法在工作上成真,轉而成為維持亂寫文章的動力,變成動力維持熱血,熱血維持動力的怪異循環。
之前為了紀念單月突破5000瀏覽人次,發了一篇文章,結果就在這篇文章後,瀏覽人次以每月成長1000的數目持續上升,上個月竟然突破9000;每當自己在孤獨查詢資料時,能看到說明清楚的資料就會相當高興,這也讓自己想要寫出"可參考"的資料,而更想要整體搞懂再下筆,總之,這個blog似乎是有幫助到一些人,但幫助自己更多。
-----------------------------------------
辦公室比較年輕,四年前踏進辦公室所看到的"資深"工程師大約落在4-6年,如果現在又有新的人進來,在他心中我是否也變成了"那些資深的"?然後再1-2年後,他會在心中默默認為我不太有上進的心,只想用既有的技能與知識來混日子,接著我也會說出:你們年輕人對新東西比較在行的鬼話。新東西,萬宗不離其根本,是個有經驗的人來看比較容易吸收,還是一個懵懵懂懂的新鮮人?在我來看,是有經驗的熱血人。
想起來這類產業保值相當的低,既有知識與技能的衰退速度遠遠大於其他產業,當你越老就越有可能被賦予在工作上越大的責任,而相對的你會喪失越多學習新知的時間,接著頭腦更新的速度開始不及市場上出來的新東西,就因為如此,越早放棄學習的人越快以不正確的天秤來看待自己與別人的工作。
-----------------------------------------
總之,就這樣在很多人的幫助之下也來到了第五年,是一個說新不算,又完全談不上老的年數,又是嶄新的一年,加油。
轉眼間,已經在辦公室繞了一圈,初步認識了大家,回到坐位上敲打著鍵盤,寫著需要繳交的文件;在完全沒有蜜月期的情況下,很快的第一天下午開始默默寫著vb6單機程式,而現在過了四年,每天仍舊埋首在報告、程式碼、裝機與發呆中。
上個月,我桌面變成了這樣:
除了特地拿出來跟大家一起拍照的flyer以外,其他都是恰巧需要處理東西而放在桌子上的。
倒杯水,走回位子的路上看到桌面這個情景,心中五味雜陳,一個讀土木讀生工在那邊算力學算用水量,原本程式只是寫寫課堂作業、論文模擬的學生,現在突然學了一堆010101的東西;還記得剛工作時,常常跟其他工程師詢問或討論程式的內容,聽著一堆新鮮的名詞,沒有想過的流程;但不知道從什麼時候開始,討論的對象只剩下google,寫程式一個人、裝機也一個人,慢慢地有些人的問題我竟然也可以回答了,回頭一看什麼時候學了這麼多發不了財也餓不死自己的010101?
不是資訊科系,沒有深厚的基礎、沒有相關的背景知識,帶著一堆自己亂七八糟的概念,有些自學有些上課,七拼八湊的也還可以完成一個案子,也還可以幫人解解bug,也還可以讓人相信說出來的"ok"。
-----------------------------------------
除了那些糊口飯吃的粗劣技術,因為這四年而誕生的還有這個blog,原始一個純粹當作筆記的平台,慢慢變成了"想分享"的宣洩出口,希望討論的激盪、團隊的合作與"阿哈"的歡呼,沒辦法在工作上成真,轉而成為維持亂寫文章的動力,變成動力維持熱血,熱血維持動力的怪異循環。
之前為了紀念單月突破5000瀏覽人次,發了一篇文章,結果就在這篇文章後,瀏覽人次以每月成長1000的數目持續上升,上個月竟然突破9000;每當自己在孤獨查詢資料時,能看到說明清楚的資料就會相當高興,這也讓自己想要寫出"可參考"的資料,而更想要整體搞懂再下筆,總之,這個blog似乎是有幫助到一些人,但幫助自己更多。
-----------------------------------------
辦公室比較年輕,四年前踏進辦公室所看到的"資深"工程師大約落在4-6年,如果現在又有新的人進來,在他心中我是否也變成了"那些資深的"?然後再1-2年後,他會在心中默默認為我不太有上進的心,只想用既有的技能與知識來混日子,接著我也會說出:你們年輕人對新東西比較在行的鬼話。新東西,萬宗不離其根本,是個有經驗的人來看比較容易吸收,還是一個懵懵懂懂的新鮮人?在我來看,是有經驗的熱血人。
想起來這類產業保值相當的低,既有知識與技能的衰退速度遠遠大於其他產業,當你越老就越有可能被賦予在工作上越大的責任,而相對的你會喪失越多學習新知的時間,接著頭腦更新的速度開始不及市場上出來的新東西,就因為如此,越早放棄學習的人越快以不正確的天秤來看待自己與別人的工作。
-----------------------------------------
總之,就這樣在很多人的幫助之下也來到了第五年,是一個說新不算,又完全談不上老的年數,又是嶄新的一年,加油。
2012年1月6日 星期五
火源之界_團隊高手的榮耀
iOS學習_多個NSURLConnection的識別(利用accessibility等屬性)
如果進行稍微複雜一點的應用,就有可能在一個Class裡面使用多個NSURLConnection來連接不同的資料,但是根據這篇我們在使用NSURLConnection時會將各項處理交給相對應的delegate。
所以除非將各個delegate寫在不同的Class裡面,才有可能將這些要處理回應的程式碼分開,如果希望將處理的內容都寫在同一個delegate方法內處理,就必須要做一些識別。
也就是說上述程式碼的delegate都想寫在self內,那麼就必須在delegate內判斷目前傳來的NSURLConnection是誰?
方法一:將每一個NSURLConnection在一開始就實體化,於delegate內判斷為那一個connection傳進來。
但我們所建立的NSURLConnection其實只有在送出要求時才有用處,卻因為要比較目前誰被呼叫而一直佔用記憶體空間,所以就希望類似用tag的方式來判斷目前的NSURLConnection究竟為何者?來作出對應的處理。
方法二:NSURLConnection沒有所謂的tag屬性,但是他有大量的accessibility屬性,所以這邊就是利用其他屬性來達到tag的效果。
*在網路上沒有找到類似的說法,所以不確定accessibility這類屬性是否有預設一定要使用的時機,但不論如何,如此即可簡單地判斷傳入的NSURLConnection,若使用有意義的名稱更可讓程式碼可讀性增加,自認為是一個不錯的方案。
所以除非將各個delegate寫在不同的Class裡面,才有可能將這些要處理回應的程式碼分開,如果希望將處理的內容都寫在同一個delegate方法內處理,就必須要做一些識別。
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self];
也就是說上述程式碼的delegate都想寫在self內,那麼就必須在delegate內判斷目前傳來的NSURLConnection是誰?
方法一:將每一個NSURLConnection在一開始就實體化,於delegate內判斷為那一個connection傳進來。
NSURLConnection *conn1;
NSURLConnection *conn2;
-(void)doPost
{
conn1 = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self];
}
-(void)doPost2
{
conn2 = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self];
}
//取得資料時觸發
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
if (connection==conn1)
{
NSLog(@"didReceiveData SendInfo");
}
if (connection==conn2)
{
NSLog(@"didReceiveData SendInfo2");
}
}
但我們所建立的NSURLConnection其實只有在送出要求時才有用處,卻因為要比較目前誰被呼叫而一直佔用記憶體空間,所以就希望類似用tag的方式來判斷目前的NSURLConnection究竟為何者?來作出對應的處理。
方法二:NSURLConnection沒有所謂的tag屬性,但是他有大量的accessibility屬性,所以這邊就是利用其他屬性來達到tag的效果。
-(void)doPost
{
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self];
[conn setAccessibilityLabel:@"SendInfo"];
[conn release];
}
-(void)doPost2
{
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self];
[conn setAccessibilityLabel:@"SendInfo2"];
[conn release];
}
//取得資料時觸發
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
if ([[connection accessibilityLabel] isEqualToString:@"SendInfo"])
{
NSLog(@"didReceiveData SendInfo");
[httpPostResponse appendData:data];
}
if ([[connection accessibilityLabel] isEqualToString:@"SendInfo2"])
{
NSLog(@"didReceiveData SendInfo2");
[httpPostResponse appendData:data];
}
}
*在網路上沒有找到類似的說法,所以不確定accessibility這類屬性是否有預設一定要使用的時機,但不論如何,如此即可簡單地判斷傳入的NSURLConnection,若使用有意義的名稱更可讓程式碼可讀性增加,自認為是一個不錯的方案。
iOS筆記_讓WebView可以放大縮小(Zoom)
如果需要顯示doc,pdf,jpg,txt等檔案型態可以藉由WebView來顯示,而預設的WebView並不能讓使用者進行放大縮小的動作,若是要加上該功能很簡單,只要設定scalesPageToFit=YES即可。
webView.scalesPageToFit = YES;
iOS學習_利用POST方法取得Server資訊(以NSURLConnection)
如果要做關於網路的應用,就必須要與伺服器溝通,所以串接HTTP要求或是WebService都是必測功能,本篇先以POST方法來傳遞要求並取得伺服器回應。
1. 建立以POST方法回應的頁面(以asp.net c#為例),內容很單純:接收兩個參數,並回傳一個json字串。
2. h檔,定義要接收結果的NSMutableData,並定義一個執行post的方法。
3. m檔,以非同步方式,送出POST要求,並顯示回傳結果。
4. m檔,撰寫NSURLConnection的delegate,共三個分別為:didReceiveResponse(第一次取得回應時,用於清空內容),didReceiveData(接收到資訊時,用於進度管理),connectionDidFinishLoading(完全取得資料時,用於程式後續處理)
*於connectionDidFinishLoading有使用json轉換的相關lib(SBJson),若沒使用可直接秀出NSString來看結果。
如果頁面回傳資料是從資料庫撈取,將上述的names放入UITableView就可以呈現一個單純又非常重要的Web應用。
1. 建立以POST方法回應的頁面(以asp.net c#為例),內容很單純:接收兩個參數,並回傳一個json字串。
//於page_Load內
string tempName1 = Page.Request.Form["name"];
string tempName2 = Page.Request.Form["name2"];
Page.Response.Write("[{\"name\":\"" + tempName1 + "\"},{\"name:\"" + tempName2 + "\"}]");
Page.Response.End();
2. h檔,定義要接收結果的NSMutableData,並定義一個執行post的方法。
@interface AppDelegate : UIResponder <UIApplicationDelegate>{
NSMutableData *postResponseData;
}
-(void)doPostRequest;
3. m檔,以非同步方式,送出POST要求,並顯示回傳結果。
//a. 初始化NSMutableData,並執行doPostRequest。
-(void)initApp
{
postResponseData = [[NSMutableData alloc] init];
[self doPostRequest];
}
//b. 釋放該釋放的NSMutableData
- (void)dealloc
{
[postResponseData release];
[_window release];
[super dealloc];
}
//c. 於didFinishLaunchingWithOptions執行initApp
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self initApp];
[self.window makeKeyAndVisible];
return YES;
}
//d. 撰寫doPostRequest方法
-(void)doPostRequest
{
//第一步驟所建立的頁面url
NSString *urlPath = @"第一步驟所建立的頁面url/SendInfo.aspx";
//將NSString轉為NSURL
NSURL *url = [NSURL URLWithString:urlPath];
//因為要修改封包所以使用NSMutableURLRequest
NSMutableURLRequest *urlReq = [NSMutableURLRequest requestWithURL:url];
//指定封包方式
[urlReq setHTTPMethod:@"POST"];
//指定HTTP表頭
[urlReq setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
//產生封包內容,name=iphone.pdf&name2=b.jpg為送出的參數
NSString *requertString = @"name=iphone.pdf&name2=b.jpg";
NSData *requertBody = [NSData dataWithBytes:[requertString UTF8String] length:[requertString length]];
[urlReq setHTTPBody:requertBody];
//利用非同步方法送出要求
[[NSURLConnection alloc] initWithRequest:urlReq delegate:self];
}
4. m檔,撰寫NSURLConnection的delegate,共三個分別為:didReceiveResponse(第一次取得回應時,用於清空內容),didReceiveData(接收到資訊時,用於進度管理),connectionDidFinishLoading(完全取得資料時,用於程式後續處理)
//e. 撰寫NSURLConnection的delegate
//第一次回應時觸發
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[postResponseData setLength:0];
}
//取得資料時觸發
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[postResponseData appendData:data];
}
//資料取得完成後觸發
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *jsonString = [[NSString alloc] initWithData:postResponseData encoding:NSUTF8StringEncoding];
NSLog(@"json:%@",jsonString);
NSArray *names = [jsonString JSONValue];
NSLog(@"You get %d names" , [names count]);
for (int i = 0; i < [names count]; i++)
{
NSLog(@"name: %@" , [[names objectAtIndex:i]objectForKey:@"name"]);
}
}
*於connectionDidFinishLoading有使用json轉換的相關lib(SBJson),若沒使用可直接秀出NSString來看結果。
如果頁面回傳資料是從資料庫撈取,將上述的names放入UITableView就可以呈現一個單純又非常重要的Web應用。
Android學習_ArcGIS Runtime SDK for Android(v1.0.1 released)
自從轉戰iOS,又看到iOS Runtime SDK的版本已經進入2.1版,就覺得ESRI似乎暫緩了Android的發展,沒想到近期Android Runtime版本就出來了,以往下載bate版本只需要在Eclipse的Help→Install New Software,輸入下載網址就可以快速取得(參考),但是正式版就必須要於ESRI的網站下載,就與其他軟體相同,必須先加入其會員才能下載。(位置:http://resources.arcgis.com/content/arcgis-android/sdk)
下載後是一個大小10.3MB,名為ArcGISAndroidSDK_1_0_1.zip的檔案。(不需解壓縮)
------------------------------------------------
安裝:
1. 至Eclipse的Help→Install New Software
2. 點擊Add按鈕,於Name輸入:ArcGIS 4 Android Plugin,點擊Local選擇剛剛下載的zip檔案。
3. 接下來就是Next→Next→Finish。
-----------------------------------------------
使用:
1. 建立ESRI空專案:File→New→Project,選擇ArcGIS for Android內的ArcGIS Project for Android
2. 建立ESRI範例專案:File→New→Project,選擇ArcGIS for Android內的ArcGIS Samples for Android(位置與上圖同)
3. 如果有已經開發到一半的專案,或是之前用Bate版開發的專案,就必須要手動將相關的jar加入。
a. 專案按右鍵選Properties,左側項目選擇Java Build Path。
b. 點選Add External JARs,選擇剛剛安裝的三個檔案(位置可以參考ESRI空專案的JAR位置(不確定是否每個人都相同,我的是:D:\Android\eclipse_c\configuration\org.eclipse.osgi\bundles\929\1\.cp\lib))
* ArcGIS_Android.jar
* jackson-core-lgpl-1.6.3.jar
* jackson-mapper-lgpl-1.6.3.jar
-------------------------------------------------
測試的一點點心得
1. 編譯的速度明顯變快,以往簡單的應用都需要編譯2-3分鐘,甚或編譯到當機,同樣專案目前大致10-20秒。
2. 許多內建方法皆改變,用Bate所製作的專案必須要進行幅度不小的修正。
3. Bate版GraphicsLayer有提供postInvalidate()方法,可於繪製途中不斷更新圖面繪製情況,1.0.1版移除了這個方法,導致目前只能繪完後才能出現繪製圖元。
*若是Android Bate版與iOS 2.1版相比,iOS整體操作的感受明顯優於Android,不知道Android Runtime v1.0.1的表現怎麼樣。
下載後是一個大小10.3MB,名為ArcGISAndroidSDK_1_0_1.zip的檔案。(不需解壓縮)
------------------------------------------------
安裝:
1. 至Eclipse的Help→Install New Software
2. 點擊Add按鈕,於Name輸入:ArcGIS 4 Android Plugin,點擊Local選擇剛剛下載的zip檔案。
3. 接下來就是Next→Next→Finish。
-----------------------------------------------
使用:
1. 建立ESRI空專案:File→New→Project,選擇ArcGIS for Android內的ArcGIS Project for Android
2. 建立ESRI範例專案:File→New→Project,選擇ArcGIS for Android內的ArcGIS Samples for Android(位置與上圖同)
3. 如果有已經開發到一半的專案,或是之前用Bate版開發的專案,就必須要手動將相關的jar加入。
a. 專案按右鍵選Properties,左側項目選擇Java Build Path。
b. 點選Add External JARs,選擇剛剛安裝的三個檔案(位置可以參考ESRI空專案的JAR位置(不確定是否每個人都相同,我的是:D:\Android\eclipse_c\configuration\org.eclipse.osgi\bundles\929\1\.cp\lib))
* ArcGIS_Android.jar
* jackson-core-lgpl-1.6.3.jar
* jackson-mapper-lgpl-1.6.3.jar
-------------------------------------------------
測試的一點點心得
1. 編譯的速度明顯變快,以往簡單的應用都需要編譯2-3分鐘,甚或編譯到當機,同樣專案目前大致10-20秒。
2. 許多內建方法皆改變,用Bate所製作的專案必須要進行幅度不小的修正。
3. Bate版GraphicsLayer有提供postInvalidate()方法,可於繪製途中不斷更新圖面繪製情況,1.0.1版移除了這個方法,導致目前只能繪完後才能出現繪製圖元。
*若是Android Bate版與iOS 2.1版相比,iOS整體操作的感受明顯優於Android,不知道Android Runtime v1.0.1的表現怎麼樣。