2010年11月28日 星期日

acer Liquid Metal 初體驗

最近在很遇然的情況下遇到了這一隻acer年底的重點機種,趕快上來跟大家分享一下,可惜的是試玩的時間沒有很久,所以也沒有辦法寫多深入的心得,或拍很多的照片,同時這也是小弟第一次發表這一類的文章,請各位見諒啦~



這是一隻工程機,搭載著android 2.2,到時候出貨時軟體還會再微調,正面就很中規中矩,不過這裡可是藏了一個小秘密。不知道之前有沒有手機採用過,它的螢幕是曲面的,也就是用手從左向右滑時你會感覺到,二邊比較低,但中間比較高,會有一種看起來很一般,但一使用會咦~~一下的感覺,不過也就一開始的時候覺得新奇…此外,也因為這種設計,會有手指離螢幕比較遠的感覺。




背面是我覺得整支手機最驚艷的地方,中間有棕色的金屬背板,上下黑色的部份雖然是塑料材質但是質感也不錯,感覺一整個就是走商務風。



打開後,1500mA/h的大電池使得使用時間可以比較長,內部的採用45nm的MSM7230 800MHz,在3D效能,運算能量和耗電上都有不錯的能力,可惜外面留了蠻大一圈,使的"視覺上"不夠緊湊。


側邊也是走金屬質感,而且相當的漂亮,有獨立的拍照鍵(好希望每隻手機都能有這個鍵,點螢幕拍照畢竟很難用)



這一次的liquid metal除了google的標準桌面之外還外加了新一代的acer UI,這是鎖定的畫面,左下角有一塊翻一角起來的布,把他往外一掀就可以解除鎖定了,這塊布掀起來的特效相當酷,大家到時候可以試試。


這是解除鎖定後的畫面,不過在這裡不方便作任何評論,因為這軟體還不是最終版,所以我就先不提了,但是開網頁的速度真的是爆快(ps 我手上這隻工程機還不能開FLASH,我不知道為什麼),我手上的3GS跟本是不能比,可是多點縮放的流暢度3GS就狂勝了。


我覺得這是一隻蠻商務風格的手機,但又有一些隱藏的小元素像是曲面螢幕,閃亮的邊框,讓它又帶點騷包因子,而且又有杜比認証,雙麥克風減噪(有看到預留孔,但我不知道最後出貨的手機是否有這功能),組裝的品質跟電池背蓋拆卸的難易度都比前一代的liquid還要好,我想最後賣得好不好可能就是決定在價格上吧,畢竟這隻手機沒有什麼很決定性的爆點來擊倒desire三兄弟,用起來雖然比milestone順,但又沒有milestone那麼好的商務質感。一開始好像會先搭遠傳獨賣(不知道為什麼acer這麼愛找遠傳??)

2010年10月8日 星期五

[iOS programing] 一些有用的小技巧整理 Some useful tips for your iOS applications

這裡收集在我的第一個程式中有用到的一些小技巧
Here are some useful tips I had used in my first APP. I collect all of them here.

1. 避免你的程式進入睡眠狀態
Prevent device entering sleep mode

Add this into your ${application name}AppDelegate.m
here is an example
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.
application.idleTimerDisabled = YES;
MainMenuController *u_mainController = [[MainMenuController alloc] initWithNibName:@"MainMenuController" bundle:nil];
[window addSubview:u_mainController.view];
[window makeKeyAndVisible];
return YES;
}

2. 進入程式前的第一個畫面
The first image appears on the screen while loading application

這個相當簡單,只要把檔案加入你的專案中,然後將它的名字取為default.png就可以了,但有一件事要注意,如果用gif或jpeg在模擬器中是okay的,但實機上就會無法顯示:)
This is simple. Just add the image file into your project, and name it as "default.png". If you are using other image formats such as jpeg or gif. It still works in simulator. But it will show black screen in your iphone.


[.....to be continued]

2010年9月25日 星期六

[iOS programing] 在你的程式中加入動畫, Adding Animations to your iOS application

經過一番努力,在繁忙的上班時間中偷閒學習和撰寫程式碼,第一個成品終於要出來了,今天我想在這裡分享如何操作動畫。

其實要在iOS中加入動畫是很簡單的一件事,首先我們得先宣告開始一個動畫區段,值得注意的是beginAnimations是個instance method,別把它誤送給你的物件啦。而它的引數是animationID和一個(void)型別的物件,我建議最好為你的每一個動畫事件取一個animationID,因為當你畫面中同時有很多動畫在發生的時候,也許你想在某一個動畫事件停止的時候作些特殊的處理,這時候它就可以派上用場了,當然你也可以用contex來作到相同的效果。

+ (void)beginAnimations:(NSString *)animationID context:(void *)context

example:
int apple_index = 10;
[UIView beginAnimations: [NSString stringWithFormat:@"Drop_Apple_%d", apple_index] context:nil];


接下來,我們只要指定物件最後的狀態,iphone就會把中間的動畫效果加上來

(物體原始狀態) -----------> (動畫效果) ---------> (物體最後狀態)

舉例,我想要在1.5秒內把一個view(比方說一顆蘋果),從它原來的位置移到別一個地方,就只要寫這二行,很簡單吧。

[UIView setAnimationDuration:(NSTimeInterval) 1.5];
_current_view.frame = end_pos;


然後送commitAnimations這個message到UIView就可以看到你的動畫效果了。

[UIView commitAnimations];


不過如果就只有這樣,那就太簡單啦,通常我們作一個動畫,一定會希望動畫完成後會發生某件事,比方說衣服脫下來後手就...(再次提醒,有18X內容要上apple store不容易),這時候我們就需要設定當動畫完成後,要送一個message到指定的實體,讓它幫你完成接下來的事情,也就是使用到design pattern中的delegation啦,請在你的動畫區間中加入這二行(這裡只是舉例,請隨著你的程式稍作修改。

[UIView beginAnimations: [NSString stringWithFormat:@"Drop_Apple_%d", apple_index] context:nil];
.........
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
.........
[UIView commitAnimations];

這樣一來,當動畫結束的時候,就會丟一個message到你指定的delegate對象,而訊息是animationDidStop,引數是(NSString*) animationID,(NSNumber *) finished和(void*) context。

- (void)animationDidStop:(NSString*)animationID finished:(NSNumber *)finished context:(void *)context {

if ([animationID isEqualToString: @"衣服掉下來"])
{
[player be_a_man];
}
}

這裡是個範例影片,用我鳥鳥的數位相機拍的,有人知道MAC上不錯的擷取影像軟體嗎@@"

2010年9月12日 星期日

[iPhone] 新的iOS 4.1終於支援AVRCP

iPhone和iPod雖然有支援A2DP但不支援AVRCP一直讓人很困擾(蘋果眾:I don't care...),先說明什麼是A2DP跟AVRCP,A2DP是Advanced Audio Distribution Profile,作用是把傳送高音質到你的耳機上,讓你用藍芽耳機聽歌的時候不會像在聽廣播,AVRCP是Audio / Video Remote Control Profile,讓你的藍牙耳機可以控制你的手機,那不支援AVRCP意謂著,雖然你使用了藍芽耳機聽音樂,享受無線的快感,但如果要換首或暫停,你就得拿出你閃亮的iphone,對著它的螢幕戳來戳去(感覺像是夾不死陰謀…)。

這次iOS的昇級,支援AVRCP這個功能就埋沒在各項重大更新中,連官方網頁上都看不到,不過對於想要享受無線快感的人這真的是個好消息,所以我就"立馬"跑去買了備受好評的SonyEricsson MW600來搭配它,結果上一首下一首,語音控制等等都是OKAY,所以有需要的人可以入手啦


大家好好合作哦

2010年8月7日 星期六

Macbook Pro的三好與三壞

Macbook Pro 的三好與三壞 (其它的有想到再陸續更新)

1. 超強的iChat,真的只有威可以形容,穩定,跟藍芽裝置良好的搭配,還可以共同分享桌面,以終端使用者的角度,這已經跟公司用的商業軟體同一個等級了。
2. 搶眼,這聽起來好像有點愛現的感覺,不過我那對3C產品完全沒什麼sense的父母,
看到這台macbook pro也能馬上認出這台電腦不一樣,我想主要是因為顏色跟全金屬質感吧 ,很多人會覺得蘋果的電腦很貴,其它品牌的便宜得多,可是仔細看一下世面上大多數的筆電,在低階的部份,不管你是HP,ASUS...全部感覺像是同一家代工出來的,差不多的規格,差不多的重量,相同的周邊模組,感覺買那一家都一樣,當然好處是在大量生產的優勢之下,比起來就便宜很多。
3. 強大的Terminal支援,比起WINDOWS那跟本幾乎是等於沒有的終端機要強上太多了

MacBoockPro 用到現在三大缺點
1. 在作一些比較耗CPU的事情時或外接螢幕工作時,整個鋁機殼會熱呼呼的,特別是左邊麥克風附近的地方(我已經在冷氣房了...)
2. 沒有Page Up, Page Done, Home, End, Insert, 等等等所以很多事情要用組合鍵來達成,想像一下我要抓一個程式運作的圖我要"command + shift + 4 + space" 然後右手再移動觸控板...
3. 13.3吋的機型,重量跟大小比起一台最入門的14吋,面積上居然一樣,重量也一樣Orz........(不過比較薄啦)

2010年7月25日 星期日

base SDK missing and code sign error

Apple 最近剛推出iOS 4,大多數的程式開發者也紛紛把自已的SDK和XCODE昇級。不過我想有很多人會發現,一些以前舊的sample code或本來跑的好好的程式現在連compile都不會過。

Apple just released new iOS 4, and many programers upgraded their SDK and XCODE to the newer verison. After upgrading many of programers will notice that some programs can not be built due to "base SDK missing" in compile phase.

就拿SpeakHere這個sample code為例子,你可以在Xcode Help Document中發現它(既然它已經被放在說明文件中,為什麼阿婆公司不把它搞定而要我們這些使用者來處理這些鳥事呢?)

Take the sample code, SpeakHere, as an example. You can check it out in the help document of your xcode (Since the sample code already putting in the document of latest xcode Why doesn't Apple make some modification to allow it can be used more smoothly?)



點選"open project in xcode"你就會在左上角看到base SDK missing
click "open project in xcode" you will see "base SDK missing" in left top area.



這時候,請到這個Project的Configuration中改變Base SDK的setting, 把它改成iPhone Device 4.0.
Change the "Base SDK" setting to iPhone Device 4.0.



不過有時候你會發現,開始compile之後又會有別的Error出現,叫作Code Sign error,在網路上找到的解法有好幾種,大部份的人說把keychain access中的login設成default就可以解決這個問題,不過我不知道為什麼,在我的keychain access中我找不到設login為default的地方,所以我用了另外一個方法。
But while compiling this project, you will encounter another problem called "Code Sign error". There are several solutions on the internet that you can find. Most of the people said that can be corrected by setting "login" as default in keychain access utility. But unfortunatelly I can't find out where can I turn it on. So here is an alternative solution.



離開xcode之後,到這個project的目錄,尋找一個叫作project.pbxproj的檔案,通常它會在一個叫作{projectName}.xcodeproj的目錄下,把裡面的PROVISIONING_PROFILE移除掉,然後再重新啟動xcode,這時就可以發現又可以build了。

Exit XCODE and go to the project diectory. Find this file project.pbxproj in your {project path}/{projectName}.xcodeproj, and remove this line PROVISIONING_PROFILE in that file. Then open your xcode and rebuild it again.

至於這個PROVISIONING_PROFILE是什麼,老實說我也不知道,這個方法我也是從網路上找來的,
但是是從那裡找來的,我也忘記了,只能在這裡感謝這位分享出來的好人…

What is PROVISIONING_PROFILE? Frankly speeking, I don't know. I got the solution from the google search, but I forgot where is it came from. So I just can say "thank you Anonymous" here.

2010年7月11日 星期日

IBAction and IBOutlet 是什麼?

最近開始學習使用XCODE與整個iphone開發的環境,在下載APPLE官方的程式碼後遇到的第一個問題就是,裡面一大堆IBOutlet跟IBAction,這到底是什麼東西?




如果有心點,去尋找IBOutlet與IBAction的definition時,會發現…
#ifndef IBOutlet
#define IBOutlet
#endif

#ifndef IBAction
#define IBAction void
#endif

它是空的,其實它只是一個告訴Interface Builder的標籤。
IBOutlet是對應到視窗物件指標的識別標籤,它目的是讓Controller存取此物件。

舉個例子,可以再Controller中加入
IBOutlet UITextField *_TextField;
接下來就只要到Interface Builder中拉條線把關係建立起來,就可以靠_TextField來存取它
也就是說當我們想要顯示"Hello iPhone"在這個TextField時,就可以像這樣寫…

_TextField.text = @"Hello iPhone";

至於IBAction則是當某個動作被觸發時,用這個標籤告訴Interface Builder應該連結到的地方。

如果我們希望寫出一個當按鈕被按下時,就秀出Hello iPhone的小程式(就是Hello C++之類的作業)
我們就只要,打開XCODE,然後開始一個專案之後,在程式碼中加入這些東西

IBOutlet UITextField *_TextField; //point to an UITexField object on the view
- (IBAction)ButtomPressed{
_TextField.text = @"Hello iPhone";
}

接下來,就是打開IB開始大玩連連看


先把需要的元件放進去,



接下來就是大玩連連看



接下來 就是把上面的程式碼填入,就完成了第一個Hello iPhone小程式