<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5855805980158341754</id><updated>2011-10-29T01:24:58.706+08:00</updated><category term='瀏覽器'/><category term='PHP'/><category term='旅遊'/><category term='程式'/><category term='論文'/><category term='心得感想'/><category term='心情'/><category term='Java'/><category term='iphone程式開發'/><category term='Symbian C++'/><category term='軟體'/><category term='Android開發'/><title type='text'>程式開發與生活玩樂的隨手筆記</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>72</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-9033508614945713695</id><published>2011-08-19T14:24:00.004+08:00</published><updated>2011-08-19T15:39:07.772+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>ListView運用</title><content type='html'>package com.demo.android;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.app.ListActivity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.widget.AdapterView;&lt;br /&gt;import android.widget.ArrayAdapter;&lt;br /&gt;import android.widget.ListView;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//繼承ListActivity 這個類別其實就是一個含有一個ListView元件的Activity類別&lt;/span&gt;&lt;br /&gt;public class ListviewtestActivity extends ListActivity {&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;    super.onCreate(savedInstanceState);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//取得儲存在string.xml的文字 放在countries陣列&lt;/span&gt;&lt;br /&gt;    String[] countries = getResources().getStringArray(R.array.functionS_array);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;// 將陣列的內容 放到ArrayAdapter&lt;/span&gt;&lt;br /&gt;rrayAdapter&amp;lt;String&amp;gt; adapter=(new ArrayAdapter&amp;lt;String&amp;gt;(this, android.R.layout.simple_list_item_1, countries));&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//取得the activity 的list view widget.&lt;/span&gt;&lt;br /&gt;    ListView lv = getListView();&lt;br /&gt;//設定adapter將陣列內容給這個widget&lt;br /&gt;    lv.setAdapter(adapter);&lt;br /&gt;    lv.setTextFilterEnabled(true);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//監聽有沒有click動作&lt;/span&gt;&lt;br /&gt;    lv.setOnItemClickListener(new AdapterView.OnItemClickListener()&lt;br /&gt;    {&lt;br /&gt;    	&lt;br /&gt;    	public void onItemClick(AdapterView&amp;lt;?&amp;gt;adapterView, View v, int position, long id)&lt;br /&gt;   	 {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//如果要顯示user選中的內容可以改寫以下&lt;/span&gt;&lt;br /&gt;/*Toast.makeText(ListviewtestActivity.this, "You select "+countries[position]+"é �", Toast.LENGTH_SHORT).show();*/&lt;br /&gt;&lt;br /&gt;   		 Toast.makeText(ListviewtestActivity.this, "You select "+Integer.toString(position+1), Toast.LENGTH_SHORT).show();&lt;br /&gt;   	 }&lt;br /&gt;	&lt;br /&gt;   	&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;main.xml:&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//用ListView Widget&lt;/span&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;ListView&lt;br /&gt; xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt; android:layout_width="fill_parent"&lt;br /&gt; android:layout_height="fill_parent"&lt;br /&gt; android:id="@+id/lv"&amp;gt;&lt;br /&gt;&amp;lt;/ListView&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-9033508614945713695?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/9033508614945713695/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2011/08/listview.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/9033508614945713695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/9033508614945713695'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2011/08/listview.html' title='ListView運用'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2542484452435028081</id><published>2011-06-06T18:14:00.007+08:00</published><updated>2011-06-06T19:13:25.952+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone實機開發-程式 免簽證(idp)上傳到iphone執行(2011更新)</title><content type='html'>&lt;span class="Apple-style-span"&gt;&lt;br /&gt;服役了很久時間 xcode和iphone sdk也更新了很多版本&lt;br /&gt;&lt;br /&gt;當兵當了太久 腦袋有點空空 讓我來重拾以往的passion吧&lt;br /&gt;&lt;br /&gt;以前的免idp的方法 也有點改變 本篇主要是因應版本更新而做的教學&lt;br /&gt;&lt;br /&gt;環境:&lt;br /&gt;mac os:Mac os x 10.6.7&lt;br /&gt;iphone:3.1.2(我沒更新)&lt;br /&gt;xocde:3.2.5&lt;br /&gt;iphone sdk:4.2&lt;br /&gt;&lt;br /&gt;&lt;a href="http://iphonesdkdev.blogspot.com/2010/04/old-versions-of-iphone-sdk.html"&gt;xcode和iphone sdk下載按此&lt;/a&gt;(需帳號)&lt;br /&gt;&lt;br /&gt;下載Xcode 3.2.5 and iOS SDK 4.2 for Snow Leopard(10.6.4)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.&lt;br /&gt;從mac os找以下路徑&lt;br /&gt;Developer/Platforms/iPhonOS.platform/Developer/SDKs/IphoneOS4.2sdk(對應你要開發的版本 做相同的修改))&lt;br /&gt;把裡面的SDKSettings.plist拉到桌面 然後按右鍵以Dashcode打開然候找到&lt;br /&gt; CODE_SIGNING_REQUIRED 把它的string值 改成No 存檔之後 拉回去覆蓋即可&lt;br /&gt;&lt;br /&gt;2.點專案名稱，右鍵點GET Info，分別將Code Singing Identity與Any iOS都設成Don't Code Sign&lt;br /&gt;&lt;br /&gt;3.接著同樣將iOS Development Target 設成你的iphone 手機版本&lt;br /&gt;&lt;br /&gt;4.至於如何看iphone版本 就是先連接iphone 並且打開xcode然後點上方windows 然後&lt;br /&gt;&lt;br /&gt;選organizer 看裡頭的software version就可以知道&lt;br /&gt;&lt;br /&gt;5.一切準備就緒之後 按下xcode左上方 選擇device(原本跑模擬器是選擇simulator)&lt;br /&gt;&lt;br /&gt;接著按下Build and Run 程式沒錯誤的話 就會安裝到手機了&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2542484452435028081?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2542484452435028081/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2011/06/iphone-idpiphone2011.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2542484452435028081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2542484452435028081'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2011/06/iphone-idpiphone2011.html' title='iphone實機開發-程式 免簽證(idp)上傳到iphone執行(2011更新)'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8456465131582379532</id><published>2010-10-16T21:54:00.003+08:00</published><updated>2010-12-04T00:55:27.147+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>專業訓結束</title><content type='html'>一眨眼5週的專業訓又結束了  在這邊的日子過得還不錯  接下來就是要下部隊了 受苦受難的開始orz 離開學校單位 放假時間就開始不固定了 就是用排假的方式 不知道下次放假是什麼時候了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8456465131582379532?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8456465131582379532/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/10/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8456465131582379532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8456465131582379532'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/10/blog-post.html' title='專業訓結束'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-7327934406854295744</id><published>2010-09-13T12:00:00.003+08:00</published><updated>2010-12-04T00:53:16.295+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>新訓</title><content type='html'>很快的7天的結訓假要尾聲了 時間過得好快阿~接下來就要到專業訓的地方受訓了&lt;br /&gt;新訓的時候 都會覺得7天是相當漫長&lt;br /&gt;還記得剛進來的時候 相當不適應 很多事都會被管 洗澡吃飯時間 都非常的趕 至於打電話是 一直到第四天還第五天才開放 等電話打通的時候 真的會有一種莫名想掉眼淚的衝動 訓練也是非常的辛苦 很多人撐不下去 就退訓了&lt;br /&gt;不過我都把它當作上健身房(只能這麼想了&gt;&lt;) 每天都跟同寢互相鼓勵 互相倒數還有幾天放假等 只能說新訓的時候過得非常充實 到了最後結訓那天 真的會開心到跳起來~因為很快的就要出去了 吃很久沒吃過的東西 見很久沒見到的北鼻~謝謝北鼻 在電話裡一直鼓勵我 也寫信給我 讓我有支撐下去的動力^^ 我終於撐過新訓了QQ 接下來就是要度過專業訓了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-7327934406854295744?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/7327934406854295744/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/09/blog-post.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7327934406854295744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7327934406854295744'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/09/blog-post.html' title='新訓'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3851384537686894786</id><published>2010-06-21T12:09:00.004+08:00</published><updated>2010-06-21T14:42:04.452+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-UIImageView</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jRLtRYQut2Y/TB8JrTSEKGI/AAAAAAAAC6I/nf4rEgbrDbM/s1600/imageview.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_jRLtRYQut2Y/TB8JrTSEKGI/AAAAAAAAC6I/nf4rEgbrDbM/s320/imageview.png" alt="" id="BLOGGER_PHOTO_ID_5485113510675621986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;在android上顯示圖片 有兩種方法 一種是直接在xml裡面用imageview 或者 用code的方式來顯示 這和iphone是相似的(xib和code)&lt;br /&gt;&lt;br /&gt;首先先把要顯示的圖檔丟到專案中的res/drawable資料夾&lt;br /&gt;&lt;br /&gt;接著開始寫程式&lt;br /&gt;方法一:在xml加入imageview&lt;br /&gt;main.xml&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;AbsoluteLayout&lt;br /&gt;android:id="@+id/widget0"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//加入ImageView&lt;/span&gt;&lt;br /&gt;&amp;lt;ImageView&lt;br /&gt;android:id="@+id/widget27"&lt;br /&gt;android:layout_width="37px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//one為圖檔的名字&lt;/span&gt;&lt;br /&gt;android:src="@drawable/one"&lt;br /&gt;android:layout_x="140px"&lt;br /&gt;android:layout_y="162px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/ImageView&amp;gt;&lt;br /&gt;&amp;lt;/AbsoluteLayout&amp;gt;&lt;br /&gt;&lt;br /&gt;方法二:用code的方式&lt;br /&gt;ImageView.java&lt;br /&gt;&lt;br /&gt;package com.demo.android.imageview;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.ImageView;&lt;br /&gt;import android.widget.AbsoluteLayout;&lt;br /&gt;import android.widget.Gallery.LayoutParams;&lt;br /&gt;&lt;br /&gt;public class Imageview extends Activity {&lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;     super.onCreate(savedInstanceState);&lt;br /&gt;     AbsoluteLayout mAbsoluteLayout = new AbsoluteLayout(this);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生ImageView object&lt;/span&gt;&lt;br /&gt;    ImageView imageView = new ImageView(this);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//讀取圖檔&lt;/span&gt;&lt;br /&gt;    imageView.setImageResource(R.drawable.one);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//設定圖片大小和位置&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);" class="normal"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);" class="sympad"&gt;AbsoluteLayout.LayoutParams&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       &lt;/span&gt;&lt;span class="normal"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(int width, int height, int x, int y)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;LayoutParams.WRAP_CONTENT 用圖片的原始大小 x,y為圖片的顯示位置&lt;/span&gt;&lt;br /&gt;myview.setLayoutParams(new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,&lt;br /&gt;LayoutParams.WRAP_CONTENT,130,192));&lt;br /&gt;   mAbsoluteLayout.addView(myview);&lt;br /&gt;     setContentView(mAbsoluteLayout);&lt;br /&gt; }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3851384537686894786?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3851384537686894786/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-uiimageview.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3851384537686894786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3851384537686894786'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-uiimageview.html' title='Android開發-UIImageView'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_jRLtRYQut2Y/TB8JrTSEKGI/AAAAAAAAC6I/nf4rEgbrDbM/s72-c/imageview.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-1258206323104185207</id><published>2010-06-17T01:26:00.003+08:00</published><updated>2010-06-17T01:46:34.235+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-實際應用(一)基礎代謝率</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jRLtRYQut2Y/TBkNvDBoD2I/AAAAAAAAC5w/oN63CQcN7UQ/s1600/Health.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_jRLtRYQut2Y/TBkNvDBoD2I/AAAAAAAAC5w/oN63CQcN7UQ/s320/Health.png" alt="" id="BLOGGER_PHOTO_ID_5483429123217428322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;這次程式是撰寫 計算人的基礎代謝率 其實此程式在iphone已經寫過了 這次因為在練習 所以將此程式又寫了另外一個版本在android上 而寫此程式的目的在於 將之前學過的東西再複習一次 增加熟練度&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;AbsoluteLayout&lt;br /&gt;android:id="@+id/widget0"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;EditText&lt;br /&gt;android:id="@+id/height"&lt;br /&gt;android:layout_width="122px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:layout_x="130px"&lt;br /&gt;android:layout_y="22px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/EditText&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/widget28"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="22px"&lt;br /&gt;android:text="Height(cm)"&lt;br /&gt;android:layout_x="40px"&lt;br /&gt;android:layout_y="32px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/widget29"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="23px"&lt;br /&gt;android:text="Weight(kg)"&lt;br /&gt;android:layout_x="40px"&lt;br /&gt;android:layout_y="102px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;EditText&lt;br /&gt;android:id="@+id/weight"&lt;br /&gt;android:layout_width="122px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:layout_x="130px"&lt;br /&gt;android:layout_y="92px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/EditText&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/widget31"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Age"&lt;br /&gt;android:layout_x="60px"&lt;br /&gt;android:layout_y="162px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;EditText&lt;br /&gt;android:id="@+id/age"&lt;br /&gt;android:layout_width="123px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:layout_x="130px"&lt;br /&gt;android:layout_y="152px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/EditText&amp;gt;&lt;br /&gt;&amp;lt;RadioGroup&lt;br /&gt;android:id="@+id/myradio"&lt;br /&gt;android:layout_width="288px"&lt;br /&gt;android:layout_height="76px"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;android:orientation="vertical"&lt;br /&gt;android:layout_x="10px"&lt;br /&gt;android:layout_y="202px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;RadioButton&lt;br /&gt;android:id="@+id/manradio"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Man"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/RadioButton&amp;gt;&lt;br /&gt;&amp;lt;RadioButton&lt;br /&gt;android:id="@+id/womanradio"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Woman"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/RadioButton&amp;gt;&lt;br /&gt;&amp;lt;/RadioGroup&amp;gt;&lt;br /&gt;&amp;lt;Spinner&lt;br /&gt;android:id="@+id/spinner"&lt;br /&gt;android:layout_width="194px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:layout_x="120px"&lt;br /&gt;android:layout_y="312px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/Spinner&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/display"&lt;br /&gt;android:layout_width="240px"&lt;br /&gt;android:layout_height="42px"&lt;br /&gt;android:background="#ffff6600"&lt;br /&gt;android:layout_x="40px"&lt;br /&gt;android:layout_y="382px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;Button&lt;br /&gt;android:id="@+id/calculate"&lt;br /&gt;android:layout_width="77px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="calculate"&lt;br /&gt;android:layout_x="30px"&lt;br /&gt;android:layout_y="312px"&lt;br /&gt;android:onClick="Calculate"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;&amp;lt;/AbsoluteLayout&amp;gt;&lt;br /&gt;&lt;br /&gt;Health.java&lt;br /&gt;&lt;br /&gt;package com.android.demo.health;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.text.DecimalFormat;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.widget.AdapterView;&lt;br /&gt;import android.widget.ArrayAdapter;&lt;br /&gt;import android.widget.EditText;&lt;br /&gt;import android.widget.RadioGroup;&lt;br /&gt;import android.widget.Spinner;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class Health extends Activity {&lt;br /&gt;  /** Called when the activity is first created. */&lt;br /&gt;  @Override&lt;br /&gt;  public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;      super.onCreate(savedInstanceState);&lt;br /&gt;      setContentView(R.layout.main);&lt;br /&gt;      findview();&lt;br /&gt;      spinnercontent();&lt;br /&gt;      setlistener();&lt;br /&gt;  }&lt;br /&gt;  private EditText Height,Weight,Age;&lt;br /&gt;  private TextView display;&lt;br /&gt;  private Spinner spinner;&lt;br /&gt;  private float a;&lt;br /&gt;  private RadioGroup Myradiogroup;&lt;br /&gt;  boolean man,woman;&lt;br /&gt;  private void findview()&lt;br /&gt;  {&lt;br /&gt;  Myradiogroup=(RadioGroup)findViewById(R.id.myradio);&lt;br /&gt;  Height=(EditText)findViewById(R.id.height);&lt;br /&gt;  Weight=(EditText)findViewById(R.id.weight);&lt;br /&gt;  Age=(EditText)findViewById(R.id.age);&lt;br /&gt;  spinner=(Spinner)findViewById(R.id.spinner);&lt;br /&gt;  display=(TextView)findViewById(R.id.display);&lt;br /&gt;  }&lt;br /&gt;   private RadioGroup.OnCheckedChangeListener changeradio=new RadioGroup.OnCheckedChangeListener()&lt;br /&gt;      {&lt;br /&gt;          public void onCheckedChanged(RadioGroup group, int checkedId)&lt;br /&gt;          {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//判斷user是圈選男性或女性&lt;/span&gt;&lt;br /&gt;      switch(checkedId)&lt;br /&gt;      {&lt;br /&gt;      case R.id.manradio:&lt;br /&gt;              man=true;&lt;br /&gt;              break;&lt;br /&gt;      case R.id.womanradio:&lt;br /&gt;          woman=true;&lt;br /&gt;          break;&lt;br /&gt;      default:&lt;br /&gt;          Toast.makeText(Health.this,"You don't select something else",Toast.LENGTH_LONG).show();&lt;br /&gt;      }&lt;br /&gt;          }&lt;br /&gt;       &lt;br /&gt;      };&lt;br /&gt;  private void setlistener()&lt;br /&gt;  {&lt;br /&gt;      spinner.setOnItemSelectedListener(spinnerListener);&lt;br /&gt;      Myradiogroup.setOnCheckedChangeListener(changeradio);&lt;br /&gt;  }&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//設定下拉式選單的內容&lt;/span&gt;&lt;br /&gt;  private void spinnercontent()&lt;br /&gt;  {&lt;br /&gt;       ArrayAdapter&amp;lt;String&amp;gt; adapter = new ArrayAdapter&amp;lt;String&amp;gt;(this,android.R.layout.simple_spinner_item,new String[]{"很少運動或完全沒運動","每週運動1到3次","每週運動3到5次","每週運動6到7次","每天非常重度的運動"});&lt;br /&gt;          adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);&lt;br /&gt;          spinner.setAdapter(adapter);&lt;br /&gt;  }&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//監聽user選了下拉式選單的選項&lt;/span&gt;&lt;br /&gt;   private Spinner.OnItemSelectedListener spinnerListener= new Spinner.OnItemSelectedListener()&lt;br /&gt;      {&lt;br /&gt;           public void onItemSelected(AdapterView&amp;lt;?&amp;gt;adapterView, View v, int position, long id)&lt;br /&gt;           {&lt;br /&gt;               String string=adapterView.getSelectedItem().toString();&lt;br /&gt;               if(string.equals("很少運動或完全沒運動"))&lt;br /&gt;               {&lt;br /&gt;                   a=(float) 1.2;&lt;br /&gt;               }&lt;br /&gt;               else if (string.equals("每週運動1到3次"))&lt;br /&gt;               {&lt;br /&gt;                   a=(float)1.375;&lt;br /&gt;               }&lt;br /&gt;               else if (string.equals("每週運動3到5次"))&lt;br /&gt;               {&lt;br /&gt;                   a=(float)1.55;&lt;br /&gt;               }&lt;br /&gt;               else if (string.equals("每週運動6到7次"))&lt;br /&gt;               {&lt;br /&gt;                   a=(float)1.725;&lt;br /&gt;               }&lt;br /&gt;               else&lt;br /&gt;               {&lt;br /&gt;                   a=(float)1.9;&lt;br /&gt;               }&lt;br /&gt;            &lt;br /&gt;           }&lt;br /&gt;             public void onNothingSelected(AdapterView&amp;lt;?&amp;gt;adapterView)&lt;br /&gt;             {&lt;br /&gt;                 Toast.makeText(Health.this, "You don't select something else", Toast.LENGTH_LONG).show();&lt;br /&gt;             }          &lt;br /&gt;      };&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當user按下calculate按鈕 就執行內部的程式&lt;/span&gt;&lt;br /&gt;      public void Calculate(View v)&lt;br /&gt;      {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//取得user所填入的數字&lt;/span&gt;&lt;br /&gt;          float height = Float.parseFloat(Height.getText().toString());&lt;br /&gt;          float weight = Float.parseFloat(Weight.getText().toString());&lt;br /&gt;          int age=Integer.parseInt(Age.getText().toString());&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//設定計算數字的格式&lt;/span&gt;&lt;br /&gt;           DecimalFormat nf = new DecimalFormat("0.00");&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//如果user是男性 就以此公式計算&lt;/span&gt;&lt;br /&gt;          if(man)&lt;br /&gt;          {&lt;br /&gt;              double manresulta=(double)66+(13.8*weight)+(5.0*height)-(6.8*age);&lt;br /&gt;              double manresultb=a*manresulta;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//先將計算後的數字對應我設定的格式 接著將double轉成string 最後顯示出來&lt;/span&gt;&lt;br /&gt;              display.setText(String.valueOf(nf.format(manresultb)));&lt;br /&gt;          }&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//如果user是女性 就以此公式計算&lt;/span&gt;&lt;br /&gt;          if(woman)&lt;br /&gt;          {&lt;br /&gt;              double womanresulta=(double)655+(9.6*weight)+(1.8*height)-(4.7*age);&lt;br /&gt;              double womanresultb=a*womanresulta;&lt;br /&gt;              display.setText(String.valueOf(nf.format(womanresultb)));&lt;br /&gt;          }&lt;br /&gt;       &lt;br /&gt;      }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-1258206323104185207?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/1258206323104185207/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1258206323104185207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1258206323104185207'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android.html' title='Android開發-實際應用(一)基礎代謝率'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jRLtRYQut2Y/TBkNvDBoD2I/AAAAAAAAC5w/oN63CQcN7UQ/s72-c/Health.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8925568899204690856</id><published>2010-06-14T21:05:00.003+08:00</published><updated>2010-06-14T21:14:00.054+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-RadioButton</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jRLtRYQut2Y/TBYq_bwieyI/AAAAAAAAC5g/BewGa8CmL9c/s1600/radiobutton.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_jRLtRYQut2Y/TBYq_bwieyI/AAAAAAAAC5g/BewGa8CmL9c/s320/radiobutton.png" alt="" id="BLOGGER_PHOTO_ID_5482616865641626402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;此次程式主要是練習RadioButton的使用方法 並且同樣的使用Toast來顯示 來方便驗證是否正確的監聽到使用者的圈選&lt;br /&gt;此次用RadioGroup將同性質的按鈕歸類為同一類 來達到兩個按鈕互斥(也就是二選一)&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;AbsoluteLayout&lt;br /&gt;android:id="@+id/widget0"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;RadioGroup&lt;br /&gt;android:id="@+id/radiogroup"&lt;br /&gt;android:layout_width="320px"&lt;br /&gt;android:layout_height="430px"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;android:orientation="vertical"&lt;br /&gt;android:layout_x="0px"&lt;br /&gt;android:layout_y="2px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;RadioButton&lt;br /&gt;android:id="@+id/maleradio"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Man"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/RadioButton&amp;gt;&lt;br /&gt;&amp;lt;RadioButton&lt;br /&gt;android:id="@+id/femaleradio"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Woman"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/RadioButton&amp;gt;&lt;br /&gt;&amp;lt;/RadioGroup&amp;gt;&lt;br /&gt;&amp;lt;/AbsoluteLayout&amp;gt;&lt;br /&gt;&lt;br /&gt;Radiobutton.java&lt;br /&gt;&lt;br /&gt;package com.android.demo.radiobutton;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.RadioGroup;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class Radiobutton extends Activity {&lt;br /&gt;   /** Called when the activity is first created. */&lt;br /&gt;   @Override&lt;br /&gt;   public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;       super.onCreate(savedInstanceState);&lt;br /&gt;       setContentView(R.layout.main);&lt;br /&gt;       findview();&lt;br /&gt;       setlistener();&lt;br /&gt;   &lt;br /&gt;   }&lt;br /&gt;   private RadioGroup myradiogroup;&lt;br /&gt;   private void findview()&lt;br /&gt;   {&lt;br /&gt;       myradiogroup=(RadioGroup)findViewById(R.id.radiogroup);&lt;br /&gt;   }&lt;br /&gt;   private void setlistener()&lt;br /&gt;   {&lt;br /&gt;       myradiogroup.setOnCheckedChangeListener(changeradio);&lt;br /&gt;   }&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//監聽radiogroup裡面的radiobutton是否有被使用者圈選&lt;/span&gt;&lt;br /&gt;   private RadioGroup.OnCheckedChangeListener changeradio=new RadioGroup.OnCheckedChangeListener()&lt;br /&gt;   {&lt;br /&gt;       public void onCheckedChanged(RadioGroup group, int checkedId)&lt;br /&gt;       {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//透過id來辨認不同的radiobutton&lt;/span&gt;&lt;br /&gt;   switch(checkedId)&lt;br /&gt;   {&lt;br /&gt;   case R.id.maleradio:&lt;br /&gt;           Toast.makeText(Radiobutton.this,"You are a Man",Toast.LENGTH_LONG).show();&lt;br /&gt;           break;&lt;br /&gt;   case R.id.femaleradio:&lt;br /&gt;       Toast.makeText(Radiobutton.this,"You are a Woman",Toast.LENGTH_LONG).show();&lt;br /&gt;       break;&lt;br /&gt;   default:&lt;br /&gt;       Toast.makeText(Radiobutton.this,"Someting error",Toast.LENGTH_LONG).show();&lt;br /&gt;   }&lt;br /&gt;       }&lt;br /&gt;     &lt;br /&gt;   };&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8925568899204690856?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8925568899204690856/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-radiobutton.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8925568899204690856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8925568899204690856'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-radiobutton.html' title='Android開發-RadioButton'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jRLtRYQut2Y/TBYq_bwieyI/AAAAAAAAC5g/BewGa8CmL9c/s72-c/radiobutton.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-7734169647877963973</id><published>2010-06-13T21:44:00.004+08:00</published><updated>2010-06-14T21:19:57.662+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-Checkbox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jRLtRYQut2Y/TBYsVdYArBI/AAAAAAAAC5o/QXL2o6xYMHs/s1600/checkbox.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_jRLtRYQut2Y/TBYsVdYArBI/AAAAAAAAC5o/QXL2o6xYMHs/s320/checkbox.png" alt="" id="BLOGGER_PHOTO_ID_5482618343544368146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;這次的程式主要是練習Checkbox的使用方法 並且同樣和上篇一樣 搭配Toast來顯示&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;AbsoluteLayout&lt;br /&gt;android:id="@+id/widget0"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;CheckBox&lt;br /&gt;android:id="@+id/male"&lt;br /&gt;android:layout_width="88px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Man"&lt;br /&gt;android:layout_x="50px"&lt;br /&gt;android:layout_y="252px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/CheckBox&amp;gt;&lt;br /&gt;&amp;lt;CheckBox&lt;br /&gt;android:id="@+id/female"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Woman"&lt;br /&gt;android:layout_x="190px"&lt;br /&gt;android:layout_y="252px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/CheckBox&amp;gt;&lt;br /&gt;&amp;lt;/AbsoluteLayout&amp;gt;&lt;br /&gt;&lt;br /&gt;Checkbox.java&lt;br /&gt;&lt;br /&gt;package com.android.demo.checkbox;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.CheckBox;&lt;br /&gt;import android.widget.CompoundButton;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;public class Checkbox extends Activity {&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;    super.onCreate(savedInstanceState);&lt;br /&gt;    setContentView(R.layout.main);&lt;br /&gt;    findview();&lt;br /&gt;    checkboxlistener();&lt;br /&gt;}&lt;br /&gt;private CheckBox malecheckbox;&lt;br /&gt;private CheckBox femalecheckbox;&lt;br /&gt;private void findview()&lt;br /&gt;{&lt;br /&gt;    malecheckbox=(CheckBox)findViewById(R.id.male);&lt;br /&gt;    femalecheckbox=(CheckBox)findViewById(R.id.female);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//設定checkbox的listener&lt;/span&gt;&lt;br /&gt;private void checkboxlistener()&lt;br /&gt;{&lt;br /&gt;    malecheckbox.setOnCheckedChangeListener(listener);&lt;br /&gt;    femalecheckbox.setOnCheckedChangeListener(listener);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//監聽user 是否有選取&lt;/span&gt;&lt;br /&gt;private CheckBox.OnCheckedChangeListener listener=new CheckBox.OnCheckedChangeListener()&lt;br /&gt;{&lt;br /&gt;    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)&lt;br /&gt;    {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//如果user按下Man&lt;/span&gt;&lt;br /&gt;        if(malecheckbox.isChecked()==true)&lt;br /&gt;        {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//則顯示字串You are Man&lt;/span&gt;&lt;br /&gt;            Toast.makeText(Checkbox.this,"You are a Man",Toast.LENGTH_LONG).show();&lt;br /&gt;        }&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//如果user按下Woman&lt;/span&gt;&lt;br /&gt;        if(femalecheckbox.isChecked()==true)&lt;br /&gt;        {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//則顯示字串You are Woman&lt;/span&gt;&lt;br /&gt;            Toast.makeText(Checkbox.this,"You are a Woman",Toast.LENGTH_LONG).show();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;};&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-7734169647877963973?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/7734169647877963973/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-checkbox.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7734169647877963973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7734169647877963973'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-checkbox.html' title='Android開發-Checkbox'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_jRLtRYQut2Y/TBYsVdYArBI/AAAAAAAAC5o/QXL2o6xYMHs/s72-c/checkbox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3687921257224489061</id><published>2010-06-13T01:34:00.003+08:00</published><updated>2010-06-13T02:07:11.212+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-Spinner應用</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRLtRYQut2Y/TBPMsAFP4nI/AAAAAAAAC5Q/8eT7yqIxaLo/s1600/spinnertest.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_jRLtRYQut2Y/TBPMsAFP4nI/AAAAAAAAC5Q/8eT7yqIxaLo/s320/spinnertest.png" alt="" id="BLOGGER_PHOTO_ID_5481950227748348530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;此次的程式 主要是練習下拉式選單 並且搭配Toast來顯示&lt;br /&gt;Toast 介面元件的作用是彈出一個訊息框，快速在螢幕上顯示一小段訊息&lt;br /&gt;這次的程式會學習到&lt;br /&gt;1.Spinner的用法&lt;br /&gt;2.Toast&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;AbsoluteLayout&lt;br /&gt;android:id="@+id/widget29"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;Spinner&lt;br /&gt;android:id="@+id/spinner"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:layout_x="120px"&lt;br /&gt;android:layout_y="112px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/Spinner&amp;gt;&lt;br /&gt;&amp;lt;/AbsoluteLayout&amp;gt;&lt;br /&gt;&lt;br /&gt;Spinnertest.java&lt;br /&gt;&lt;br /&gt;package com.demo.android.spinnertest;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import  android.view.View;&lt;br /&gt;import android.widget.AdapterView;&lt;br /&gt;import android.widget.ArrayAdapter;&lt;br /&gt;import android.widget.Spinner;&lt;br /&gt;import android.widget.Toast;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class Spinnertest extends Activity {&lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;     super.onCreate(savedInstanceState);&lt;br /&gt;     setContentView(R.layout.main);&lt;br /&gt;     findview();&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//建立一個ArrayAdapter物件，並且存放下拉式選單的內容&lt;/span&gt;&lt;br /&gt;     ArrayAdapter&amp;lt;String&amp;gt; adapter = new ArrayAdapter&amp;lt;String&amp;gt;(this,android.R.layout.simple_spinner_item,new String[]{"Screen","Keyboard","Mouse"});&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//設定Spinner的樣式&lt;/span&gt;&lt;br /&gt;     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;//設定adapter 將剛剛的下拉式選單內容 給這個widget&lt;/span&gt;&lt;br /&gt;spinner.setAdapter(adapter);&lt;br /&gt;     spinner.setOnItemSelectedListener(spinnerListener);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void findview() {&lt;br /&gt;     spinner = (Spinner) findViewById(R.id.spinner);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private Spinner spinner;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//監聽下拉式選單 是否被選擇&lt;/span&gt;&lt;br /&gt; private Spinner.OnItemSelectedListener spinnerListener= new Spinner.OnItemSelectedListener()&lt;br /&gt; {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//如果被選擇&lt;/span&gt;&lt;br /&gt;      public void onItemSelected(AdapterView&amp;lt;?&amp;gt;adapterView, View v, int position, long id)&lt;br /&gt;      {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//利用Toast來顯示 Toast.LENGTH_LONG則表示 顯示時間長&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//Spinnertest.this 則代表指向Spinnertest這個實例 若是寫成this則是指向OnItemSelectedListener這個實例&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//最後用show()將Toast 元件顯示在螢幕上&lt;/span&gt;&lt;br /&gt;          Toast.makeText(Spinnertest.this, "You select"+adapterView.getSelectedItem().toString(), Toast.LENGTH_LONG).show();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//若是沒有選擇任何項目&lt;/span&gt;&lt;br /&gt;        public void onNothingSelected(AdapterView&amp;lt;?&amp;gt;adapterView)&lt;br /&gt;        {&lt;br /&gt;            Toast.makeText(Spinnertest.this, "You don't select anything", Toast.LENGTH_LONG).show();&lt;br /&gt;        }         &lt;br /&gt; };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3687921257224489061?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3687921257224489061/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-spinner.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3687921257224489061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3687921257224489061'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-spinner.html' title='Android開發-Spinner應用'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jRLtRYQut2Y/TBPMsAFP4nI/AAAAAAAAC5Q/8eT7yqIxaLo/s72-c/spinnertest.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-4882120343916926225</id><published>2010-06-11T03:29:00.001+08:00</published><updated>2010-06-11T03:33:36.677+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-Debug_Logcat tool</title><content type='html'>有時編譯完程式之後 會發現明明沒錯誤 怎麼丟到模擬器 卻又有問題產生 此時可以使用Logcat來幫助你 解決bug 有找到一篇寫得不錯 也有圖文教學的網頁 可以參考&lt;br /&gt;&lt;a href="http://goo.gl/tWqD"&gt;&lt;/a&gt;&lt;a href="http://tw.myblog.yahoo.com/blue-comic/article?mid=654&amp;amp;prev=655&amp;amp;next=653"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://tw.myblog.yahoo.com/blue-comic/article?mid=654&amp;amp;prev=655&amp;amp;next=653"&gt;Logcat使用教學&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-4882120343916926225?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/4882120343916926225/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-debuglogcat-tool.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4882120343916926225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4882120343916926225'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-debuglogcat-tool.html' title='Android開發-Debug_Logcat tool'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3756782812687361851</id><published>2010-06-11T02:56:00.006+08:00</published><updated>2010-06-11T03:28:47.062+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-Handle UI Events_多個button</title><content type='html'>在Android裡面 是利用Event listener來取得使用者是否正在操作介面(例如按下按鈕、touch等)來給予適當的回應 此次程式 延續上次的bmi程式 新增加了reset按鈕 可以將所有欄位清空 並且將各功能分開寫 而之前程式是一個button對應一個listener 那麼多個button 就可能需要很多個listener? 此部份我有找到一個可行的方法可以簡化此情形 查到的資料是寫android 1.6之後 就有支援這種寫法&lt;br /&gt;&lt;br /&gt;此次的程式會學到:&lt;br /&gt;1.多個button如何對應同個listener(當然也可以對應不同listener)&lt;br /&gt;2.解決可能需要很多listener的情形 讓程式能夠簡化&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;AbsoluteLayout&lt;br /&gt;android:id="@+id/widget0"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;Button&lt;br /&gt;android:id="@+id/reset"&lt;br /&gt;android:layout_width="109px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Reset"&lt;br /&gt;android:layout_x="100px"&lt;br /&gt;android:layout_y="362px"&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將按鈕指定對應的listener&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;按下此按鈕將會執行ClickHandler內的東西&lt;/span&gt;&lt;br /&gt;android:onClick="ClickHandler"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;&amp;lt;Button&lt;br /&gt;android:id="@+id/submit"&lt;br /&gt;android:layout_width="108px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Cal Bmi"&lt;br /&gt;android:layout_x="100px"&lt;br /&gt;android:layout_y="292px"&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將按鈕指定對應的listener&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;按下此按鈕將會執行ClickHandler內的東西&lt;/span&gt;&lt;br /&gt;android:onClick="ClickHandler"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;&amp;lt;EditText&lt;br /&gt;android:id="@+id/height"&lt;br /&gt;android:layout_width="165px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:layout_x="100px"&lt;br /&gt;android:layout_y="22px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/EditText&amp;gt;&lt;br /&gt;&amp;lt;EditText&lt;br /&gt;android:id="@+id/weight"&lt;br /&gt;android:layout_width="167px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:layout_x="100px"&lt;br /&gt;android:layout_y="82px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/EditText&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/result"&lt;br /&gt;android:layout_width="166px"&lt;br /&gt;android:layout_height="57px"&lt;br /&gt;android:background="#ffff9933"&lt;br /&gt;android:textColor="#ff666666"&lt;br /&gt;android:layout_x="70px"&lt;br /&gt;android:layout_y="152px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/suggest"&lt;br /&gt;android:layout_width="168px"&lt;br /&gt;android:layout_height="50px"&lt;br /&gt;android:background="#ffff9933"&lt;br /&gt;android:layout_x="70px"&lt;br /&gt;android:layout_y="222px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/widget33"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="32px"&lt;br /&gt;android:text="Height(cm)"&lt;br /&gt;android:layout_x="20px"&lt;br /&gt;android:layout_y="32px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/widget34"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Weight(kg)"&lt;br /&gt;android:layout_x="20px"&lt;br /&gt;android:layout_y="102px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;/AbsoluteLayout&amp;gt;&lt;br /&gt;&lt;br /&gt;Bmi.java&lt;br /&gt;&lt;br /&gt;package com.demo.android.bmi;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import java.text.DecimalFormat;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.widget.EditText;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class Bmi extends Activity {&lt;br /&gt;    /** Called when the activity is first created. */&lt;br /&gt;    @Override&lt;br /&gt;    public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;        super.onCreate(savedInstanceState);&lt;br /&gt;        setContentView(R.layout.main);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//取得view上的元件&lt;/span&gt;&lt;br /&gt;        findViews();&lt;br /&gt;    }&lt;br /&gt;    private EditText fieldheight;&lt;br /&gt;    private EditText fieldweight;&lt;br /&gt;    private TextView result;&lt;br /&gt;    private TextView fieldsuggest;&lt;br /&gt;  &lt;br /&gt;         public void ClickHandler(View v)&lt;br /&gt;            {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//利用switch case 來區別不同的按鈕&lt;/span&gt;&lt;br /&gt;             switch(v.getId())&lt;br /&gt;             {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//若是按下submit button 就執行calculate&lt;/span&gt;&lt;br /&gt;             case R.id.submit:&lt;br /&gt;            &lt;br /&gt;                 calculate();&lt;br /&gt;                 break;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//若是按下reset button 就執行reset&lt;/span&gt;&lt;br /&gt;             case R.id.reset:&lt;br /&gt;                reset();&lt;br /&gt;                break;&lt;br /&gt;                &lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         private void findViews()&lt;br /&gt;         {&lt;br /&gt;             fieldheight = (EditText)findViewById(R.id.height);&lt;br /&gt;             fieldweight = (EditText)findViewById(R.id.weight);&lt;br /&gt;             result = (TextView)findViewById(R.id.result);&lt;br /&gt;             fieldsuggest = (TextView)findViewById(R.id.suggest);&lt;br /&gt;         }&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//清除所有欄位&lt;/span&gt;&lt;br /&gt;         private void reset()&lt;br /&gt;         {&lt;br /&gt;             fieldheight.setText("");&lt;br /&gt;             result.setText("");&lt;br /&gt;             fieldweight.setText("");&lt;br /&gt;             fieldsuggest.setText("");&lt;br /&gt;            &lt;br /&gt;         }&lt;br /&gt;         private void calculate()&lt;br /&gt;         {&lt;br /&gt;              DecimalFormat nf = new DecimalFormat("0.00");&lt;br /&gt;              double height = Double.parseDouble(fieldheight.getText().toString())/100;&lt;br /&gt;                double weight = Double.parseDouble(fieldweight.getText().toString());&lt;br /&gt;                double BMI = weight / (height * height);               &lt;br /&gt;                result.setText("Your BMI is "+nf.format(BMI));&lt;br /&gt;                if(BMI&gt;25){&lt;br /&gt;                    fieldsuggest.setText("太胖了 該減肥了!");&lt;br /&gt;                }else if(18.51&lt;BMI&amp;amp;&amp;amp;BMI&lt;24){&lt;br /&gt;                    fieldsuggest.setText("人人稱羨的完美身材!");&lt;br /&gt;                }else{&lt;br /&gt;                    fieldsuggest.setText("太瘦了多吃點!");&lt;br /&gt;                }&lt;br /&gt;         }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3756782812687361851?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3756782812687361851/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-handle-ui-eventsbutton.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3756782812687361851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3756782812687361851'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-handle-ui-eventsbutton.html' title='Android開發-Handle UI Events_多個button'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-6981980750360948378</id><published>2010-06-02T19:50:00.005+08:00</published><updated>2010-06-02T21:13:28.321+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-BMI設計</title><content type='html'>首先要一個小觀念 Android將其應用程式的介面稱為View 而負責控制各種動作行為的程式 則稱為Activity&lt;br /&gt;這次的程式 我是參考&lt;span class="author"&gt;gasolin大的教學 逐一瞭解之後&lt;br /&gt;實際跑過一次 並且將我瞭解的部分 再寫一次 用來驗證是否熟悉&lt;br /&gt;&lt;/span&gt;&lt;span class="author"&gt;其實看起來有點像iphone中的MVC架構 但實際此程式並非依照此架構寫成的&lt;br /&gt;&lt;/span&gt;&lt;span class="author"&gt;gasolin大之後也有改成MVC架構的寫法 明顯的可以看出較為簡潔易懂 剛好也能對應我在iphone中所學到的&lt;/span&gt;&lt;br /&gt;&lt;span class="author"&gt;main.xml的部分是用來寫介面的部分 但android並不是透過xml儲存介面到手機上 而是&lt;/span&gt;&lt;a name="XML_描述檔與_R.java_檔"&gt;自動將 XML 描述檔轉換成資源檔案&lt;/a&gt; 而此檔案為R.java&lt;br /&gt;&lt;span class="author"&gt;此次的介面包括button,textview,edittext&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;/span&gt;&lt;span class="author"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;AbsoluteLayout&lt;br /&gt;android:id="@+id/widget0"&lt;br /&gt;android:layout_width="fill_parent"&lt;br /&gt;android:layout_height="fill_parent"&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;EditText&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//利用這個識別符號來對應這個元件 之後我們在程式中可以透過R.id.hegiht來調用他&lt;/span&gt;&lt;br /&gt;android:id="@+id/height"&lt;br /&gt;android:layout_width="157px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//限制此元件內容只能輸入integer&lt;/span&gt;&lt;br /&gt;android:numeric="integer"&lt;br /&gt;android:layout_x="100px"&lt;br /&gt;android:layout_y="22px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/EditText&amp;gt;&lt;br /&gt;&amp;lt;EditText&lt;br /&gt;android:id="@+id/weight"&lt;br /&gt;android:layout_width="158px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:numeric="integer"&lt;br /&gt;android:layout_x="100px"&lt;br /&gt;android:layout_y="102px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/EditText&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/widget29"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="31px"&lt;br /&gt;android:text="Height(cm)"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:layout_x="10px"&lt;br /&gt;android:layout_y="32px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/widget30"&lt;br /&gt;android:layout_width="wrap_content"&lt;br /&gt;android:layout_height="31px"&lt;br /&gt;android:text="Weight(kg)"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:layout_x="10px"&lt;br /&gt;android:layout_y="112px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;Button&lt;br /&gt;android:id="@+id/submit"&lt;br /&gt;android:layout_width="121px"&lt;br /&gt;android:layout_height="wrap_content"&lt;br /&gt;android:text="Calculate BMI"&lt;br /&gt;android:textSize="18sp"&lt;br /&gt;android:layout_x="100px"&lt;br /&gt;android:layout_y="322px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/suggest"&lt;br /&gt;android:layout_width="173px"&lt;br /&gt;android:layout_height="38px"&lt;br /&gt;android:textColor="#ff000000"&lt;br /&gt;android:background="#ffff9900"&lt;br /&gt;android:textSize="16sp"&lt;br /&gt;android:layout_x="70px"&lt;br /&gt;android:layout_y="242px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;TextView&lt;br /&gt;android:id="@+id/result"&lt;br /&gt;android:layout_width="172px"&lt;br /&gt;android:layout_height="42px"&lt;br /&gt;android:textColor="#ff000000"&lt;br /&gt;android:background="#ffff9933"&lt;br /&gt;android:textSize="16sp"&lt;br /&gt;android:layout_x="70px"&lt;br /&gt;android:layout_y="182px"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;/TextView&amp;gt;&lt;br /&gt;&amp;lt;/AbsoluteLayout&amp;gt;&lt;br /&gt;&lt;br /&gt;Bmi.java&lt;br /&gt;&lt;br /&gt;package com.demo.android.bmi;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import java.text.DecimalFormat;&lt;br /&gt;import android.view.View;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//用來監聽user是否按下button&lt;/span&gt;&lt;br /&gt;import android.view.View.OnClickListener;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//因為此程式用到button,edittext,textview 所以需要import以下&lt;/span&gt;&lt;br /&gt;import android.widget.Button;&lt;br /&gt;import android.widget.EditText;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class Bmi extends Activity {&lt;br /&gt;  /** Called when the activity is first created. */&lt;br /&gt;  @Override&lt;br /&gt;  public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;      super.onCreate(savedInstanceState);&lt;br /&gt;      setContentView(R.layout.main);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//宣告一個button 對應至在xml裡面的submit&lt;/span&gt;&lt;br /&gt;     Button button = (Button)findViewById(R.id.submit);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//監聽user是否按下按鈕 若按下 則執行calcBMI function&lt;/span&gt;&lt;br /&gt;     button.setOnClickListener(calcBMI);&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;  private OnClickListener calcBMI = new OnClickListener()&lt;br /&gt;  {&lt;br /&gt;       public void onClick(View v)&lt;br /&gt;          {&lt;br /&gt;              DecimalFormat nf = new DecimalFormat("0.00");&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//從&lt;/span&gt;&lt;/span&gt;&lt;span class="author"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;height&lt;/span&gt;&lt;/span&gt;&lt;span class="author"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;對應的元件中&lt;/span&gt;&lt;/span&gt;&lt;span class="author"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;取得user所輸入的數值&lt;/span&gt;&lt;/span&gt;&lt;span class="author"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;br /&gt;              EditText fieldheight = (EditText)findViewById(R.id.height);&lt;br /&gt;              EditText fieldweight = (EditText)findViewById(R.id.weight);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將字串轉成double&lt;/span&gt;&lt;br /&gt;               double height = Double.parseDouble(fieldheight.getText().toString())/100;&lt;br /&gt;               double weight = Double.parseDouble(fieldweight.getText().toString());&lt;br /&gt;               double BMI = weight / (height * height);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//xml中的result所對應的元件 &lt;/span&gt;             &lt;br /&gt;              TextView result = (TextView)findViewById(R.id.result);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//在result所對應的元件中 顯示字串 並且是按照之前所設定的格式&lt;/span&gt;&lt;br /&gt;               result.setText("Your BMI is "+nf.format(BMI));&lt;br /&gt;&lt;br /&gt;               TextView fieldsuggest = (TextView)findViewById(R.id.suggest);&lt;br /&gt;               if(BMI&gt;25){&lt;br /&gt;                   fieldsuggest.setText("太胖了 該減肥了!");&lt;br /&gt;               }&lt;br /&gt;else if(18.51&amp;lt;BMI&amp;amp;&amp;amp;BMI&amp;lt;24)&lt;br /&gt;{&lt;br /&gt;  fieldsuggest.setText("人人稱羨的完美身材!");&lt;br /&gt;                 }&lt;br /&gt;else{&lt;br /&gt;                     fieldsuggest.setText("太瘦了多吃點!");&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;         };&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/bmi&amp;amp;&amp;amp;bmi&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-6981980750360948378?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/6981980750360948378/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-bmi.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6981980750360948378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6981980750360948378'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/06/android-bmi.html' title='Android開發-BMI設計'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-1001668195382577317</id><published>2010-05-29T09:01:00.003+08:00</published><updated>2010-05-29T09:10:53.046+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-droiddraw</title><content type='html'>前陣子開發iphone 這次跳到android來開發 最不習慣的就是 android怎麼 沒有一個可以直接拖拉介面的東西 用的很不習慣 這次來介紹一個其他人所開發的程式 可以讓你直接藉由拖拉的方式 產生xml&lt;br /&gt;&lt;br /&gt;首先先下載 &lt;a href="http://code.google.com/p/droiddraw/"&gt;http://code.google.com/p/droiddraw/&lt;/a&gt;下載之後解壓縮  執行exe檔&lt;br /&gt;以下是執行畫面 你可以從右手邊 拖拉元件 到左邊 呈現在手機上的畫面&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRLtRYQut2Y/TABosyIn6NI/AAAAAAAAC3A/CNv8dKHdvJo/s1600/droiddraw.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 193px;" src="http://1.bp.blogspot.com/_jRLtRYQut2Y/TABosyIn6NI/AAAAAAAAC3A/CNv8dKHdvJo/s320/droiddraw.png" alt="" id="BLOGGER_PHOTO_ID_5476492265463998674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;拖拉完畢之後 按下方Generate 將產生的xml 複製到 你的專案下的res-&gt;layout-&gt;main.xml下 就可以完成了 雖然很方便&lt;br /&gt;不過還是建議 入門時 還是先學會用手輸入的方式 順便學習一下xml 這樣觀念比較清楚&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-1001668195382577317?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/1001668195382577317/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/05/android-droiddraw.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1001668195382577317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1001668195382577317'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/05/android-droiddraw.html' title='Android開發-droiddraw'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jRLtRYQut2Y/TABosyIn6NI/AAAAAAAAC3A/CNv8dKHdvJo/s72-c/droiddraw.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-4808905464743222035</id><published>2010-05-29T07:54:00.004+08:00</published><updated>2010-05-29T09:14:34.494+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發'/><title type='text'>Android開發-環境建置</title><content type='html'>作業系統:win7 x32&lt;br /&gt;&lt;br /&gt;首先先下載&lt;br /&gt;1.&lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;JDK&lt;/a&gt;&lt;br /&gt;2.&lt;a href="http://www.eclipse.org/downloads/"&gt;Eclipse&lt;/a&gt; (我是下載                  &lt;a class="packageTitle" href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR2/eclipse-java-galileo-SR2-win32.zip"&gt;Eclipse  IDE for Java Developer&lt;/a&gt;)&lt;br /&gt;接著將Eclipse解縮到C槽 (看你的喜好)&lt;br /&gt;3.&lt;a href="http://developer.android.com/sdk/index.html"&gt;android sdk&lt;/a&gt; (android 2.2)&lt;br /&gt;同樣的解壓縮到C槽(看你的喜好)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;．設定環境變數&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;開啟控制台-&gt;系統-&gt;左邊進階系統設定-&gt;進階-&gt;環境變數&lt;br /&gt;找到path變數 按編輯 打入以下C:\Program Files\Java\jre6\bin;C:\android_sdk\tools;&lt;br /&gt;不過目前似乎可以不需要設定以上環境變數 如果有問題 再自行設定看看&lt;span style="font-size:100%;"&gt;&lt;a name="3._安裝_ADT_擴充套件"&gt;&lt;br /&gt;&lt;br /&gt;．安裝 ADT 擴充套件&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;打開Eclipse 點上方help-&gt;install new software&lt;br /&gt;按add 在Location這個地方 輸入以下網址:&lt;br /&gt;&lt;a name="Eclipse_3.5_版"&gt;&lt;/a&gt;&lt;a href="http://dl-ssl.google.com/android/eclipse/site.xml" rel="nofollow"&gt;http://dl-ssl.google.com/android/eclipse/site.xml&lt;/a&gt;&lt;br /&gt;Name的欄位 我是填寫android&lt;br /&gt;接著會花一些時間 找尋適合的版本&lt;br /&gt;等下方出現Developer Tools 就全選 按next 最後安裝完成之後 按finish&lt;br /&gt;安裝完成之後 他會要你重新啟動Eclipse&lt;br /&gt;&lt;br /&gt;．設定Android SDK&lt;br /&gt;打開Eclipse 選上方window-&gt;preference-&gt;左邊Android&lt;br /&gt;接著在SDK Loaction的地方 選擇你剛剛解壓縮android sdk的路徑 因為我解壓縮到C曹 因此我設定成C:\android_sdk 選好之後 你會發現下方怎麼都沒東西!?正常來說應該會有東西 沒關係別擔心 接著進行以下步驟&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;．更新package&lt;/span&gt;&lt;br /&gt;打開Eclipse 選上方window-&gt;Android SDK and AVD manager -&gt;左手邊Installed Packages-&gt;update all-&gt;接著會列出很多需要安裝的package-&gt;選Accept all-&gt;按install&lt;br /&gt;這邊的安裝會花一段時間 我的網路是偽光纖 都需要下載大約半小時以上 所以就耐心等待他安裝完成吧&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;．設定 Android 虛擬機器&lt;/span&gt;&lt;br /&gt;打開Eclipse-&gt;選上方windows-&gt;Android SDK and AVD manager-&gt;左手邊virtual device-&gt;點右方new&lt;br /&gt;接著會跳出一個選單 需要填入一些模擬器的資訊&lt;br /&gt;&lt;br /&gt;name填入android(這邊看你的喜好)&lt;br /&gt;Target 這邊我選android 2.2 (android模擬器相當強大 可以模擬很多硬體 像是要寫google map的相關應用 這邊要選Google APIS)&lt;br /&gt;SD Card&lt;br /&gt;Size 的地方 我填入1024&lt;br /&gt;Skin的地方 我選built-in&lt;br /&gt;Hardware的地方 就讓他保持原預設值&lt;br /&gt;&lt;br /&gt;接著按Creat AVD&lt;br /&gt;&lt;br /&gt;接著恭喜你 以上步驟 就可以將環境設定好了 可以開始開發android程式了 第一次跑模擬器的時候 需要花一些時間 當然cpu不能太爛 不然真的會花很多時間 筆者電腦&lt;br /&gt;AMD AM2 4800+ 也跑了大概5分鐘左右(印象中)&lt;br /&gt;&lt;br /&gt;以下提供一開始入門學習android的網站&lt;br /&gt;1.&lt;a href="http://code.google.com/p/androidbmi/wiki/DiveIntoAndroid"&gt;深入淺出 Android -- Google 手持設備應用程式設計入門&lt;/a&gt;&lt;br /&gt;2.&lt;a href="http://developer.android.com/guide/index.html"&gt;Android 官方教學&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-4808905464743222035?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/4808905464743222035/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/05/android.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4808905464743222035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4808905464743222035'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/05/android.html' title='Android開發-環境建置'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-1402175389075752762</id><published>2010-05-18T01:50:00.003+08:00</published><updated>2010-05-18T02:20:30.860+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-UIImageView</title><content type='html'>在iPhone程式中，每個程式裡面會有唯一一個UIWindow這個View，剩下的所有的View都會包含在UIWindow中，因此每個View會產生階層的形式，一層蓋著一層&lt;br /&gt;&lt;br /&gt;此次的程式可以學到:&lt;br /&gt;1.如何用寫code的方式 將圖片用全螢幕的形式呈現在view上&lt;br /&gt;2.如何將小圖片加入目前的view上&lt;br /&gt;3.如何清除上一個View&lt;br /&gt;&lt;br /&gt;test14ViewController.h&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#import &amp;lt;UIKit/UIKit.h&amp;gt;&lt;br /&gt;&lt;br /&gt;@interface test14ViewController : UIViewController {&lt;br /&gt; UIImageView *myImage; &lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//讓myImage 可以使用dot syntax&lt;/span&gt;&lt;br /&gt;@property(nonatomic,retain)UIImageView *myImage;&lt;br /&gt;-(IBAction)addimage:(id)sender;&lt;br /&gt;-(IBAction)reset:(id)sender;&lt;br /&gt;-(void)image;&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;test14ViewController.m&lt;br /&gt;&lt;br /&gt;#import "test14ViewController.h"&lt;br /&gt;&lt;br /&gt;@implementation test14ViewController&lt;br /&gt;&lt;br /&gt;@synthesize myImage;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- (void)viewDidLoad {&lt;br /&gt;   &lt;br /&gt;    [super viewDidLoad];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//讓圖片可以全螢幕&lt;/span&gt;&lt;br /&gt;    UIImageView *myView=[[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//指定圖片檔名&lt;/span&gt;&lt;br /&gt;    [myView setImage:[UIImage imageNamed:@"jokeman1.png"]];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//設定圖片的透明度 值為0.0~1.0(圖片隱藏～完全不隱藏)&lt;/span&gt;&lt;br /&gt;    [myView setAlpha:0.2];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將myView加入到目前的view 蓋上去&lt;/span&gt;&lt;br /&gt;    [self.view addSubview:myView];&lt;br /&gt;   &lt;br /&gt;    }&lt;br /&gt;-(IBAction)addimage:(id)sender&lt;br /&gt;{&lt;br /&gt;    [self image];   &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(IBAction)reset:(id)sender&lt;br /&gt;{&lt;br /&gt;    //[myImage setHidden:YES];&lt;span style="color: rgb(0, 153, 0);"&gt;(將myImage隱藏)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將myImage移除&lt;/span&gt;&lt;br /&gt;    [myImage removeFromSuperview];&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(void)image&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//前兩個座標指定圖片的顯示區域&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;後兩個設定圖片長寬&lt;/span&gt;&lt;br /&gt;    CGRect myImageRect = CGRectMake(130.0f, 150.0f, 64.0f, 71.0f);&lt;br /&gt;    myImage = [[UIImageView alloc] initWithFrame:myImageRect];&lt;br /&gt;    [myImage setImage:[UIImage imageNamed:@"butterfly.png"]];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//加入到目前的view&lt;/span&gt;&lt;br /&gt;    [self.view addSubview:myImage];&lt;br /&gt;    [myImage release];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- (void)didReceiveMemoryWarning {&lt;br /&gt;    // Releases the view if it doesn't have a superview.&lt;br /&gt;    [super didReceiveMemoryWarning];&lt;br /&gt;   &lt;br /&gt;    // Release any cached data, images, etc that aren't in use.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- (void)dealloc {&lt;br /&gt;    [super dealloc];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-1402175389075752762?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/1402175389075752762/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-uiimageview.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1402175389075752762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1402175389075752762'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-uiimageview.html' title='iphone開發-UIImageView'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5023255475354338951</id><published>2010-05-16T17:10:00.005+08:00</published><updated>2010-05-17T00:56:57.619+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-Peer-to-Peer Connectivity used by Bluetooth</title><content type='html'>最近寫過wifi 也有看到怎麼用藍芽來建立雙方連線 順便記錄一下&lt;br /&gt;&lt;br /&gt;GamekitTestViewController.h&lt;br /&gt;&lt;br /&gt;#import  &amp;lt;UIKit/UIKit.h&amp;gt;         &lt;br /&gt;#import &amp;lt;GameKit/GameKit.h&amp;gt;&lt;br /&gt;&lt;br /&gt;@interface GameKitTestViewController :&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//用GKPeerPickerControllerDelegate 協定&lt;/span&gt;&lt;br /&gt;UIViewController &amp;lt;GKPeerPickerControllerDelegate,GKSessionDelegate&amp;gt;&lt;br /&gt;{&lt;br /&gt;GKPeerPickerController *mPicker;&lt;br /&gt;GKSession *mSession;&lt;br /&gt;IBOutlet UITextField *mTextField;&lt;br /&gt;IBOutlet UITextView *mTextView;&lt;br /&gt;NSMutableArray *mPeers;&lt;br /&gt;}&lt;br /&gt;-(IBAction) connectClicked:(id)sender;&lt;br /&gt;-(IBAction) sendData:(id)sender;&lt;br /&gt;@property (retain) GKSession *mSession;&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;GameKitTestViewController.m&lt;br /&gt;&lt;br /&gt;#import "  GameKitTestViewController.h  "&lt;br /&gt;&lt;br /&gt;@implementation GameKitTestViewController&lt;br /&gt;&lt;br /&gt;@synthesize mSession;&lt;br /&gt;&lt;br /&gt;- (void)viewDidLoad {&lt;br /&gt;[super viewDidLoad];&lt;br /&gt;&lt;br /&gt;mPicker=[[GKPeerPickerController alloc] init];&lt;br /&gt;mPicker.delegate=self;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//使用iphone內建介面 讓user選擇要wifi or bluetooh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//但這邊須注意一點是 iphone 藍芽的部分 會自動幫你建立雙方的連線 但是透過&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;wifi的話 就要自己寫 可以參考我前幾篇&lt;/span&gt;&lt;br /&gt;mPicker.connectionTypesMask = GKPeerPickerConnectionTypeNearby | GKPeerPickerConnectionTypeOnline;&lt;br /&gt;mPeers=[[NSMutableArray alloc] init];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//顯示週遭有哪些peer&lt;/span&gt;&lt;br /&gt;[mPicker show];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當user選擇哪種連線時 就會呼叫下列method&lt;/span&gt;&lt;br /&gt;- (void)peerPickerController:(GKPeerPickerController *)picker didSelectConnectionType:(GKPeerPickerConnectionType)type{&lt;br /&gt;if (type == GKPeerPickerConnectionTypeOnline) {&lt;br /&gt;   picker.delegate = nil;&lt;br /&gt;   [picker dismiss];&lt;br /&gt;   [picker autorelease];&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當peer picker 需要session 就會呼叫此method&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;也就是準備session讓其他peer可以連進來&lt;/span&gt;&lt;br /&gt;- (GKSession *)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type{&lt;br /&gt;&lt;br /&gt;NSString *txt=mTextField.text;&lt;br /&gt;GKSession* session = [[GKSession alloc] initWithSessionID:@"test" displayName:txt sessionMode:GKSessionModePeer];&lt;br /&gt;[session autorelease];&lt;br /&gt;return session;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當連線建立完成時 會呼叫此method&lt;/span&gt;&lt;br /&gt;- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{&lt;br /&gt;&lt;br /&gt;NSLog(@"Connected from %@",peerID);&lt;br /&gt;&lt;br /&gt;self.mSession = session;&lt;br /&gt;session.delegate = self;&lt;br /&gt;[session setDataReceiveHandler: self withContext:nil];&lt;br /&gt;picker.delegate = nil;&lt;br /&gt;[picker dismiss];&lt;br /&gt;[picker autorelease];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//這邊如同wifi 就不再敘述了&lt;/span&gt;&lt;br /&gt;- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state{&lt;br /&gt;&lt;br /&gt;switch (state)&lt;br /&gt;{&lt;br /&gt;   case GKPeerStateConnected:&lt;br /&gt;   {&lt;br /&gt;       NSString *str=[NSString stringWithFormat:@"%@\n%@%@",mTextView.text,@"Connected from pier ",peerID];&lt;br /&gt;       mTextView.text= str;&lt;br /&gt;       NSLog(str);&lt;br /&gt;       [mPeers addObject:peerID];&lt;br /&gt;       break;&lt;br /&gt;   }&lt;br /&gt;   case GKPeerStateDisconnected:&lt;br /&gt;   {&lt;br /&gt;       [mPeers removeObject:peerID];&lt;br /&gt; &lt;br /&gt;       NSString *str=[NSString stringWithFormat:@"%@\n%@%@",mTextView.text,@"DisConnected from pier ",peerID];&lt;br /&gt;       mTextView.text= str;&lt;br /&gt;       NSLog(str);&lt;br /&gt;       break;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5023255475354338951?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5023255475354338951/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-peer-to-peer-connectivity-used.html#comment-form' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5023255475354338951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5023255475354338951'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-peer-to-peer-connectivity-used.html' title='iphone開發-Peer-to-Peer Connectivity used by Bluetooth'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-6318642563940190222</id><published>2010-05-15T21:11:00.003+08:00</published><updated>2010-05-15T21:26:32.880+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-從一個class呼叫另一個class的method</title><content type='html'>假設有ClassA ClassB 我要在ClassB中 呼叫ClassA的method&lt;br /&gt;可以用以下程式的寫法&lt;br /&gt;&lt;br /&gt;ClassA.h&lt;br /&gt;&lt;br /&gt;@interface ClassA:UIViewController{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;-(int)calculate;&lt;br /&gt;&lt;br /&gt;ClassA.m&lt;br /&gt;&lt;br /&gt;@implementation  ClassA&lt;br /&gt;&lt;br /&gt;-(int)calculate&lt;br /&gt;{&lt;br /&gt;int x=5;&lt;br /&gt;return x;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;ClassB.h&lt;br /&gt;&lt;br /&gt;@interface ClassB:UIViewController{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;-(IBAction)test:(id)sender;&lt;br /&gt;&lt;br /&gt;ClassB.m&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//要import ClassA.h&lt;/span&gt;&lt;br /&gt;#import " ClassA.h "&lt;br /&gt;#import " ClassB.h "&lt;br /&gt;&lt;br /&gt;@implementation  ClassB&lt;br /&gt;-(IBAction)test:(id)sender&lt;br /&gt;{&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;int y;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//先alloc 再init 相當於Java中的new&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生ClassA 的instance&lt;/span&gt;&lt;br /&gt;ClassA *integer=[[ClassA alloc]init];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//這樣y值就會得到5&lt;/span&gt;&lt;br /&gt;y=[integer calculate];&lt;br /&gt;[integer release];&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-6318642563940190222?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/6318642563940190222/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-classclassmethod.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6318642563940190222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6318642563940190222'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-classclassmethod.html' title='iphone開發-從一個class呼叫另一個class的method'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2690413553570555739</id><published>2010-05-15T20:38:00.004+08:00</published><updated>2010-05-15T21:10:07.424+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-透過按鈕切換view</title><content type='html'>這次我將程式分開成兩個class來寫 順便練習怎麼各自呼叫對方的method 另外我這次設計了兩個xib 當一開始classA的xib載入後 我按下按鈕之後 程式能切換到class B的xib&lt;br /&gt;&lt;br /&gt;test12ViewController.h&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;// forward declaration&lt;/span&gt;&lt;br /&gt;@class Testcontroller;&lt;br /&gt;&lt;br /&gt;@interface test12ViewController : UIViewController {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//另外一個class&lt;/span&gt;&lt;br /&gt;   Testcontroller *testcontroller;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//以下這樣寫 就可以使用dot syntax&lt;/span&gt;&lt;br /&gt;@property(nonatomic,retain)Testcontroller *testcontroller;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//用來切換不同的view&lt;/span&gt;&lt;br /&gt;-(IBAction)change:(id)sender;&lt;br /&gt;-(int)display;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;test12ViewController.m&lt;br /&gt;&lt;br /&gt;#import "  test12ViewController.h  "&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//用Testcontroller產生一個instance object&lt;/span&gt;&lt;br /&gt;#import  "  Testcontroller.h        "&lt;br /&gt;&lt;br /&gt;@implementation test12ViewController&lt;br /&gt;@synthesize testcontroller;&lt;br /&gt;&lt;br /&gt;-(IBAction)change:(id)sender&lt;br /&gt;{&lt;br /&gt;   if (self.testcontroller==nil) {&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;//載入Testcontroller的xib&lt;/span&gt;&lt;br /&gt;   Testcontroller *testcontrollertemp=[[Testcontroller alloc]initWithNibName:@"Testcontroller" bundle:nil];&lt;br /&gt;       self.testcontroller=testcontrollertemp;&lt;br /&gt;     &lt;br /&gt;       [testcontrollertemp release];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//加到原本的view上面&lt;/span&gt;&lt;br /&gt;        [self.view addSubview:testcontroller.view];       &lt;br /&gt; &lt;br /&gt;   }&lt;br /&gt;   }&lt;br /&gt;-(int)display&lt;br /&gt;{&lt;br /&gt;   int x=5;&lt;br /&gt;   return x;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void)didReceiveMemoryWarning {&lt;br /&gt;   // Releases the view if it doesn't have a superview.&lt;br /&gt;   [super didReceiveMemoryWarning];&lt;br /&gt; &lt;br /&gt;   // Release any cached data, images, etc that aren't in use.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void)viewDidUnload {&lt;br /&gt;   // Release any retained subviews of the main view.&lt;br /&gt;   // e.g. self.myOutlet = nil;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- (void)dealloc {&lt;br /&gt;   [testcontroller release];&lt;br /&gt;   [super dealloc];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;testcontroller.m&lt;br /&gt;&lt;br /&gt;#import "        Testcontroller.h        "&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//必須記得import以下 因為要產生test12ViewController的instance&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//若沒有加入這段 會出現 "XXX may not respond to class"&lt;/span&gt;&lt;br /&gt;#import "      test12ViewController.h     "&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@implementation Testcontroller&lt;br /&gt;@synthesize display;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- (void)didReceiveMemoryWarning {&lt;br /&gt;   // Releases the view if it doesn't have a superview.&lt;br /&gt;   [super didReceiveMemoryWarning];&lt;br /&gt; &lt;br /&gt;   // Release any cached data, images, etc that aren't in use.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void)viewDidUnload {&lt;br /&gt;   // Release any retained subviews of the main view.&lt;br /&gt;   // e.g. self.myOutlet = nil;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(IBAction)test:(id)sender&lt;br /&gt;{ &lt;br /&gt;   int y;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生test12ViewController的instance&lt;/span&gt;&lt;br /&gt;   test12ViewController *integer=[[test12ViewController alloc]init];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//透過這個instance 去呼叫test12ViewController的method&lt;/span&gt;&lt;br /&gt;   y=[integer display];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將int轉換成字串&lt;/span&gt;&lt;br /&gt;   NSString *dispalytext=[[NSString alloc]initWithFormat:@"%d",y];&lt;br /&gt;   display.text=dispalytext;&lt;br /&gt;   [integer release];&lt;br /&gt;   [dispalytext release];&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;- (void)dealloc {&lt;br /&gt;   [super dealloc];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2690413553570555739?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2690413553570555739/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-view.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2690413553570555739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2690413553570555739'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-view.html' title='iphone開發-透過按鈕切換view'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5516068411252697854</id><published>2010-05-06T00:31:00.010+08:00</published><updated>2010-05-17T01:01:33.069+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-Peer-to-Peer Connectivity used by Wifi</title><content type='html'>今天幫Lab的同學寫了一個程式 透過wifi 讓兩台iphone連線 然後讓其中一台播放音樂時 另外一台也能自動放出音樂&lt;br /&gt;而這次程式主要是用到Gamekit API 還有Avaudioplayer&lt;br /&gt;&lt;br /&gt;" test10ViewController.h"&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//用Gamekit api前 要先import以下這行&lt;/span&gt;&lt;br /&gt;#import  &amp;lt;GameKit/GameKit.h&amp;gt;&lt;br /&gt;#import  &amp;lt;UIKit/UIKit.h&amp;gt;&lt;br /&gt;&lt;gamekit h=""&gt;&lt;avfoundation h=""&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//用GKSessionDelegate協定&lt;/span&gt;&lt;br /&gt;@interface test10ViewController : UIViewController &amp;lt;GKSessionDelegate&amp;gt;&lt;br /&gt;&lt;gksessiondelegate&gt;{&lt;br /&gt;UILabel *display;&lt;br /&gt;NSString *sessionID;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生GKsession 物件&lt;/span&gt;&lt;br /&gt;GKSession *myGKSession;&lt;br /&gt;NSString *peerList;&lt;br /&gt;AVAudioPlayer *audioPlayer;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//存放物件的陣列&lt;/span&gt;&lt;br /&gt;NSMutableArray *mPeers;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;@property(nonatomic,retain)IBOutlet UILabel *display;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-(IBAction)play:(id)sender;&lt;br /&gt;-(IBAction)stop:(id)sender;&lt;br /&gt;-(void) setupSession;&lt;br /&gt;- (void) destroySession;&lt;br /&gt;-(void) disconnectCurrentCall;&lt;br /&gt;-(void) sendData;&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;" test10ViewController.m"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//在這邊先定義sessionID 兩台手機靠這個來辨識對方 所以雙方都要一樣&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;有點像在Java寫的UUID&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;#define sessionID @"connecttest"&lt;br /&gt;&lt;br /&gt;- (void)viewDidLoad {&lt;br /&gt;[super viewDidLoad];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//呼叫setupSession method&lt;/span&gt;&lt;br /&gt;[self setupSession];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//指定音樂檔案的路徑&lt;/span&gt;&lt;br /&gt;NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audio.mp3", [[NSBundle mainBundle] resourcePath]]];&lt;br /&gt;NSError *error;&lt;br /&gt;audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&amp;amp;error];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//初始化陣列&lt;/span&gt;&lt;br /&gt;mPeers=[[NSMutableArray alloc] init];&lt;br /&gt;}&lt;br /&gt;-(void)setupSession&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//GKSessionModerPeer 表示此程式可當Server or Client 詳細的說明 請看Library&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//初始化Session&lt;/span&gt;&lt;br /&gt;myGKSession = [[GKSession alloc] initWithSessionID:sessionID displayName:nil sessionMode:GKSessionModePeer];&lt;br /&gt;&lt;br /&gt;myGKSession.delegate = self;&lt;br /&gt;&lt;br /&gt;[myGKSession setDataReceiveHandler:self withContext:nil];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; //設定為YES 將服務發佈出去&lt;/span&gt;&lt;br /&gt;myGKSession.available = YES;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;-(IBAction)play:(id)sender&lt;br /&gt;{&lt;br /&gt;audioPlayer.currentTime = 0;&lt;br /&gt;[audioPlayer play];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//按下播放按鈕之後 將字串傳出去&lt;/span&gt;&lt;br /&gt;[self sendData];&lt;br /&gt;}&lt;br /&gt;-(IBAction)stop:(id)sender&lt;br /&gt;{&lt;br /&gt;[audioPlayer stop];&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//此處可將字串傳送給對方&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;我這邊是用來讓另外一台手機判斷 何時放音樂之用&lt;/span&gt;&lt;br /&gt;-(void) sendData&lt;br /&gt;{&lt;br /&gt;NSString *str=@"test";&lt;br /&gt;[myGKSession sendData:[str dataUsingEncoding: NSASCIIStringEncoding] toPeers:mPeers withDataMode:GKSendDataReliable error:nil];&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當收到data時 呼叫此method&lt;/span&gt;&lt;br /&gt;-(void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context&lt;br /&gt;{&lt;br /&gt;NSString *str4 = @"test";&lt;br /&gt;NSString* aStr;&lt;br /&gt;aStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];&lt;br /&gt;/&lt;span style="color: rgb(0, 153, 0);"&gt;/判斷字串是否相同&lt;/span&gt;&lt;br /&gt;if([str4 isEqualToString:aStr])&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//相同就放音樂&lt;/span&gt;&lt;br /&gt;[audioPlayer play];&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;br /&gt;- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state&lt;br /&gt;{&lt;br /&gt;switch (state) {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//發現服務時 會跳到此case&lt;/span&gt;&lt;br /&gt;case GKPeerStateAvailable:&lt;br /&gt;  peerList=peerID;&lt;br /&gt;  display.text=[myGKSession displayNameForPeer:peerID];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; //將peerID加到陣列中 用來傳送資料 要傳給哪個peer的紀錄之用&lt;/span&gt;&lt;br /&gt;  [mPeers addObject:peerID];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; //連線到提供服務的peer&lt;/span&gt;&lt;br /&gt;  [myGKSession connectToPeer:peerID withTimeout:10.0];&lt;br /&gt;  break;&lt;br /&gt;&lt;br /&gt;case GKPeerStateUnavailable:&lt;br /&gt;  peerList=nil;&lt;br /&gt;  display.text=@"No Service";&lt;br /&gt;  break;&lt;br /&gt;case GKPeerStateDisconnected:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  peerList=nil;&lt;br /&gt;&lt;br /&gt;  break;&lt;br /&gt;&lt;br /&gt;case GKPeerStateConnecting:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  break;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//連線之後 就會跳到此case&lt;/span&gt;&lt;br /&gt;case GKPeerStateConnected:&lt;br /&gt;  display.text=@"Connect Sucessfully";&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//切換到view2&lt;/span&gt;&lt;br /&gt;  [[NSBundle mainBundle]loadNibNamed:@"view2" owner:self options:NULL];  &lt;br /&gt;                    break;&lt;br /&gt;default:&lt;br /&gt;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當有client請求連線 就會呼叫此method&lt;/span&gt;&lt;br /&gt;- (void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//接受此client的連線要求&lt;/span&gt;&lt;br /&gt;[myGKSession acceptConnectionFromPeer:peerID error:nil];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;PS:另外要記得加入Gamekit framework&lt;br /&gt;程式以上就大致完成了&lt;br /&gt;&lt;br /&gt;&lt;a href="http://goo.gl/DVBE"&gt;Game Kit programming Guide&lt;/a&gt;&lt;/gksessiondelegate&gt;&lt;/avfoundation&gt;&lt;/gamekit&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5516068411252697854?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5516068411252697854/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-peer-to-peer-connectivity.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5516068411252697854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5516068411252697854'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/05/iphone-peer-to-peer-connectivity.html' title='iphone開發-Peer-to-Peer Connectivity used by Wifi'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8319899876953651693</id><published>2010-04-27T21:31:00.006+08:00</published><updated>2010-04-27T22:02:41.864+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-UITouch</title><content type='html'>今天老師要我寫一個觸控螢幕 畫面就會顯示你觸控位置的座標的小程式&lt;br /&gt;查了一下 剛好UITouch有提供locationInView 這個method 可以達到這個功能&lt;br /&gt;只要在程式裡面加入此method&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當手觸摸螢幕時 就會自動跑到以下程式&lt;/span&gt;&lt;br /&gt;- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//取得觸摸點&lt;/span&gt;&lt;br /&gt;UITouch *touch = [touches anyObject];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;// 取得觸摸點的座標&lt;/span&gt;&lt;br /&gt;CGPoint pt = [touch locationInView:self.view];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//顯示(x,y)&lt;/span&gt;&lt;br /&gt;NSString *locationMessage = [[NSString alloc] initWithFormat:@"座標: x=%.0f, y=%.0f", pt.x, pt.y];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//顯示在Label上&lt;/span&gt;&lt;br /&gt;display.text=locationMessage;&lt;br /&gt;[locationMessage release];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Library:&lt;br /&gt;&lt;a href="http://goo.gl/xPvr"&gt;UITouch&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8319899876953651693?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8319899876953651693/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-uitouch.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8319899876953651693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8319899876953651693'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-uitouch.html' title='iphone開發-UITouch'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2059343047220788904</id><published>2010-04-25T21:14:00.008+08:00</published><updated>2010-05-17T01:04:10.703+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-G-Sensor 應用</title><content type='html'>最近花了一些時間寫一個 甩骰子遊戲 跟電腦比大小&lt;br /&gt;透過此程式 會學到:&lt;br /&gt;1.How to use UIImageView&lt;br /&gt;2.圖片切換 形成的動畫&lt;br /&gt;3.How to use Accelerometer&lt;br /&gt;4.同個class裡 呼叫其他method&lt;br /&gt;&lt;br /&gt;"test6ViewController.h"&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//使用UIAccelerometerDelegate Protocol &lt;/span&gt;&lt;br /&gt;@interface test6ViewController : UIViewController &amp;lt;UIAccelerometerDelegate&amp;gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;UILabel *label;&lt;br /&gt;UILabel *display;&lt;br /&gt;UILabel *display2;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;"test6ViewController.m"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//剛載入view時 &lt;/span&gt;&lt;br /&gt;- (void)viewDidLoad {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//取得加速計object給系統&lt;/span&gt;&lt;br /&gt;UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//讓UIViewController取得代理&lt;/span&gt;&lt;br /&gt;accelerometer.delegate = self;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//每1/60秒更新加速計的data&lt;/span&gt;&lt;br /&gt;accelerometer.updateInterval =  1.0f/60.0f;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//呼叫同class's play method&lt;/span&gt;&lt;br /&gt;[self play];&lt;br /&gt;[super viewDidLoad];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//shakeCount 計算搖晃次數&lt;/span&gt;&lt;br /&gt;static NSInteger shakeCount=0;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生NSDate object&lt;/span&gt;&lt;br /&gt;static NSDate *shakeStart;&lt;br /&gt;&lt;br /&gt;NSDate *now=[[NSDate alloc] init];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//加兩秒到當前的時間&lt;/span&gt;&lt;br /&gt;NSDate *checkDate=[[NSDate alloc] initWithTimeInterval:2.0f sinceDate:shakeStart];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//如果now大於checkdate 也就是超過兩秒&lt;/span&gt;&lt;br /&gt;if ([now compare:checkDate]==NSOrderedDescending||shakeStart==nil){&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//重新計算搖晃次數&lt;/span&gt;&lt;br /&gt; shakeCount=0;&lt;br /&gt; [shakeStart release];&lt;br /&gt; shakeStart=[[NSDate alloc] init];                        &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[now release];&lt;br /&gt;[checkDate release];&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//三軸搖晃的G力超過２就將搖晃次數加1&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;ps:fabsf:絕對值&lt;/span&gt;&lt;br /&gt;if (fabsf(acceleration.x)&gt;2.0 || fabsf(acceleration.y)&gt;2.0|| fabsf(acceleration.z)&gt;2.0){&lt;br /&gt; shakeCount++;&lt;br /&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;//如果兩秒內搖晃次數大於4&lt;/span&gt;&lt;br /&gt;         if (shakeCount&gt;4){&lt;br /&gt;     shakeCount=0;&lt;br /&gt;     [shakeStart release];&lt;br /&gt;     shakeStart=[[NSDate alloc] init];&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;//呼叫compare method&lt;/span&gt;&lt;br /&gt;             [self compare];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;-(int)getRandomNumber:(int)from to:(int)to {&lt;br /&gt;return (int)from + arc4random() % (to-from+1);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-(void)compare&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生1~6隨機變數&lt;/span&gt;&lt;br /&gt;int randomNumber = [self getRandomNumber:1 to:6];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將圖片放到(x,y,w,h)=(130,150)的位置 原點為螢幕上左上角 w,h 為圖片的寬和高&lt;/span&gt;&lt;br /&gt;CGRect myImageRect = CGRectMake(130.0f, 150.0f, 64.0f, 71.0f);&lt;br /&gt;UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];&lt;br /&gt;switch (randomNumber) {&lt;br /&gt; case 1:&lt;br /&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;//將one.png設定為 要顯示的圖片&lt;/span&gt;&lt;br /&gt;     [myImage setImage:[UIImage imageNamed:@"one.png"]];&lt;br /&gt;     break;&lt;br /&gt; case 2:&lt;br /&gt;     [myImage setImage:[UIImage imageNamed:@"two.png"]];&lt;br /&gt;     break;&lt;br /&gt; case 3:&lt;br /&gt;     [myImage setImage:[UIImage imageNamed:@"three.png"]];&lt;br /&gt;     break;&lt;br /&gt; case 4:&lt;br /&gt;     [myImage setImage:[UIImage imageNamed:@"four.png"]];&lt;br /&gt;     break;&lt;br /&gt; case 5:&lt;br /&gt;     [myImage setImage:[UIImage imageNamed:@"five.png"]];&lt;br /&gt;     break;&lt;br /&gt; case 6:&lt;br /&gt;     [myImage setImage:[UIImage imageNamed:@"six.png"]];&lt;br /&gt;     break;&lt;br /&gt; default:&lt;br /&gt;     break;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//處理電腦的骰子點數&lt;/span&gt;&lt;br /&gt;int randomNumber2=[self getRandomNumber:1 to:6];&lt;br /&gt;NSString* Text = [[NSString alloc] initWithFormat:@"%d", randomNumber2];&lt;br /&gt;NSString* Text1=@"電腦骰出";&lt;br /&gt;NSString* ConText = [NSString stringWithFormat:@"%@%@", Text1,Text];&lt;br /&gt;display2.text=ConText;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//你骰出的點數比電腦大 就勝利&lt;/span&gt;&lt;br /&gt;if (randomNumber&gt;randomNumber2) {&lt;br /&gt; display.text=@"You Win!";&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//平手&lt;/span&gt;&lt;br /&gt;else if(randomNumber==randomNumber2)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt; display.text=@"drawn game";&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//其餘就是你輸&lt;/span&gt;&lt;br /&gt;else {&lt;br /&gt; display.text=@"Sorry,You Lose!";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;myImage.opaque = YES;&lt;br /&gt;[self.view addSubview:myImage];&lt;br /&gt;[myImage release];&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//開始搖晃前 產生骰子動畫&lt;/span&gt;&lt;br /&gt;-(void)play&lt;br /&gt;{&lt;br /&gt;CGRect myImageRect = CGRectMake(130.0f, 150.0f, 64.0f, 71.0f);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將6個點數的骰子圖片 分別放入array&lt;/span&gt;&lt;br /&gt;UIImageView *fishAni = [[UIImageView alloc] initWithFrame:myImageRect];&lt;br /&gt;fishAni.animationImages=[NSArray arrayWithObjects:&lt;br /&gt;[UIImage imageNamed:@"one.png"],[UIImage imageNamed:@"two.png"],[UIImage imageNamed:@"three.png"],[UIImage imageNamed:@"four.png"],[UIImage imageNamed:@"five.png"],[UIImage imageNamed:@"six.png"],nil ];&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//設定動畫播放時間&lt;/span&gt;&lt;br /&gt;fishAni.animationDuration=6.0;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//設定重複播放次數,0 為不斷重複  &lt;/span&gt;&lt;br /&gt;fishAni.animationRepeatCount=0;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;//開始撥放動畫&lt;/span&gt;&lt;br /&gt;[fishAni startAnimating];&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將ImageView 加入到目前view的subview&lt;/span&gt;&lt;br /&gt;[self.view addSubview:fishAni];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;Library:&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:微軟正黑體;font-size:medium;"  &gt;&lt;span class="Apple-style-span" style=";font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:18px;"  &gt;&lt;br /&gt;&lt;a href="http://goo.gl/eLxo"&gt;UIAccelerometer&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://goo.gl/4L2M"&gt;NSDate&lt;/a&gt;&lt;br /&gt;&lt;uiaccelerometerdelegate&gt;&lt;a href="http://goo.gl/EgSZ"&gt;UIImageView&lt;/a&gt;&lt;br /&gt;&lt;/uiaccelerometerdelegate&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2059343047220788904?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2059343047220788904/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-g-sensor.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2059343047220788904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2059343047220788904'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-g-sensor.html' title='iphone開發-G-Sensor 應用'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-7069416988371067277</id><published>2010-04-19T22:48:00.002+08:00</published><updated>2010-04-19T22:56:24.284+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-字串連接</title><content type='html'>在java裡面我們常常用到"+"來連接兩個字串 但在objective c似乎不是這樣用&lt;br /&gt;以下用一個例子解釋&lt;br /&gt;float weight=benefit2/7700;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將float轉成string&lt;/span&gt;&lt;br /&gt;    NSString* Text = [[NSString alloc] initWithFormat:@"%f", weight];&lt;br /&gt;    NSString* Text1=@"你會瘦";&lt;br /&gt;    NSString* Text2=@"kg";&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將三個字串連結在一起&lt;/span&gt;&lt;br /&gt;    NSString *ConText = [NSString stringWithFormat:@"%@%@%@", Text1,Text, Text2];&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-7069416988371067277?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/7069416988371067277/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone_19.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7069416988371067277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7069416988371067277'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone_19.html' title='iphone開發-字串連接'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2079558922692768283</id><published>2010-04-19T22:27:00.002+08:00</published><updated>2010-04-19T22:47:46.392+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-UISlider</title><content type='html'>這幾天寫了一個可以計算你一天吃多少熱量之後 一個月後會瘦幾公斤 或變胖&lt;br /&gt;有用到UISlider 剛好拿來記錄一下&lt;br /&gt;"MyViewController.h"&lt;br /&gt;&lt;br /&gt;@interface MyViewController : UIViewController {&lt;br /&gt;    UITextField *textfield;&lt;br /&gt;    UITextField *textfield2;&lt;br /&gt;    UITextField *textfield3;&lt;br /&gt;    UITextField *textfield4;&lt;br /&gt;    UILabel *display;&lt;br /&gt;    UILabel *display2;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生一個UISlider object&lt;/span&gt;&lt;br /&gt;    UISlider *slider;&lt;br /&gt;    NSString *string;&lt;br /&gt;    NSString *string2;&lt;br /&gt;    NSString *string3;&lt;br /&gt;    NSString *string4;&lt;br /&gt;}&lt;br /&gt;@property(nonatomic,retain)IBOutlet UITextField *textfield;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UITextField *textfield2;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UITextField *textfield3;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UITextField *textfield4;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//告訴IB有一個UISlider&lt;/span&gt;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UISlider *slider;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UILabel *display;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UILabel *display2;&lt;br /&gt;@property(nonatomic,copy)NSString *string;&lt;br /&gt;@property(nonatomic,copy)NSString *string2;&lt;br /&gt;@property(nonatomic,copy)NSString *string3;&lt;br /&gt;@property(nonatomic,copy)NSString *string4;&lt;br /&gt;&lt;br /&gt;-(IBAction)calculate:(id)sender;&lt;br /&gt;-(IBAction)reset:(id)sender;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//對應UISlider的event&lt;/span&gt;&lt;br /&gt;-(IBAction)sliderChanged:(id)sender;&lt;br /&gt;-(IBAction)female:(id)sender;&lt;br /&gt;-(IBAction)male:(id)sender;&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;"MyViewController.m"&lt;br /&gt;&lt;br /&gt;@implementation MyViewController&lt;br /&gt;&lt;br /&gt;@synthesize textfield;&lt;br /&gt;@synthesize textfield2;&lt;br /&gt;@synthesize textfield3;&lt;br /&gt;@synthesize textfield4;&lt;br /&gt;@synthesize slider;&lt;br /&gt;@synthesize display;&lt;br /&gt;@synthesize display2;&lt;br /&gt;@synthesize string;&lt;br /&gt;@synthesize string2;&lt;br /&gt;@synthesize string3;&lt;br /&gt;@synthesize string4;&lt;br /&gt;&lt;br /&gt;float a;&lt;br /&gt;int characterselect;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//移動slider的event&lt;/span&gt;&lt;br /&gt;-(IBAction)sliderChanged:(id)sender&lt;br /&gt;{&lt;br /&gt;    NSString *newText;&lt;br /&gt;UISlider *slider=(UISlider *)sender;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//先在IB裡面設定範圍 此處我設定為0～4&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;user移動slider之後 就會是0~4其中一個&lt;/span&gt;&lt;br /&gt;int progressAsInt=(int)(slider.value+0.5f);&lt;br /&gt;switch (progressAsInt) {&lt;br /&gt;    case 0:&lt;br /&gt;    {&lt;br /&gt;        newText=@"很少運動或完全沒運動";&lt;br /&gt;        a=1.2;&lt;br /&gt;        break;&lt;br /&gt;    }&lt;br /&gt;    case 1:&lt;br /&gt;    {&lt;br /&gt;        newText=@"每周運動1-3次";&lt;br /&gt;        a=1.375;&lt;br /&gt;        break;&lt;br /&gt;    }&lt;br /&gt;    case 2:&lt;br /&gt;    {&lt;br /&gt;        newText=@"每周運動3-5次";&lt;br /&gt;        a=1.55;&lt;br /&gt;        break;       &lt;br /&gt;    }&lt;br /&gt;    case 3:&lt;br /&gt;    {&lt;br /&gt;        newText=@"每周運動6-7次";&lt;br /&gt;        a=1.725;&lt;br /&gt;        break;&lt;br /&gt;    }&lt;br /&gt;    case 4:&lt;br /&gt;    {&lt;br /&gt;        newText=@"每天非常重度的運動或體力勞動者";&lt;br /&gt;        a=1.9;&lt;br /&gt;        break;&lt;br /&gt;    }&lt;br /&gt;    default:&lt;br /&gt;        newText=@"exception error";&lt;br /&gt;        break;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//在diplay2這個label顯示字串&lt;/span&gt;&lt;br /&gt;    display2.text=newText;&lt;br /&gt;    [newText release];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(IBAction)calculate:(id)sender&lt;br /&gt;{&lt;br /&gt;   &lt;br /&gt;    self.string=textfield.text;&lt;br /&gt;    self.string2=textfield2.text;&lt;br /&gt;    self.string3=textfield3.text;&lt;br /&gt;    self.string4=textfield4.text;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將字串轉成int&lt;/span&gt;&lt;br /&gt;    int stringint=[string intValue];&lt;br /&gt;    int stringint2=[string2 intValue];&lt;br /&gt;    int stringint3=[string3 intValue];&lt;br /&gt;    int stringint4=[string4 intValue];&lt;br /&gt;    if (characterselect==0) {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//基礎代謝率公式&lt;/span&gt;&lt;br /&gt;        float kg=9.6*stringint2;&lt;br /&gt;        float cm=1.8*stringint;&lt;br /&gt;        float age=4.7*stringint3;&lt;br /&gt;        float benefit=655+kg+cm-age;&lt;br /&gt;        float result=a*benefit;&lt;br /&gt;        float result2=result-stringint4;&lt;br /&gt;        if (result2&lt;0) {&lt;br /&gt;            display.text=@"只會變胖不會變瘦";&lt;br /&gt;        }&lt;br /&gt;        if (result2==0) {&lt;br /&gt;            display.text=@"不會變胖也不會變瘦";&lt;br /&gt;        }&lt;br /&gt;        if(result2&gt;0)&lt;br /&gt;        {&lt;br /&gt;            float benefit2=result2*30;&lt;br /&gt;            float weight=benefit2/7700;&lt;br /&gt;            NSString* Text = [[NSString alloc] initWithFormat:@"%f", weight];&lt;br /&gt;            NSString* Text1=@"你會瘦";&lt;br /&gt;            NSString* Text2=@"kg";&lt;br /&gt;            &lt;span style="color: rgb(0, 153, 0);"&gt;//字串結合&lt;/span&gt;&lt;br /&gt;            NSString *ConText = [NSString stringWithFormat:@"%@%@%@", Text1,Text, Text2];&lt;br /&gt;            display.text=ConText;&lt;br /&gt;            [Text release];&lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;    if (characterselect==1) {&lt;br /&gt;   &lt;br /&gt;    float kg=13.8*stringint2;&lt;br /&gt;    float cm=5.0*stringint;&lt;br /&gt;    float age=6.8*stringint3;&lt;br /&gt;    float benefit=66+kg+cm-age;&lt;br /&gt;    float result=a*benefit;&lt;br /&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;//浮點數轉成字串&lt;/span&gt;&lt;br /&gt;    //NSString* myNewString = [[NSString alloc] initWithFormat:@"%f", a];&lt;br /&gt;    //display.text=myNewString;&lt;br /&gt;    float result2=result-stringint4;&lt;br /&gt;    if (result2&lt;0) {&lt;br /&gt;    display.text=@"只會變胖不會變瘦";&lt;br /&gt;    }&lt;br /&gt;    if (result2==0) {&lt;br /&gt;        display.text=@"不會變胖也不會變瘦";&lt;br /&gt;    }&lt;br /&gt;    if(result2&gt;0)&lt;br /&gt;    {&lt;br /&gt;    float benefit2=result2*30;&lt;br /&gt;    float weight=benefit2/7700;&lt;br /&gt;    NSString* Text = [[NSString alloc] initWithFormat:@"%f", weight];&lt;br /&gt;    NSString* Text1=@"你會瘦";&lt;br /&gt;    NSString* Text2=@"kg";&lt;br /&gt;    //字串結合&lt;br /&gt;    NSString *ConText = [NSString stringWithFormat:@"%@%@%@", Text1,Text, Text2];&lt;br /&gt;    display.text=ConText;&lt;br /&gt;    [Text release];   &lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//按鈕按下去會觸發的event&lt;/span&gt;&lt;br /&gt;-(IBAction)female:(id)sender&lt;br /&gt;{&lt;br /&gt;    characterselect=0;&lt;br /&gt;}&lt;br /&gt;-(IBAction)male:(id)sender&lt;br /&gt;{&lt;br /&gt;    characterselect=1;&lt;br /&gt;}&lt;br /&gt;- (void)didReceiveMemoryWarning {&lt;br /&gt;    // Releases the view if it doesn't have a superview.&lt;br /&gt;    [super didReceiveMemoryWarning];&lt;br /&gt;   &lt;br /&gt;    // Release any cached data, images, etc that aren't in use.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void)viewDidUnload {&lt;br /&gt;    // Release any retained subviews of the main view.&lt;br /&gt;    // e.g. self.myOutlet = nil;&lt;br /&gt;}&lt;br /&gt;- (BOOL)textFieldShouldReturn:(UITextField *)theTextField&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    [textfield resignFirstResponder];&lt;br /&gt;    [textfield2 resignFirstResponder];&lt;br /&gt;    [textfield3 resignFirstResponder];&lt;br /&gt;    [textfield4 resignFirstResponder];&lt;br /&gt;       &lt;br /&gt;    return YES;&lt;br /&gt;}&lt;br /&gt;-(IBAction)reset:(id)sender&lt;br /&gt;{&lt;br /&gt;    textfield.text=@"";&lt;br /&gt;    textfield2.text=@"";&lt;br /&gt;    textfield3.text=@"";&lt;br /&gt;    textfield4.text=@"";&lt;br /&gt;    display.text=@"";&lt;br /&gt;    display2.text=@"";&lt;br /&gt;   &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void)dealloc {&lt;br /&gt;    [textfield release];&lt;br /&gt;    [textfield2 release];&lt;br /&gt;    [textfield3 release];&lt;br /&gt;    [string release];&lt;br /&gt;    [string2 release];&lt;br /&gt;    [string3 release];&lt;br /&gt;    [display release];&lt;br /&gt;    [slider release];&lt;br /&gt;    [super dealloc];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2079558922692768283?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2079558922692768283/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-uislider.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2079558922692768283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2079558922692768283'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-uislider.html' title='iphone開發-UISlider'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2626431839590946818</id><published>2010-04-16T00:29:00.007+08:00</published><updated>2010-05-17T01:07:12.438+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-AVAudioPlayer</title><content type='html'>前幾天 我寫了一個陽春版的吹風機程式(意思就是打開按鈕 會有吹風機的聲音)是一個無裡頭的程式XD 這次的程式其實是延續上篇的UISwitch 加入播放音樂的功能 而iphone裡面 有一個AVAudioplayer可以直接用來播放音樂用 以下就用我前幾天寫的程式來說明&lt;br /&gt;"AudioPlayerViewController.h"&lt;br /&gt;&lt;br /&gt;&lt;uikit h=""&gt;&lt;uikit h=""&gt;#import &amp;lt;UIKit/UIKit.h&amp;gt;&lt;br /&gt;&lt;/uikit&gt;&lt;/uikit&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//記得先import 以下這個 才能使用AVAudioplayer&lt;/span&gt;&lt;br /&gt;&lt;uikit h=""&gt;&lt;uikit h=""&gt;#import &amp;lt;AVFoundation/AVFoundation.h&amp;gt;&lt;avfoundation h=""&gt;&lt;avfoundation h=""&gt;&lt;br /&gt;&lt;br /&gt;@interface AudioPlayerViewController : UIViewController {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生AVAudioPlayer object&lt;/span&gt;&lt;br /&gt;AVAudioPlayer *audioPlayer;&lt;br /&gt;//&lt;span style="color: rgb(0, 153, 0);"&gt;產生UISwitch object&lt;/span&gt;&lt;br /&gt;UISwitch *switched;&lt;br /&gt;}&lt;br /&gt;@property(nonatomic,retain)IBOutlet UISwitch *switched;&lt;br /&gt;-(IBAction)switchange:(id)sender;&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;"AudioPlayerViewController.m"&lt;br /&gt;&lt;br /&gt;#import "AudioPlayerViewController.h"&lt;br /&gt;&lt;br /&gt;@implementation AudioPlayerViewController&lt;br /&gt;@synthesize switched;&lt;br /&gt;&lt;br /&gt;-(IBAction)switchange:(id)sender&lt;br /&gt;{&lt;br /&gt;UISwitch *whichswitch=(UISwitch *)sender;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當switch的按鈕切換到ON&lt;/span&gt;&lt;br /&gt;if (whichswitch.isOn==YES) {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//讓audioPlayer可以重頭播放&lt;/span&gt;&lt;br /&gt;audioPlayer.currentTime = 0;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//開始播放&lt;/span&gt;&lt;br /&gt;[audioPlayer play];&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; //停止播放 但不會讓音樂重頭播放&lt;/span&gt;&lt;br /&gt;[audioPlayer stop];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//程式剛起始時 會運作的部分&lt;/span&gt;&lt;br /&gt;- (void)viewDidLoad {&lt;br /&gt;[super viewDidLoad];&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//指定音樂檔名和格式&lt;/span&gt;&lt;br /&gt;NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audio.mp3", [[NSBundle mainBundle] resourcePath]]];&lt;br /&gt;NSError *error;&lt;br /&gt;audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&amp;amp;error];&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;- (void)dealloc {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//記得釋放記憶體&lt;/span&gt;&lt;br /&gt;[audioPlayer release];&lt;br /&gt;[super dealloc];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;最後記得 點xcode旁邊有個Resources 右鍵 add-&gt;existing files&lt;br /&gt;選擇你想播放的音樂 記得將"copy items into destination group...."打勾 按add就可以了&lt;br /&gt;&lt;br /&gt;另外還有一些其他method 像是&lt;span style="color: rgb(0, 153, 0);font-size:85%;" &gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;// 0.0 - no volume; 1.0 full volume&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;audioPlayer.volume = 0.5; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//暫停&lt;/span&gt;&lt;br /&gt;[audioPlayer pause];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/avfoundation&gt;&lt;/avfoundation&gt;&lt;/uikit&gt;&lt;/uikit&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2626431839590946818?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2626431839590946818/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-avaudioplayer.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2626431839590946818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2626431839590946818'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-avaudioplayer.html' title='iphone開發-AVAudioPlayer'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-6243497966049396994</id><published>2010-04-11T20:38:00.003+08:00</published><updated>2010-04-11T20:55:08.765+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-UISwitch</title><content type='html'>前幾天看到老師給我看的刮鬍刀程式 我也想來寫一個無厘頭的程式 因此我想寫一個吹風機程式XD 在iphone裡面 有一個像開關的按鈕 稱作UISwitch 在這邊紀錄一下 UISwitch 怎麼使用 我用我前幾天寫的程式 來教學&lt;br /&gt;首先在.h 檔 做以下宣告&lt;br /&gt;&lt;test4appdelegate.h&gt;&lt;br /&gt;&lt;/test4appdelegate.h&gt; "test4AppDelegate.h"&lt;br /&gt;&lt;br /&gt;&lt;test4appdelegate.h&gt;@interface test4AppDelegate : NSObject &lt;uiapplicationdelegate&gt; {&lt;br /&gt;   UIWindow *window;&lt;br /&gt;   UILabel *display;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生一個 switch object&lt;/span&gt;&lt;br /&gt;   UISwitch *switchchange;      &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@property (nonatomic, retain) IBOutlet UIWindow *window;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UISwitch *switchchange;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UILabel *display;&lt;br /&gt;-(IBAction)switchchanged:(id)sender;&lt;br /&gt;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;&lt;test4appdelegate.m&gt;&lt;br /&gt;"&lt;/test4appdelegate.m&gt;&lt;/uiapplicationdelegate&gt;&lt;/test4appdelegate.h&gt; test4AppDelegate.m"&lt;br /&gt;&lt;br /&gt;&lt;test4appdelegate.h&gt;&lt;uiapplicationdelegate&gt;&lt;test4appdelegate.m&gt;@implementation test4AppDelegate&lt;br /&gt;&lt;br /&gt;@synthesize window;&lt;br /&gt;@synthesize switchchange;&lt;br /&gt;@synthesize display;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//這邊控制按鈕的動作&lt;/span&gt;&lt;br /&gt;-(IBAction)switchchanged:(id)sender&lt;br /&gt;{  &lt;br /&gt;UISwitch *whichswitch=(UISwitch *)sender;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當按鈕移動到ON 就印出test的字串&lt;/span&gt;&lt;br /&gt;   if (whichswitch.isOn==YES) {&lt;br /&gt;       display.text=@"test";&lt;br /&gt;     &lt;br /&gt;           }&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當移動到Off 就印出test2&lt;/span&gt;&lt;br /&gt;       else&lt;br /&gt;       display.text=@"test2";&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- (void)applicationDidFinishLaunching:(UIApplication *)application {  &lt;br /&gt;&lt;br /&gt;   // Override point for customization after application launch&lt;br /&gt;   [window makeKeyAndVisible];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (void)dealloc {&lt;br /&gt;   [window release];&lt;br /&gt;   [super dealloc];&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@end&lt;/test4appdelegate.m&gt;&lt;/uiapplicationdelegate&gt;&lt;/test4appdelegate.h&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-6243497966049396994?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/6243497966049396994/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-uiswitch.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6243497966049396994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6243497966049396994'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-uiswitch.html' title='iphone開發-UISwitch'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-4200597775352979932</id><published>2010-04-09T01:18:00.006+08:00</published><updated>2010-06-21T12:14:51.821+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-型別轉換</title><content type='html'>&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;// 將字串轉換成int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;NSString *intString = @"1";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;int value = [intString intValue];&lt;/span&gt;&lt;/p&gt; &lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;// 將字串轉換成float&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;NSString *floatString = @"10.00";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;float value = [floatString floatValue];&lt;/span&gt;&lt;/p&gt; &lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;// 將字串轉換成double&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;NSString *doubleString = @"10.000000";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;double value = [doubleString doubleValue];&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將float轉換成字串&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(255, 255, 255);"&gt;float weight=benefit2/7700;&lt;br /&gt;NSString* Text = [[NSString alloc] initWithFormat:@"%f", weight];&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//釋放記憶體&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;[Text release];&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 153, 0);"&gt;//將int轉換成字串&lt;/p&gt;&lt;p style="color: rgb(255, 255, 255);"&gt;&lt;span style="font-size:100%;"&gt;int weight=5;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(255, 255, 255);"&gt;&lt;span style="font-size:100%;"&gt;NSString* Text = [[NSString alloc] initWithFormat:@"%d", weight];&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//釋放記憶體&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;[Text release];&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-4200597775352979932?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/4200597775352979932/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4200597775352979932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4200597775352979932'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone.html' title='iphone開發-型別轉換'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5112215244639510116</id><published>2010-04-09T01:11:00.002+08:00</published><updated>2010-04-09T01:17:28.236+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-object與method寫法</title><content type='html'>在objective C中 我們常可以看到[receiver message]的東西 以下將介紹這個&lt;br /&gt;譬如說 我們產生一個label object&lt;br /&gt;UILabel *label&lt;br /&gt;我們想在label中顯示一段字串 我們可以這麼寫&lt;br /&gt;[label setText:@"This is a test"];&lt;br /&gt;@開頭表示是一串字串 接著用雙引號括號起來&lt;br /&gt;其實它也可以寫成像java 用dot的寫法 這兩個是一樣的&lt;br /&gt;label.text=@"This is a test";&lt;br /&gt;也就是object.method&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5112215244639510116?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5112215244639510116/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-objectmethod.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5112215244639510116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5112215244639510116'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-objectmethod.html' title='iphone開發-object與method寫法'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8132343817415234233</id><published>2010-04-08T23:33:00.006+08:00</published><updated>2010-05-17T01:10:08.901+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-dismiss the keyboard</title><content type='html'>今天花了蠻多時間在解決這個問題 在iphone中輸入文字or數字 他會自動彈出虛擬鍵盤 但是輸入完成後 按下return or done(要看你在UI中 設定成什麼) 並不會自動消失 因此需要自行加入某樣東西才行 以下用我今天寫的東西來介紹&lt;br /&gt;(MyViewController.h)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//UIVewController 使用UITextFieldDelegate這個protocol&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;這樣才能用到使鍵盤消失的method&lt;/span&gt;&lt;br /&gt;@interface MyViewController : UIViewController &amp;lt;UITextFieldDelegate&amp;gt; {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生一個可以在上面輸入文字的object&lt;/span&gt;&lt;br /&gt; UITextField *textField;&lt;br /&gt; UITextField *textField2;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//產生一個label object&lt;/span&gt;&lt;br /&gt; UILabel *label;&lt;br /&gt; NSString *string;&lt;br /&gt; NSString *string2;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//用IBOulet作為UI的識別&lt;/span&gt;&lt;br /&gt;@property (nonatomic,retain)IBOutlet UITextField *textField;&lt;br /&gt;@property (nonatomic,retain)IBOutlet UITextField *textField2;&lt;br /&gt;@property (nonatomic,retain)IBOutlet  UILabel *label;&lt;br /&gt;@property (nonatomic,copy)NSString *string;&lt;br /&gt;@property (nonatomic,copy)NSString *string2;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//按鈕宣告&lt;/span&gt;&lt;br /&gt;-(IBAction)calculate:(id)sender;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;(MyViewController.m)&lt;br /&gt;#import "MyViewController.h"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@implementation MyViewController&lt;br /&gt;&lt;br /&gt;@synthesize textField;&lt;br /&gt;@synthesize textField2;&lt;br /&gt;@synthesize label;&lt;br /&gt;@synthesize string;&lt;br /&gt;@synthesize string2;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//按鈕按下要執行的事件&lt;/span&gt;&lt;br /&gt;-(IBAction)calculate:(id)sender&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將user輸入的文字 放到string中&lt;/span&gt;&lt;br /&gt; self.string=textField.text;&lt;br /&gt; self.string2=textField2.text;&lt;br /&gt; float bmi;&lt;br /&gt; float hight;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//string 轉換成 float (ps:這邊我會另外再簡介)&lt;/span&gt;&lt;br /&gt; float stringFloat = [string floatValue];&lt;br /&gt; hight=stringFloat/100;&lt;br /&gt; float stringFloat2 = [string2 floatValue];&lt;br /&gt; float hight2=hight*hight;&lt;br /&gt; bmi=stringFloat2/hight2;&lt;br /&gt;&lt;br /&gt; if (bmi&lt;18.5) text="@"&gt;=18.5&amp;amp;&amp;amp;bmi&lt;24) text="@"&gt;=24&amp;amp;&amp;amp;bmi&lt;27) text="@"&gt;=27)&lt;br /&gt; {&lt;br /&gt;     label.text=@"太胖了..沒救了";&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//這邊就是當user按下虛擬鍵盤的return or done之後 會呼叫此function 接著鍵盤會自動消失&lt;/span&gt;&lt;br /&gt;-(Bool)textFieldShouldReturn:(UITextField *)TextField&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//因為我有兩個textField (也就是可以讓使用者輸入文字的地方)&lt;/span&gt;&lt;br /&gt;[textField resignFirstResponder];&lt;br /&gt;[textField2 resignFirstResponder];&lt;br /&gt;return YES;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;之後就是記得在UI設計那邊 要將兩個textField 連到file's owner 讓file's owner當作代理程式&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8132343817415234233?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8132343817415234233/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-dismiss-keyboard.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8132343817415234233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8132343817415234233'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-dismiss-keyboard.html' title='iphone開發-dismiss the keyboard'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3060833506868493114</id><published>2010-04-06T22:22:00.003+08:00</published><updated>2010-04-06T22:38:13.944+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-declare and define(2)</title><content type='html'>&lt;span style="font-size:100%;"&gt;接續上篇所介紹的 今天剛好用到隨機函數 拿這個例子來當作舉例&lt;br /&gt;首先在.h的檔案中 加入下列這行來宣告這個method&lt;br /&gt;&lt;code class="cpp plain"&gt;-(int)getRandomNumber:(int)from to:(int)to;&lt;br /&gt;&lt;/code&gt;接著在.m的檔案中 加入下列這行來定義，也就是告訴他要做些什麼事&lt;br /&gt;-(int)getRandomNumber:(int)from to:(int)to {&lt;br /&gt;//這邊的用法 和C裡面的srand()一樣&lt;br /&gt;return (int)from + arc4random() % (to-from+1);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;之後在.m裡面 可以加入下列這行來呼叫這個method&lt;br /&gt;//隨機產生1～10&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;code class="cpp color1 bold"&gt;int&lt;/code&gt; &lt;code class="cpp plain"&gt;randomNumber  = [self getRandomNumber:1 to:10];&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3060833506868493114?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3060833506868493114/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-declare-and-define2.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3060833506868493114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3060833506868493114'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-declare-and-define2.html' title='iphone開發-declare and define(2)'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5259348716919032928</id><published>2010-04-01T22:35:00.002+08:00</published><updated>2010-04-01T22:54:19.473+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-declare and define篇</title><content type='html'>&lt;span style="font-size:100%;"&gt;今天終於把objective c++ K過一遍了 將一些心得寫上來 順便記住一些重點&lt;br /&gt;在開發時 當我新建立一個專案時 我們會看到 XXX.h 和XXX.m 兩個檔案&lt;br /&gt;事實上 開發iphone時 我們會發現 他們將不同功能 不同作用的程式碼 分出來 寫到不同的檔案上&lt;br /&gt;我們先來介紹一下 .h 和.m 主要是在做什麼&lt;br /&gt;"XXX.h" 其實就像是C++ header一樣  在裡面宣告類別以及變數 而objective c++稱作&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;"XXX.m" 在objective c++裡面稱作implement的部份 也就是定義 該類別要作什麼動作&lt;br /&gt;&lt;br /&gt;範例如下:&lt;br /&gt;EX: XXX.h&lt;br /&gt;&lt;/span&gt;&lt;pre class="code"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;#import &lt;foundation/nsobject.h&gt;&lt;br /&gt;&lt;br /&gt;@interface Fraction: NSObject {&lt;br /&gt;   int numerator;&lt;br /&gt;   int denominator;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(void) print;&lt;br /&gt;-(void) setNumerator: (int) n;&lt;br /&gt;-(void) setDenominator: (int) d;&lt;br /&gt;-(int) numerator;&lt;br /&gt;-(int) denominator;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;EX:XXX.m&lt;br /&gt;#import "Fraction.h"&lt;br /&gt;#import &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;@implementation Fraction&lt;br /&gt;-(void) print {&lt;br /&gt;   printf( "%i/%i", numerator, denominator );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(void) setNumerator: (int) n {&lt;br /&gt;   numerator = n;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(void) setDenominator: (int) d {&lt;br /&gt;   denominator = d;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(int) denominator {&lt;br /&gt;   return denominator;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-(int) numerator {&lt;br /&gt;   return numerator;&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5259348716919032928?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5259348716919032928/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-declare-and-define.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5259348716919032928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5259348716919032928'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/04/iphone-declare-and-define.html' title='iphone開發-declare and define篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8008816340394800648</id><published>2010-03-18T16:41:00.003+08:00</published><updated>2010-03-18T17:25:31.194+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone實機開發-程式 免簽證(idp)上傳到iphone執行</title><content type='html'>試了兩天終於成功了 先簡介一下開發環境(有空再附圖上去)&lt;br /&gt;mac os :snow leopard 10.6.2&lt;br /&gt;iphone sdk:3.1.2&lt;br /&gt;xcode: 3.2.1&lt;br /&gt;iphone os:3.1.2&lt;br /&gt;&lt;br /&gt;以上Xcode iphone sdk和mac os的版本要相同 否則方法會不同&lt;br /&gt;&lt;br /&gt;首先iphone 需要兩個動作(必備):&lt;br /&gt;1.blackra1n(JB)&lt;br /&gt;2.透過cydia下載 Appsync for 3.1&lt;br /&gt;詳細安裝過程請看 &lt;a href="http://blog.xuite.net/sskao/learning/27403691"&gt;網站&lt;/a&gt; (已經JB完 請從第四步驟開始) 之後等有空再附上圖片&lt;br /&gt;&lt;br /&gt;以上前置動作完成之後 接下來就是重頭戲了 開始之前 先把你的iphone插上電腦&lt;br /&gt;1.到你的mac os 接著看到工作列 按前往-&gt;電腦-&gt;你灌os的硬碟-&gt;Developer-&gt;SDks&lt;br /&gt;-&gt;iPhoneOS3.1.2.sdk (對應你要開發的版本 做相同的修改)&lt;br /&gt;把裡面的SDKSettings.plist拉到桌面 然後按右鍵以Dashcode打開 然候找到&lt;br /&gt;CODE_SIGNING_REQUIRED 把它的string值 改成No 存檔之後 拉回去覆蓋即可&lt;br /&gt;&lt;br /&gt;2.在xcode左上角先選 Device-3.1.2 Release(看你的iphone os版本 選擇相對應的版本)&lt;br /&gt;&lt;br /&gt;3. 接著到Xcode裡面 對著你的project 按右鍵 選Get info 之後buide這欄中 找到Code Signing Identity 將 Code Singing Identity 和 Any iPhone OS Device 都選成Don't code sign即可&lt;br /&gt;(每個新的project 都要設定一次)&lt;br /&gt;&lt;br /&gt;4.接著按Build and Run 你就會看到程式上傳到iphone了&lt;br /&gt;&lt;br /&gt;若要移除程式 請在xcode的工具列 按windows-&gt;organizer 找到下方 application&lt;br /&gt;選你要移除的程式 按下方的"-" 就可以移除了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8008816340394800648?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8008816340394800648/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/03/iphone-idpiphone.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8008816340394800648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8008816340394800648'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/03/iphone-idpiphone.html' title='iphone實機開發-程式 免簽證(idp)上傳到iphone執行'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-1874577912979216020</id><published>2010-03-07T19:27:00.004+08:00</published><updated>2010-04-22T22:18:04.601+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-開發環境建置</title><content type='html'>下載&lt;span class="Apple-style-span" style="font-weight: bold; line-height: 18px;font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;" &gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Xcode for iPhone and Mac Development &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;為你的mac 裝Xocde 和 iphone sdk吧&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;b&gt;網址:&lt;span class="Apple-style-span" style="font-weight: normal; line-height: normal;font-family:Georgia,serif;font-size:20px;"  &gt;&lt;a href="http://developer.apple.com/technologies/xcode.html"&gt;http://developer.apple.com/technologies/xcode.html&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;根據你的os版本來下載 是免費下載的 但是需要先註冊&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;下載玩安裝之後 恭喜你 就可以開始開發了&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;開發之前 我們先來看官方的 Tutorial&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;a href="http://developer.apple.com/iphone/index.action"&gt;http://developer.apple.com/iphone/index.action&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;非官方的&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;a href="http://icodeblog.com/category/iphone-programming-tutorials/"&gt;http://icodeblog.com/category/iphone-programming-tutorials/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;b&gt;中文的objective c++ 教學&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;b&gt;&lt;a href="http://blog.lifestyle.idv.tw/2007/06/become-xcoder-12.html"&gt;http://blog.lifestyle.idv.tw/2007/06/become-xcoder-12.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;objective c 入門教學&lt;br /&gt;&lt;a href="http://www.otierney.net/objective-c.html.zh-tw.big5#gettingstarted"&gt;http://www.otierney.net/objective-c.html.zh-tw.big5#gettingstarted&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;推薦書籍:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;iPhone Developer's Cookbook  Building Applications with the iPhone SDK&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Lucida Grande',Geneva,Arial,Verdana,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;font-size:medium;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-1874577912979216020?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/1874577912979216020/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/03/iphone_07.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1874577912979216020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1874577912979216020'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/03/iphone_07.html' title='iphone開發-開發環境建置'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-508035239672511294</id><published>2010-03-07T18:46:00.008+08:00</published><updated>2010-03-12T23:00:33.742+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone程式開發'/><title type='text'>iphone開發-系統建置</title><content type='html'>要開發iphone程式 有以下幾種方法&lt;div&gt;1&lt;span class="Apple-style-span"  style="font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="line-height: 30px; font-size:medium;"&gt;. PearPC &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 30px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;類似模擬器的方式開發 缺點我覺得效能不太好 會有點頓 雖然據說最新的一版 有比之前快了&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 30px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;實際試過之後發現10.5之後的版本都無法安裝 由於PearPc之後都沒繼續維護更新 而iphone sdk又必須在mac os 10.5之後才能開發 因此此方法就失效 若有看到新版 會再過來更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="line-height: 30px; font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="line-height: 30px; font-size:medium;"&gt;2.&lt;span class="Apple-style-span"  style=" line-height: normal; font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;cygwin 開發平台(windows版 iPhone SDK)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;有人最近做出來的整合工具 但是缺點是 不像在Xcode上開發一樣 可以直接先在模擬器上測試 必須要直接上傳到iphone上面 進行測試&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;a href="http://www.iphonetw.net/books/unofficialdev/cygwintoolchain"&gt;網頁資料&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:medium;"&gt;3.用Vmware&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;效能也是不好 不建議&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;目前沒有成功過&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;今天看到此篇教學 正要測試看看 會再上來更新狀況&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;a href="http://junclj.blogspot.com/2010/02/vmware-workstation-70mac-os-x-snow.html"&gt;網頁教學&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;4.直接用原生mac(推薦) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;  不過因為我也會用到windows 因此我採用的方法是 用雙系統(非bootcamp)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;   目前的作法 是用win7+mac 但有點運氣 如果你用到的mac 版本 剛好不適合你的硬體 那就要    多試試看幾個版本囉 我用在Asus的主機板 成功安裝 但是顯示晶片的驅動 沒有成功&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;a href="http://blog.yam.com/dorajim15/article/27058182"&gt;網頁教學&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;啟動時 按F8打-v 若沒有成功 可以嘗試 輸入cpus=1 -v 接著按enter裝裝看(此方式 是強制mac 用單核心安裝)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Tahoma, 'Nimbus Sans L', arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-508035239672511294?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/508035239672511294/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/03/iphone.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/508035239672511294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/508035239672511294'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/03/iphone.html' title='iphone開發-系統建置'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3061310331490804693</id><published>2010-02-20T19:35:00.003+08:00</published><updated>2010-02-20T19:46:51.104+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='旅遊'/><title type='text'>中和到關渡宮路線</title><content type='html'>查了一下 從中和到關渡宮 有兩種走法&lt;div&gt;1.台64 五股一下 接著接關渡大橋&lt;/div&gt;&lt;div&gt;2.從洲美快速道路下大度路&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;去程:&lt;/div&gt;&lt;div&gt;這次我選擇2的走法 因為跟台64不熟 囧 下次再走走看&lt;/div&gt;&lt;div&gt;上洲美快速道路 第一個出口是 承德路 再來就是 大度路 跟大業路 要從大度路下來&lt;/div&gt;&lt;div&gt;下來大度路一段-&gt;二段-&gt;三段 會上一個小橋 接著要靠到左邊 準備左轉接 中央北路4段&lt;/div&gt;&lt;div&gt;走右邊關渡宮-&gt;直走接知行路-&gt;左手邊會看到關渡宮-&gt;準備右轉進停車場&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;回程:&lt;/div&gt;&lt;div&gt;從知行路出來-&gt;接中央北路4段-&gt;左轉之後 靠到右邊 右轉接大度路三段 靠到內線一直直走 就可以看到上洲美快速道路的閘道上去  走到底會有兩個出口 一個是往環河北路(左) 一個是往社子(右)&lt;/div&gt;&lt;div&gt;要往中和 走環河北路 接著接環河快速道路 再接華中橋 就到我家了&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3061310331490804693?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3061310331490804693/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/02/blog-post_20.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3061310331490804693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3061310331490804693'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/02/blog-post_20.html' title='中和到關渡宮路線'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5510960279808073809</id><published>2010-02-11T22:05:00.003+08:00</published><updated>2010-02-11T22:29:06.882+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心得感想'/><title type='text'>碩士生涯結束</title><content type='html'>一顆懸在心中的大石頭終於放下了  如果沒有老師的耐心指導 北鼻的鼓勵和打氣 還有夥伴們的幫忙 我想我的論文至今仍無法完成 也許沒有寫的很好 但是我已經做了最大的努力了  盡可能的把論文寫好 到現在心情還是無法平復 久久不能自己(其實是誇飾法XD) 我終於畢業了! 碩士的生涯結束了 這段時間我覺得我過得很充實 學了很多東西 不管是程式的能力 論文的寫作和研究 我想我是有進步的 寫作真的蠻難的 修改了很多次 才到比較能看的版本 人機互動其實是一個非常難的學問 因為必須考量使用者的感受與需求  我們不能因為覺得這功能很炫 就沒來由的去寫 結果就造成使用者根本就沒用到 又或者改變他們原有的使用習慣    就像老闆說的 我們要做為資工系的設計師!設計之前要先考量到使用者的需求(雖然目前業界..都是上面的要你做啥就做啥 很難能有自已的想法 這就是為什麼台灣的軟體一直都無法媲美國外的其中一個原因吧= =)  雖然人生中的其中一個挑戰已經結束 但是未來一定會有更多更難的挑戰 還是要隨時準備迎接下一個挑戰!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5510960279808073809?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5510960279808073809/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/02/blog-post.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5510960279808073809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5510960279808073809'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/02/blog-post.html' title='碩士生涯結束'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-1933257467176134184</id><published>2010-01-26T00:58:00.003+08:00</published><updated>2010-01-26T01:10:46.030+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心得感想'/><title type='text'>壓力好大..</title><content type='html'>論文不停的改...一直改的不好  壓力非常的大&lt;div&gt;&lt;div&gt;甚至有時候會有個念頭 想要休學了 但我知道 我不能這樣做&lt;/div&gt;&lt;div&gt;父母花了很多錢 很多心力培養我長大&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;很擔心無法畢業...擔心出來的時候 都已經老了 找工作沒人要&lt;/div&gt;&lt;div&gt;還有家裡沈重的貸款要負責償還 現在的我想要趕快當完兵 &lt;/div&gt;&lt;div&gt;趕快找到穩定的工作 幫忙家裡分擔一些家計  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-1933257467176134184?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/1933257467176134184/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/01/blog-post.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1933257467176134184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1933257467176134184'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/01/blog-post.html' title='壓力好大..'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5233831237131146707</id><published>2010-01-03T23:35:00.003+08:00</published><updated>2010-01-03T23:38:35.844+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='瀏覽器'/><title type='text'>解決Gmail error</title><content type='html'>最近使用了chrome dev版，結果開啟gmail卻產生了錯誤，大致是"Gamil的部份功能出現了錯誤"等訊息 方法是 按chrome右上角的板手-&gt;選項-&gt;個人化設定頁面-&gt;清除瀏覽資料-&gt;清除瀏覽紀錄和清空快取 這兩個打勾接著按清除 重開chrome之後 就會恢復正常&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5233831237131146707?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5233831237131146707/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2010/01/gmail-error.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5233831237131146707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5233831237131146707'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2010/01/gmail-error.html' title='解決Gmail error'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8839092902728603485</id><published>2009-12-29T21:48:00.004+08:00</published><updated>2009-12-29T21:53:29.449+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>String與基本資料型態之間的轉換</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Java對於字串處理 功能很強大 有興趣詳細可以參參考 Java api&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;以下轉自Java world&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family:Tahoma, Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;1. 由 基本資料型態轉換成 String&lt;br /&gt;&lt;br /&gt;String 類別中已經提供了將基本資料型態轉換成 String 的 static 方法&lt;br /&gt;也就是 String.valueOf() 這個參數多載的方法&lt;br /&gt;&lt;br /&gt;有下列幾種&lt;br /&gt;&lt;br /&gt;String.valueOf(boolean b) : 將 boolean 變數 b 轉換成字串&lt;br /&gt;&lt;br /&gt;String.valueOf(char c) : 將 char 變數 c 轉換成字串&lt;br /&gt;&lt;br /&gt;String.valueOf(char[] data) : 將 char 陣列 data 轉換成字串&lt;br /&gt;&lt;br /&gt;String.valueOf(char[] data, int offset, int count) :&lt;br /&gt;將 char 陣列 data 中 由 data[offset] 開始取 count 個元素 轉換成字串&lt;br /&gt;&lt;br /&gt;String.valueOf(double d) : 將 double 變數 d 轉換成字串&lt;br /&gt;&lt;br /&gt;String.valueOf(float f) : 將 float 變數 f 轉換成字串&lt;br /&gt;&lt;br /&gt;String.valueOf(int i) : 將 int 變數 i 轉換成字串&lt;br /&gt;&lt;br /&gt;String.valueOf(long l) : 將 long 變數 l 轉換成字串&lt;br /&gt;&lt;br /&gt;String.valueOf(Object obj) : 將 obj 物件轉換成 字串, 等於 obj.toString()&lt;br /&gt;&lt;br /&gt;用法如:&lt;br /&gt;int i = 10;&lt;br /&gt;String str = String.valueOf(i);&lt;br /&gt;這時候 str 就會是 "10"&lt;br /&gt;&lt;br /&gt;2. 由 String 轉換成 數字的基本資料型態&lt;br /&gt;&lt;br /&gt;要將 String 轉換成基本資料型態轉&lt;br /&gt;大多需要使用基本資料型態的包裝類別&lt;br /&gt;&lt;br /&gt;比如說 String 轉換成 byte&lt;br /&gt;可以使用 Byte.parseByte(String s)&lt;br /&gt;這一類的方法如果無法將 s 分析 則會丟出 NumberFormatException&lt;br /&gt;&lt;br /&gt;byte :&lt;br /&gt;Byte.parseByte(String s) : 將 s 轉換成 byte&lt;br /&gt;Byte.parseByte(String s, int radix) : 以 radix 為基底 將 s 轉換為 byte&lt;br /&gt;比如說 Byte.parseByte("11", 16) 會得到 17&lt;br /&gt;&lt;br /&gt;double :&lt;br /&gt;Double.parseDouble(String s) : 將 s 轉換成 double&lt;br /&gt;&lt;br /&gt;float :&lt;br /&gt;Double.parseFloat(String s) : 將 s 轉換成 float&lt;br /&gt;&lt;br /&gt;int :&lt;br /&gt;Integer.parseInt(String s) : 將 s 轉換成 int&lt;br /&gt;&lt;br /&gt;long :&lt;br /&gt;Long.parseLong(String s) : 將 s 轉換成 long&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Tahoma, Georgia;"&gt;&lt;span class="Apple-style-span" style=" -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Tahoma, Georgia;"&gt;&lt;span class="Apple-style-span" style=" -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;用法如:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Tahoma, Georgia;"&gt;&lt;span class="Apple-style-span" style=" -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"&gt;&lt;pre  style="font-family:Courier, monospace;"&gt;&lt;span class="java-reserved_word"  style="color:navy;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;try&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre  style="font-family:Courier, monospace;"&gt;&lt;span class="java-reserved_word"  style="color:navy;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="java-bracket"  style="color:navy;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;  &lt;/span&gt;&lt;/pre&gt;&lt;pre  style="font-family:Courier, monospace;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; String str = &lt;/span&gt;&lt;span class="java-string"  style="color:navy;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;"1234"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;;   &lt;/span&gt;&lt;/pre&gt;&lt;pre  style="font-family:Courier, monospace;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;/span&gt;&lt;span class="java-reserved_word"  style="color:navy;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; a = Integer.parseInt(str); &lt;/span&gt;&lt;/pre&gt;&lt;pre  style="font-family:Courier, monospace;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;/span&gt;&lt;span class="java-bracket"  style="color:navy;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="java-reserved_word"  style="color:navy;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;catch&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; (NumberFormatException e) &lt;/span&gt;&lt;/pre&gt;&lt;pre  style="font-family:Courier, monospace;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;/span&gt;&lt;span class="java-bracket"  style="color:navy;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;   System.out.println(&lt;/span&gt;&lt;span class="java-string"  style="color:navy;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;" parse int error!!  "&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; + e); &lt;/span&gt;&lt;span class="java-bracket"  style="color:navy;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8839092902728603485?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8839092902728603485/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/12/string.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8839092902728603485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8839092902728603485'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/12/string.html' title='String與基本資料型態之間的轉換'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-7757522317703636790</id><published>2009-12-29T21:45:00.001+08:00</published><updated>2009-12-29T21:45:51.755+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>逐行讀取txt內的內容</title><content type='html'>&lt;div&gt;import java.io.*;&lt;/div&gt;&lt;div&gt;class FileRead &lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;   public static void main(String args[])&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;      try{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// Open the file that is the first &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// command line parameter&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;FileInputStream fstream = new FileInputStream("textfile.txt");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// Get the object of DataInputStream&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;DataInputStream in = new DataInputStream(fstream);&lt;/div&gt;&lt;div&gt;        BufferedReader br = new BufferedReader(new InputStreamReader(in));&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;String strLine;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//Read File Line By Line&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;while ((strLine = br.readLine()) != null) &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// Print the content on the console&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;System.out.println (strLine);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//Close the input stream&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;in.close();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}catch (Exception e){//Catch exception if any&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;System.err.println("Error: " + e.getMessage());&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-7757522317703636790?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/7757522317703636790/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/12/txt.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7757522317703636790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7757522317703636790'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/12/txt.html' title='逐行讀取txt內的內容'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8523290640299472624</id><published>2009-12-20T23:03:00.003+08:00</published><updated>2009-12-20T23:09:27.474+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java-時間格式</title><content type='html'>&lt;div&gt;//產生一個date物件&lt;/div&gt;&lt;div&gt;Date date = new Date();&lt;/div&gt;&lt;div&gt;//格式是年-月-日&lt;/div&gt;&lt;div&gt;//yyyy:代表年 MM:代表月份 dd:代表日 &lt;span class="Apple-style-span"  style=" ;font-family:serif;"&gt;hh:代表時 mm:分 ss:秒&lt;/span&gt;&lt;/div&gt;&lt;div&gt;DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");&lt;/div&gt;&lt;div&gt;//就會根據上述你要的格式 去印出來&lt;/div&gt;&lt;div&gt;System.out.println(dateFormat.format(date));&lt;/div&gt;&lt;div&gt;//這在我論文用到的地方是&lt;/div&gt;&lt;div&gt;//getHtml是用來將後面的網址列的內容抓下來 但這網址有個特點就是帶入年-月-日，因此透過這樣的方法 我可以依據當天我要查得內容 直接抓下來 做分析&lt;/div&gt;&lt;div&gt;System.out.println(URLUtil.getHtml("http://cse.ttu.edu.tw/book/index.php?smode=Daily&amp;amp;caldate="+dateFormat.format(date)+"&amp;amp;SelRoom=04"));&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8523290640299472624?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8523290640299472624/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/12/java_20.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8523290640299472624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8523290640299472624'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/12/java_20.html' title='Java-時間格式'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2844198731595668888</id><published>2009-12-20T22:57:00.002+08:00</published><updated>2009-12-20T23:03:02.252+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java-檔案儲存</title><content type='html'>最近都在趕論文 所以有一段時間沒把論文程式學到的部份放上來 之後再來補充其他的&lt;div&gt;//指定儲存的位置與檔案名稱&lt;br /&gt;&lt;div&gt;&lt;div&gt;FileWriter out = new FileWriter("c:\\Audiolog.txt",true);&lt;/div&gt;&lt;div&gt;//儲存NO字串 記得要加上\r\n 這樣微軟下開啟txt才會正常&lt;/div&gt;&lt;div&gt;out.write("No"+"\r\n");&lt;/div&gt;&lt;div&gt;out.close();&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;原因是因為如下:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Simsun, arial; font-size: 19px; color: rgb(68, 68, 68); letter-spacing: 1px; line-height: 32px; "&gt;如果單純用&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 0, 255); "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;\n&lt;/strong&gt;&lt;/span&gt;來換行，用記事本打開檔案時&lt;br /&gt;會看到原本應該換行的地方變成很多黑色小方塊&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Simsun, arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;換行符號有兩種，一個叫Cr(carriage return)，一個是Lf(line feed)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Simsun, arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); font-size: 19px; letter-spacing: 1px; line-height: 32px; "&gt;Mac只有&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(255, 0, 0); "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Cr&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Linux/Unix只有&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(255, 0, 0); "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Lf&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Windows則是&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(255, 0, 0); "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;CrLf&lt;/strong&gt;&lt;/span&gt;，兩者皆有&lt;br /&gt;意思是Linux只需要Lf一個字元就可以有換行加移到前面的效果&lt;br /&gt;但是Windows就需要兩個&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2844198731595668888?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2844198731595668888/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/12/java.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2844198731595668888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2844198731595668888'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/12/java.html' title='Java-檔案儲存'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-6353761485813792276</id><published>2009-12-09T17:50:00.005+08:00</published><updated>2009-12-09T18:01:13.991+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>失眠</title><content type='html'>已經好久都沒辦法好好的睡一覺 躺著睡覺時 總會一直在想論文哪個部份有問題 要怎麼闡述 要怎麼架構 不然就是常常寫程式寫了一整夜都沒睡覺 有時後躺著會想 程式遇到了什麼問題 就會一直在想要怎麼解決 想到之後 我就想趕快爬起來試試看 運氣好 就是馬上就能解決 運氣不好 弄了一整夜還是不行 已經好久沒辦法出去散散心 也很久沒出去悠閒的約會了 平日+假日都是帶北鼻一起去研究室忙事情 剛好北鼻也是忙研究所的報告  一起加油吧! 忙完~我會帶妳出去玩的^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-6353761485813792276?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/6353761485813792276/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/12/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6353761485813792276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6353761485813792276'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/12/blog-post.html' title='失眠'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2732061723539726009</id><published>2009-12-05T15:10:00.006+08:00</published><updated>2009-12-31T22:24:29.851+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='瀏覽器'/><title type='text'>Chrome 大改造-增加專屬於自己的套件</title><content type='html'>今天要介紹的是Google 開發者版，最近越來越多套件能使用了，決定從opera跳槽過來XD&lt;div&gt;&lt;a href="http://www.google.com/chrome/eula.html?extra=devchannel"&gt;下載&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;套件1: &lt;a href="http://www.chromeextensions.org/utilities/ie-tab/"&gt;IE TAB&lt;/a&gt;&lt;br /&gt;用途:有些網頁IE Only時，就能使用，非常方便，就不需要另外再開IE&lt;br /&gt;使用方法: 點選圖片的紅框 就能增加在chrome的右上角 要使用的時候 就點一下"e" 就能將網頁&lt;br /&gt;用ie來打開 另外可以用manage list來預先設定什麼網頁要用ie來開&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/steve.chenbao/xlAUiD#5411654438765533234"&gt;圖片示範1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_jRLtRYQut2Y/SxoPCz5zEUI/AAAAAAAABlo/TNTx9GmoFnY/s128/manager_lists.JPG"&gt;圖片示範2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;套件2: &lt;a href="http://www.chromeextensions.org/alerts-updates/gmail-checker/"&gt;Gmail Checker&lt;/a&gt;(其實就是firefox的Gmail Notifier)&lt;br /&gt;用途:當你的gmail有新的信件時，就會自動彈出訊息，告知你有新的信，常在用gmail的人，這是一個非常好用的功能&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_jRLtRYQut2Y/SxoPC5Cm65I/AAAAAAAABls/7yRT1IorB4E/s128/gmail_checker.JPG"&gt;圖片示範&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;套件3:&lt;a href="http://tinyurl.com/kuzeba"&gt;自動將簡體網頁轉成繁體&lt;/a&gt;&lt;br /&gt;用途:有時候會看到某些網頁是簡體 但是裡面又是你想要看得一些資訊(我寫程式的時候常常要在裡面挖寶XD 沒辦法...台灣對於程式設計的討論風氣 真的很低迷orz..) 這個套件能自動幫您轉成繁體網頁 相當方便 點一下，按加入即可&lt;br /&gt;&lt;br /&gt;User Scripts應用:  固定縮放比例&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;新增套件&lt;/span&gt;:&lt;a href="https://chrome.google.com/extensions/detail/ocdkpkoaonnchdakgkmmcmnihhhgbjch"&gt;下載&lt;/a&gt; (autozoom)&lt;br /&gt;用途:有時螢幕很大 總會覺得螢幕中的字 實在太小 但chrome 又不像opera 或firefox可以固定縮放比例 還必我要按ctrl和滑鼠滾輪 來放大 實在非常麻煩 因此我們用user scripts來解決這個問題 等chrome出套件 當然就用套件囉XD&lt;br /&gt;&lt;br /&gt;使用方法: 在C:\ChromePlus1.2.4.0\ChromePlusUserData\Default\ 裡面新建一個User Scripts的資料夾 接著新增一個 script autoPage.user.js為檔名的檔案 接著按右鍵編輯 新增以下的語法&lt;br /&gt;&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name          autoPage&lt;br /&gt;// @description   page zoom&lt;br /&gt;// @include       *&lt;br /&gt;// @exclude     &lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;autoPage();&lt;br /&gt;&lt;br /&gt;function autoPage()&lt;br /&gt;{&lt;br /&gt;      var zoomLevel=125; // 125指的是 縮放比例125% 可以看您的需求去做調整&lt;br /&gt;      zoom(zoomLevel);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function zoom(level)&lt;br /&gt;{&lt;br /&gt;      var i = parseInt(document.body.style.zoom);&lt;br /&gt;      if (isNaN(i)) i=100;&lt;br /&gt;      newZoom= i * level / 100;&lt;br /&gt;      document.body.style.zoom=newZoom+'%';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;接著在chrome捷進 增加--enable-user-scripts 請看下圖&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_jRLtRYQut2Y/SxoPC7Nam-I/AAAAAAAABlw/juz_kSvAG-M/s128/auto.JPG"&gt;圖片示範&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;書籤工具列:相信很多從各個瀏覽器跳槽過來的人 都會發現一件事 奇怪...怎麼沒書籤按鈕&lt;br /&gt;沒錯...原裝chrome將書籤隱藏起來了 這時我們可以將他叫出來&lt;br /&gt;&lt;br /&gt;使用方法:在Chrome的捷進裡面 增加--bookmark-menu 就可以叫出來&lt;br /&gt;以下是我將固定縮放比例 以及 增加書籤按鈕一起啟動的圖片&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_jRLtRYQut2Y/SxoPDQNAw7I/AAAAAAAABl0/S9Nux9ZwZQs/s128/bookmark.JPG"&gt;圖片示範&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://lh4.ggpht.com/_jRLtRYQut2Y/SxoPDQNAw7I/AAAAAAAABl0/S9Nux9ZwZQs/s128/bookmark.JPG"&gt;&lt;/a&gt;新增書籤按鈕套件 &lt;a href="https://chrome.google.com/extensions/detail/ajgmnekpakhkbnhehnpkminifbpmkghg"&gt;下載&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://chrome.google.com/extensions/detail/ajgmnekpakhkbnhehnpkminifbpmkghg"&gt;&lt;/a&gt;英文翻譯工具&lt;/div&gt;&lt;div&gt;Bubble Translate &lt;a href="https://chrome.google.com/extensions/detail/jlhlebbhengjlhmcjebbkambaekglhkf"&gt;下載&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://chrome.google.com/extensions/detail/jlhlebbhengjlhmcjebbkambaekglhkf"&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 16px; "&gt;&lt;h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.3em; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;產生goo.gl 短網址工具列 只要開啟想縮短網址的網頁 點一下工具 它會自動幫你產生且複製短網址 非常方便&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.3em; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;goo.gl url shortener &lt;a href="https://chrome.google.com/extensions/detail/iblijlcdoidgdpfknkckljiocdbnlagk"&gt;下載&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;還有這邊有相當多的套件網址可以用介紹給大家&lt;br /&gt;網址:&lt;br /&gt;&lt;a href="http://www.chromeextensions.org/"&gt;http://www.chromeextensions.org/&lt;/a&gt;   (非官方)&lt;/div&gt;&lt;div&gt;&lt;a href="https://chrome.google.com/extensions/"&gt;https://chrome.google.com/extensions/&lt;/a&gt;  (官方)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2732061723539726009?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2732061723539726009/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/12/chrome.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2732061723539726009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2732061723539726009'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/12/chrome.html' title='Chrome 大改造-增加專屬於自己的套件'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5485670672736863055</id><published>2009-11-29T21:53:00.006+08:00</published><updated>2009-11-29T22:05:23.116+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='軟體'/><title type='text'>好用的firewall</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ghostsecurity.com/images/ghostwall01_large.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 700px; height: 520px;" src="http://www.ghostsecurity.com/images/ghostwall01_large.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;資訊安全是一門非常重要的課題(os:還不是微軟太弱...一堆漏洞..要不是很多軟體需要跑在微軟上..不然我真想投奔Ubuntu..) 一般電腦除了 防毒軟體+防木馬軟體 最好能再加上"防火牆" 這邊要介紹的是 完全免費且輕巧 並且設定上也相當簡單的軟體 它叫做Ghostwall 據說是一群黑客高手所做出來的軟體 其實原理上 他是將所有的port都封鎖 但軟體有先預設一些基本的port有打開 例如80port等 但是一些自行安裝的軟體 我們就必須自己去打開port，例如我打魔獸爭霸要當主機 那就要開啟6112port了 ftp 就要開啟21port等&lt;br /&gt;功能頁面:&lt;br /&gt;&lt;br /&gt;Ghostwall主頁:&lt;a href="http://www.ghostsecurity.com/ghostwall/"&gt;下載與介紹&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5485670672736863055?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5485670672736863055/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/11/firewall.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5485670672736863055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5485670672736863055'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/11/firewall.html' title='好用的firewall'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-7128876513766782262</id><published>2009-11-26T18:28:00.002+08:00</published><updated>2009-11-26T18:39:29.143+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>慘..</title><content type='html'>臨時要用語音分析的東西 最近看了很多語音訊號的東西 因為要接觸這一塊 是我以前到現在都沒接觸過的 有太多的專有名詞我看不懂 短時間內要會 實在有點困難 看了一些paper 大致了解 要找出特徵 大致都是要經過FFT產生頻譜圖 去看出特徵 目前使用matlab能夠跑出波型圖 但是頻譜圖還不會弄 看到一些資料有什麼sin cos phase 這是什麼 真的看不懂... 問了老包那間的學弟 但他們都還沒弄到這 所以也沒辦法幫忙我什麼 目前的我真是吃力orz...很無助的感覺&lt;br /&gt;畢業時間已經快到 結果我卻卡住了..也難為俊亨了 總覺得我一直再問很基本的問題 一點基礎都沒&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-7128876513766782262?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/7128876513766782262/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/11/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7128876513766782262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7128876513766782262'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/11/blog-post.html' title='慘..'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8865540324224852725</id><published>2009-11-09T21:29:00.002+08:00</published><updated>2009-11-09T21:35:11.237+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java 計算音源檔音量</title><content type='html'>我想這應該是很多寫這方面程式的人 都想知道的 由於java 的getlevel有bug 因此沒辦法直接獲取音源的振幅，所以我們必須先瞭解 音源檔的結構 是怎麼組成 必須先繞個彎去計算出振幅 我也是找了好久才找到的 稍微修改一下 就能正常運作 但注意這程式碼是計算出振幅 不是分貝 所以只要找到怎麼將振幅轉換成分貝 加入一行公式 就可以計算出來(目前先停擺..我在寫paper 等有空我再補充進去)&lt;br /&gt;以下是程式碼&lt;br /&gt;&lt;br /&gt;public class PCMFilePlayerLeveler implements Runnable {&lt;br /&gt;    File file;&lt;br /&gt;    AudioInputStream in;&lt;br /&gt;    SourceDataLine line;&lt;br /&gt;    int frameSize;&lt;br /&gt;    byte[] buffer;&lt;br /&gt;    Thread playThread;&lt;br /&gt;    boolean playing;&lt;br /&gt;    boolean notYetEOF;&lt;br /&gt;    AudioFormat format;&lt;br /&gt;    float level;&lt;br /&gt;&lt;br /&gt;    final static float MAX_8_BITS_SIGNED = Byte.MAX_VALUE;&lt;br /&gt;    final static float MAX_8_BITS_UNSIGNED = 0xff;&lt;br /&gt;    final static float MAX_16_BITS_SIGNED = Short.MAX_VALUE;&lt;br /&gt;    final static float MAX_16_BITS_UNSIGNED = 0xffff;&lt;br /&gt;   &lt;br /&gt;    public PCMFilePlayerLeveler ()&lt;br /&gt;        throws IOException,&lt;br /&gt;               UnsupportedAudioFileException,&lt;br /&gt;               LineUnavailableException {&lt;br /&gt;       File fi= new File("c:\\JDKAudioRecord.wav");&lt;br /&gt;        in = AudioSystem.getAudioInputStream (fi);&lt;br /&gt;       //in = AudioSystem.getAudioInputStream (new BufferedInputStream (new FileInputStream(f)));&lt;br /&gt;        format = in.getFormat();&lt;br /&gt;        AudioFormat.Encoding formatEncoding = format.getEncoding();&lt;br /&gt;        if (! (formatEncoding.equals (AudioFormat.Encoding.PCM_SIGNED) ||&lt;br /&gt;               formatEncoding.equals (AudioFormat.Encoding.PCM_UNSIGNED)))&lt;br /&gt;            throw new UnsupportedAudioFileException (&lt;br /&gt;                                                     file.getName() + " is not PCM audio");&lt;br /&gt;        System.out.println ("got PCM format:  " +&lt;br /&gt;                            format.getChannels() + " channels, " +&lt;br /&gt;                            format.getSampleSizeInBits() + " bit samples");&lt;br /&gt;        frameSize = format.getFrameSize();&lt;br /&gt;        System.out.println ("got frame size: ");&lt;br /&gt;        DataLine.Info info =&lt;br /&gt;            new DataLine.Info (SourceDataLine.class, format);&lt;br /&gt;        System.out.println ("got info");&lt;br /&gt;        line = (SourceDataLine) AudioSystem.getLine (info);&lt;br /&gt;&lt;br /&gt;        // figure out a small buffer size&lt;br /&gt;        int bytesPerSec = format.getSampleSizeInBits() *&lt;br /&gt;                          (int) format.getSampleRate();&lt;br /&gt;        System.out.println ("bytesPerSec = " + bytesPerSec);&lt;br /&gt;        int bufferSize = bytesPerSec / 20;&lt;br /&gt;        buffer = new byte[bufferSize];&lt;br /&gt;&lt;br /&gt;        System.out.println ("got line");&lt;br /&gt;        //line.open();&lt;br /&gt;        System.out.println ("opened line");&lt;br /&gt;        playThread = new Thread (this);&lt;br /&gt;        playing = false;&lt;br /&gt;        notYetEOF = true;&lt;br /&gt;        playThread.start();&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    public void run() {&lt;br /&gt;        int readPoint = 0;&lt;br /&gt;        int bytesRead = 0;&lt;br /&gt;        try {&lt;br /&gt;           // while (notYetEOF) {&lt;br /&gt;                System.out.println("test");&lt;br /&gt;                //if (playing) {&lt;br /&gt;                    // only write if the line will take at&lt;br /&gt;                    // least a buffer-ful of data&lt;br /&gt;                    if (line.available() &lt; buffer.length) {&lt;br /&gt;                        Thread.yield();&lt;br /&gt;                   //     continue;&lt;br /&gt;                    }&lt;br /&gt;                    bytesRead = in.read (buffer,&lt;br /&gt;                                         readPoint,&lt;br /&gt;                                         buffer.length - readPoint);&lt;br /&gt;                    if (bytesRead == -1) {&lt;br /&gt;                        notYetEOF = false;&lt;br /&gt;                     //   break;&lt;br /&gt;                    }&lt;br /&gt;                    // how many frames did we get,&lt;br /&gt;                    // and how many are left over?&lt;br /&gt;                    System.out.println("test");&lt;br /&gt;                    int frames = bytesRead / frameSize;&lt;br /&gt;                    int leftover = bytesRead % frameSize;&lt;br /&gt;                    // calculate level&lt;br /&gt;                    calculateLevel (buffer, readPoint, leftover);&lt;br /&gt;                    // if (level &gt; 1)&lt;br /&gt;                    //     System.out.println ("WTF? level = " + level);&lt;br /&gt;                    // System.out.println ("level: " + level);&lt;br /&gt;                    // send to line&lt;br /&gt;                    line.write (buffer, readPoint, bytesRead-leftover);&lt;br /&gt;                    // save the leftover bytes&lt;br /&gt;                    System.arraycopy (buffer, bytesRead,&lt;br /&gt;                                      buffer, 0,&lt;br /&gt;                                      leftover);&lt;br /&gt;                    readPoint = leftover;&lt;br /&gt;                   &lt;br /&gt;               /* } else {&lt;br /&gt;                    // if not playing&lt;br /&gt;                    // Thread.yield();&lt;br /&gt;                    try { Thread.sleep (10);}&lt;br /&gt;                    catch (InterruptedException ie) {}&lt;br /&gt;                }*/&lt;br /&gt;           // } // while notYetEOF&lt;br /&gt;            System.out.println ("reached eof");&lt;br /&gt;            line.drain();&lt;br /&gt;            line.stop();&lt;br /&gt;        } catch (IOException ioe) {&lt;br /&gt;            ioe.printStackTrace();&lt;br /&gt;        } finally {&lt;br /&gt;            // line.close();&lt;br /&gt;        }&lt;br /&gt;    } // run&lt;br /&gt;   &lt;br /&gt;    /** resets level by finding max value in buffer, taking&lt;br /&gt;        into account whether these are 8 or 16 bit values&lt;br /&gt;        (doesn't care about mono vs stereo - if one channel&lt;br /&gt;        is disproportionately louder than the other, it wins)&lt;br /&gt;     */&lt;br /&gt;    private void calculateLevel (byte[] buffer,&lt;br /&gt;                                 int readPoint,&lt;br /&gt;                                 int leftOver) {&lt;br /&gt;        int max = 0;&lt;br /&gt;        boolean use16Bit = (format.getSampleSizeInBits() == 16);&lt;br /&gt;        boolean signed = (format.getEncoding() ==&lt;br /&gt;                          AudioFormat.Encoding.PCM_SIGNED);&lt;br /&gt;        boolean bigEndian = (format.isBigEndian());&lt;br /&gt;        if (use16Bit) {&lt;br /&gt;            for (int i=readPoint; i&lt;buffer.length-leftOver; i+=2) {&lt;br /&gt;                int value = 0;&lt;br /&gt;                // deal with endianness&lt;br /&gt;                int hiByte = (bigEndian ? buffer[i] : buffer[i+1]);&lt;br /&gt;                int loByte = (bigEndian ? buffer[i+1] : buffer [i]);&lt;br /&gt;                if (signed) {&lt;br /&gt;                    short shortVal = (short) hiByte;&lt;br /&gt;                    shortVal = (short) ((shortVal &lt;&lt; 8) | (byte) loByte);&lt;br /&gt;                    value = shortVal;&lt;br /&gt;                } else {&lt;br /&gt;                    value = (hiByte &lt;&lt; 8) | loByte;&lt;br /&gt;                }&lt;br /&gt;                max = Math.max (max, value);&lt;br /&gt;            } // for&lt;br /&gt;        } else {&lt;br /&gt;            // 8 bit - no endianness issues, just sign&lt;br /&gt;            for (int i=readPoint; i&lt;buffer.length-leftOver; i++) {&lt;br /&gt;                int value = 0;&lt;br /&gt;                if (signed) {&lt;br /&gt;                    value = buffer [i];&lt;br /&gt;                } else {&lt;br /&gt;                    short shortVal = 0;&lt;br /&gt;                    shortVal = (short) (shortVal | buffer [i]);&lt;br /&gt;                    value = shortVal;&lt;br /&gt;                }&lt;br /&gt;                max = Math.max (max, value);&lt;br /&gt;            } // for&lt;br /&gt;        } // 8 bit&lt;br /&gt;        // express max as float of 0.0 to 1.0 of max value&lt;br /&gt;        // of 8 or 16 bits (signed or unsigned)&lt;br /&gt;        if (signed) {&lt;br /&gt;            if (use16Bit) { level = (float) max / MAX_16_BITS_SIGNED; }&lt;br /&gt;            else { level = (float) max / MAX_8_BITS_SIGNED; }&lt;br /&gt;        } else {&lt;br /&gt;            if (use16Bit) { level = (float) max / MAX_16_BITS_UNSIGNED; }&lt;br /&gt;            else { level = (float) max / MAX_8_BITS_UNSIGNED; }&lt;br /&gt;        }&lt;br /&gt;        System.out.println(level);&lt;br /&gt;    } // calculateLevel&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    public void start() {&lt;br /&gt;        playing = true;&lt;br /&gt;        if (! playThread.isAlive())&lt;br /&gt;            playThread.start();&lt;br /&gt;        line.start();&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    public void stop() {&lt;br /&gt;        playing = false;&lt;br /&gt;        line.stop();&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    public SourceDataLine getLine() {&lt;br /&gt;        return line;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public File getFile() {&lt;br /&gt;        return file;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public float getLevel() {&lt;br /&gt;        return level;&lt;br /&gt;    }&lt;br /&gt;    public static void main(String args[]) throws IOException, UnsupportedAudioFileException, LineUnavailableException&lt;br /&gt;    {&lt;br /&gt;        PCMFilePlayerLeveler calculate= new PCMFilePlayerLeveler();&lt;br /&gt;        calculate.start();&lt;br /&gt;        //System.out.println("無法錄音,錄音失敗");&lt;br /&gt;        //System.out.println(calculate.getLevel());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8865540324224852725?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8865540324224852725/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/11/java_09.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8865540324224852725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8865540324224852725'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/11/java_09.html' title='Java 計算音源檔音量'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3284533167187162427</id><published>2009-11-09T20:58:00.002+08:00</published><updated>2009-11-09T21:18:45.496+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java 用麥克風錄音</title><content type='html'>===========================只講解主要程式=============================&lt;br /&gt;public void main() throws InterruptedException{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    //設定錄完音之後的檔名以及路徑&lt;/span&gt;&lt;br /&gt;    String  Filename = "C://JDKAudioRecord.wav";&lt;br /&gt;    File  outputFile = new File(Filename);&lt;br /&gt;&lt;br /&gt;    AudioFormat  audioFormat = null;&lt;br /&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;//設定音源檔的格式&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;//詳細api請看這 &lt;/span&gt;&lt;a style="color: rgb(0, 153, 0);" href="http://www.j2ee.me/j2se/1.4.2/docs/api/javax/sound/sampled/AudioFormat.html"&gt;Java sound api&lt;/a&gt;&lt;br /&gt;    audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,&lt;br /&gt;                   44100.0F, 16, 2, 4, 44100.0F, false);&lt;br /&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;//&lt;/span&gt;&lt;code style="color: rgb(0, 153, 0);"&gt;DataLine.Info&lt;/code&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; subclass 去取得並且開啟 target data line&lt;/span&gt;&lt;br /&gt;    DataLine.Info info = new DataLine.Info(TargetDataLine.class,&lt;br /&gt;                             audioFormat);&lt;br /&gt;    TargetDataLine targetDataLine = null;&lt;br /&gt;    try{&lt;br /&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;//從麥克風取得音源&lt;/span&gt;&lt;br /&gt;      targetDataLine = (TargetDataLine)AudioSystem.getLine(info);&lt;br /&gt;      targetDataLine.open(audioFormat);&lt;br /&gt;    }catch (Exception e){&lt;br /&gt;      System.out.println("無法錄音,錄音失敗");&lt;br /&gt;      e.printStackTrace();&lt;br /&gt;      System.exit(-1);&lt;br /&gt;    }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3284533167187162427?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3284533167187162427/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/11/java.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3284533167187162427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3284533167187162427'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/11/java.html' title='Java 用麥克風錄音'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-1280887493788963365</id><published>2009-10-17T16:28:00.004+08:00</published><updated>2009-11-09T21:19:28.352+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>java-呼叫不同calss的method</title><content type='html'>由於目前寫得程式 我都把它包在同一個class下去執行 這次我把我要的功能分成兩個class 看起來比較明瞭簡單 順便學習一下&lt;br /&gt;EX:&lt;br /&gt;Server2.java (主要執行的程式)&lt;br /&gt;JDKAudioRecorder.java (執行錄音的程式)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我在server2.java中 加入一段&lt;br /&gt;JDKAudioRecorder s = new JDKAudioRecorder(targetDataLine,targetType,outputFile);&lt;br /&gt;由於在 JDKAudioRecorder的constructor是有引數的 所以在這之前需要事先定義引數&lt;br /&gt;如下:&lt;br /&gt;AudioFormat  audioFormat = null;&lt;br /&gt;audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,44100.0F, 16, 2, 4, 44100.0F, false);&lt;br /&gt;TargetDataLine targetDataLine = null;&lt;br /&gt;AudioFileFormat.Type targetType = AudioFileFormat.Type.AU;&lt;br /&gt;DataLine.Info info = new DataLine.Info(TargetDataLine.class,audioFormat);&lt;br /&gt;targetDataLine = (TargetDataLine)AudioSystem.getLine(info);&lt;br /&gt;targetDataLine.open(audioFormat);&lt;br /&gt;String  Filename = "C://JDKAudioRecord.wav";&lt;br /&gt;File  outputFile = new File(Filename);&lt;br /&gt;&lt;br /&gt;接著我只要在server2.java中 加入s.main() (main method裡面就能起動整個JDKAudioRecorder.java 要做的事) 因此加入這段就等於把整個JDKAudioRecorder.java執行一次的意思一樣&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-1280887493788963365?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/1280887493788963365/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/10/calssmethod.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1280887493788963365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1280887493788963365'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/10/calssmethod.html' title='java-呼叫不同calss的method'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-4083983503083754329</id><published>2009-10-13T06:56:00.001+08:00</published><updated>2009-10-13T06:59:34.490+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式'/><title type='text'>暫存</title><content type='html'>最近在處理對聲音判斷其音量大小 目前有點卡關 暫存一些我查到的資訊&lt;br /&gt;似乎是可以利用sample size 和number of channels 來決定此音源的音量大小&lt;br /&gt;&lt;br /&gt;     &lt;div class="pad5x10"&gt; Digital audio is stored as a series of samples, where each sample is the amplitude of the sound wave being recorded. The volume of the sound is the same as the amplitude of the sound, therefore, each individual sample is simply encoded as the volume of the sound.&lt;br /&gt;&lt;br /&gt;So you break the mic input down into a list of samples (based on the sample size / number of channels) and keep a running average to determine the sound level. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-4083983503083754329?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/4083983503083754329/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/10/blog-post_13.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4083983503083754329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4083983503083754329'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/10/blog-post_13.html' title='暫存'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-4549538602818879508</id><published>2009-10-07T15:26:00.004+08:00</published><updated>2009-10-07T15:49:44.671+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='論文'/><title type='text'>論文後續</title><content type='html'>情境感知:&lt;br /&gt;&lt;br /&gt;(1)被動:&lt;br /&gt;server可以透過google calendar(或其他行事曆的方式)，也就是Location+Time，讓server瞭解它所在的地方，是在哪一種情境&lt;br /&gt;ps:但也有可能預定了某個地方是在開會，但卻突然更動，沒有開會，這樣server還能夠用主動的方式，來瞭解它所在的地方是哪種情境&lt;br /&gt;&lt;br /&gt;(2)主動:&lt;br /&gt;server可以像人般(有五官)的瞭解它所在的情境在哪&lt;br /&gt;ex:可透過聲音(聲音是否大聲)，攝影機(看這個地方人多不多)等&lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;其他文獻提到，我實驗所歸納的，幾個常見的情境&lt;br /&gt;接著用五官，去分析這幾個情境，看是否能夠分離出來&lt;br /&gt;&lt;br /&gt;ex:聲音小聲=&gt;開會、電影院等&lt;br /&gt;    聲音大聲=&gt;下課時間等&lt;br /&gt;&lt;br /&gt;不知道這樣半年能不能寫的完@@ 囧....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-4549538602818879508?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/4549538602818879508/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/10/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4549538602818879508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4549538602818879508'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/10/blog-post.html' title='論文後續'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3764002955456920506</id><published>2009-09-03T22:42:00.005+08:00</published><updated>2011-05-10T13:59:54.083+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>氣餒</title><content type='html'>感覺論文怎麼樣都寫不好 也不知道自己在做什麼 有點力不從心  現在目標就是趕快把論文完成 同時也要準備預官考試 加油吧！自己&lt;br /&gt;&lt;br /&gt;PS:補充一下 學長說的：先進去公司再說 學到了工作經驗 才有機會去談薪水 不管大學或碩士畢業 都是認作剛畢業 並沒有比較強 因為一點工作經驗都沒 不管如何都是要從底層程式設計師慢慢做起 所以程式設計能力的培養蠻重要的 那是基礎 這樣才有機會慢慢往上爬&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3764002955456920506?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3764002955456920506/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/09/blog-post.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3764002955456920506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3764002955456920506'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/09/blog-post.html' title='氣餒'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2742111028784746409</id><published>2009-08-16T22:58:00.003+08:00</published><updated>2009-11-09T21:20:04.417+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian C++'/><title type='text'>Symbian-取得目前手機的來電模式狀態</title><content type='html'>要include以下兩個header檔&lt;br /&gt;mproengengine.h&lt;br /&gt;proengfactory.h&lt;br /&gt;並且 Link ProfileEngine.lib&lt;br /&gt;MProEngEngine* engine = ProEngFactory::NewEngineLC();&lt;br /&gt;TInt activeId( engine-&gt;ActiveProfileId() );&lt;br /&gt;&lt;br /&gt;如果engine-&gt;ActiveProfileId()&lt;br /&gt;return回來為&lt;br /&gt;0- General&lt;br /&gt;1 - Silent&lt;br /&gt;2 - Meeting&lt;br /&gt;3 - Outdoor&lt;br /&gt;4 - Pager&lt;br /&gt;5 – Offline&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2742111028784746409?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2742111028784746409/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/08/symbian.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2742111028784746409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2742111028784746409'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/08/symbian.html' title='Symbian-取得目前手機的來電模式狀態'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2698473996949449107</id><published>2009-08-03T22:45:00.003+08:00</published><updated>2009-08-03T22:52:06.780+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心得感想'/><title type='text'>懂得彎腰</title><content type='html'>看到一篇文章 裡面提到&lt;br /&gt;&lt;div class="t_msgfont"&gt;愈成熟的麥穗，愈懂得彎腰。或者，我們也可以來 個逆向思考，愈懂得彎腰，才會愈成熟。保持謙虛和擁有成就，也許就像魚與熊掌般難以兼得，但也絕對不是二選一的單選題。只要隨時提醒自己，放下專業的身 段，願意誠懇和比你資淺或職務位階低的人好好溝通，擁有成就的同時，依然可以有謙虛的心胸。&lt;br /&gt;換句話說，有專業素養、也很會做事，的確是成就自我的重要基礎，但溝通的技巧和友善的態度，卻是不可或缺的要件。&lt;/div&gt; &lt;div class="t_msgfont"&gt;&lt;br /&gt;有些學識很棒的人，常被譏評為：「躲在象牙塔裡！」其中一部份的原因就是出在他們既不善於溝通、也不樂在溝通，與外界的接觸愈來愈少，他不瞭解別人，別人也不會懂他。&lt;br /&gt;愈成熟的麥穗，愈懂得彎腰；愈懂得彎腰，才會愈成熟。保持謙虛和擁有成就絕對不是二選一的單選題。 誠如「會做事、也要會做人」的道理一樣，願意溝通的態度就是一種謙虛的表現，將會令你的專業表現，更添光彩！&lt;br /&gt;&lt;br /&gt;實力越好越厲害的人更應常常保持謙虛的態度 就像飽滿的稻穗一般 期勉自己能夠慢慢的增強實力 同時也應保持謙虛的態度 幫助朋友 善待他人 &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2698473996949449107?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2698473996949449107/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/08/blog-post.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2698473996949449107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2698473996949449107'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/08/blog-post.html' title='懂得彎腰'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-4699532363753309057</id><published>2009-07-29T06:43:00.008+08:00</published><updated>2009-11-09T21:20:28.680+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>PHP-投票計數篇</title><content type='html'>userprofile table中資料欄位 我是規劃成這樣&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;table id="table_results" class="data"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th colspan="3"&gt;&lt;a href="http://140.129.19.170/phpmyadmin/sql.php?db=my_db&amp;amp;table=userprofile&amp;amp;token=c388f7e361fa691eed515d8897d81cd6&amp;amp;sql_query=SELECT+%2A+FROM+%60userprofile%60&amp;amp;session_max_rows=30&amp;amp;pos=0&amp;amp;disp_direction=horizontal&amp;amp;repeat_cells=100&amp;amp;goto=tbl_structure.php&amp;amp;dontlimitchars=1"&gt;&lt;br /&gt;&lt;/a&gt; &lt;/th&gt;             &lt;th&gt; &lt;a href="http://140.129.19.170/phpmyadmin/sql.php?db=my_db&amp;amp;table=userprofile&amp;amp;token=c388f7e361fa691eed515d8897d81cd6&amp;amp;pos=0&amp;amp;session_max_rows=30&amp;amp;disp_direction=horizontal&amp;amp;repeat_cells=100&amp;amp;dontlimitchars=0&amp;amp;sql_query=SELECT+%2AFROM+%60userprofile%60++ORDER+BY+%60userprofile%60.%60Id%60+ASC" title="排序"&gt;Id&lt;/a&gt; &lt;/th&gt;&lt;th&gt; &lt;a href="http://140.129.19.170/phpmyadmin/sql.php?db=my_db&amp;amp;table=userprofile&amp;amp;token=c388f7e361fa691eed515d8897d81cd6&amp;amp;pos=0&amp;amp;session_max_rows=30&amp;amp;disp_direction=horizontal&amp;amp;repeat_cells=100&amp;amp;dontlimitchars=0&amp;amp;sql_query=SELECT+%2AFROM+%60userprofile%60++ORDER+BY+%60userprofile%60.%60Context%60+ASC" title="排序"&gt;Context&lt;/a&gt; &lt;/th&gt;&lt;th&gt; &lt;a href="http://140.129.19.170/phpmyadmin/sql.php?db=my_db&amp;amp;table=userprofile&amp;amp;token=c388f7e361fa691eed515d8897d81cd6&amp;amp;pos=0&amp;amp;session_max_rows=30&amp;amp;disp_direction=horizontal&amp;amp;repeat_cells=100&amp;amp;dontlimitchars=0&amp;amp;sql_query=SELECT+%2AFROM+%60userprofile%60++ORDER+BY+%60userprofile%60.%60Profile%60+ASC" title="排序"&gt;Profile&lt;/a&gt; &lt;/th&gt;&lt;/tr&gt; &lt;/thead&gt;         &lt;tbody&gt;     &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//從userprofile table中找到Context 欄位為meetingatschool 都把它挑出來&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//接下來將其id遞減&lt;/span&gt;&lt;br /&gt;$sql="SELECT * from userprofile where Context='meetingatschool' order by id DESC";&lt;br /&gt;$result=mysql_query($sql);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//因為是遞減的關係最上面的那筆 就會是最新的那筆資料&lt;br /&gt;//抓一列資料 存放到row[]中&lt;br /&gt;&lt;/span&gt;$row=mysql_fetch_row($result);&lt;br /&gt;&lt;br /&gt;$type="";&lt;br /&gt;&lt;br /&gt;//因為row[2]是我存放Profile的地方&lt;br /&gt;//接下來用switch case來分別對應 ex:如果row[2]存在的是General就將$type設為General&lt;br /&gt;switch ($row[2]) {&lt;br /&gt;case "general":&lt;br /&gt;   $type="General";&lt;br /&gt;   break;&lt;br /&gt;case "meeting":&lt;br /&gt;   $type="Meeting";&lt;br /&gt;   break;&lt;br /&gt;case "vibration":&lt;br /&gt;   $type="Vibration";&lt;br /&gt;   break;&lt;br /&gt;case "outdoor":&lt;br /&gt;   $type="Outdoor";&lt;br /&gt;   break;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//ex:上面對應的$type=General 就是 General=General+1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//其中" . "是連接字串用 相當於java與C++中的" + "&lt;/span&gt;&lt;br /&gt;$sql="update meetingatschool set ". $type . "=" . $type . "+1";&lt;br /&gt;mysql_query($sql);&lt;br /&gt;&lt;br /&gt;這邊的資料庫存完之後 我就可以到我的java server那邊 透過JDBC去連接資料庫 抓到資料 完成我要做的事情&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-4699532363753309057?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/4699532363753309057/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/php_29.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4699532363753309057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4699532363753309057'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/php_29.html' title='PHP-投票計數篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-4288699102248768393</id><published>2009-07-29T06:36:00.004+08:00</published><updated>2009-11-09T21:20:51.304+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>PHP-連接資料庫篇</title><content type='html'>&lt;span style="color: rgb(0, 153, 0);"&gt;//連接資料庫 mysql_connect("localhost","帳號","密碼");&lt;/span&gt;&lt;br /&gt;$con = mysql_connect("localhost","xxx","xxx");&lt;br /&gt;if (!$con)&lt;br /&gt;{&lt;br /&gt;die('Could not connect: ' . mysql_error());&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//選擇my_db資料庫&lt;/span&gt;&lt;br /&gt;mysql_select_db("my_db", $con);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將剛剛在主頁所選的選項的值 插入到userprofile table中&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//另外要先到資料庫中 先建立好userprofile的table，並且要將Context和Profile兩個欄位也都建立&lt;/span&gt;&lt;br /&gt;$sql="INSERT INTO userprofile (Context, Profile)&lt;br /&gt;VALUES ('$_POST[context]','$_POST[profile]')";&lt;br /&gt;mysql_query($sql);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-4288699102248768393?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/4288699102248768393/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/php.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4288699102248768393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/4288699102248768393'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/php.html' title='PHP-連接資料庫篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2663595135309125608</id><published>2009-07-29T06:25:00.015+08:00</published><updated>2009-11-09T21:21:05.808+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Html-form with radiobox</title><content type='html'>這次是我第一次真的用Notepad++ 來寫html 還記得在我國中的時候 我有寫過網頁 但當時是用frontpage來寫 所以對html完全不熟 這次剛好論文需要 想說來試試看寫一下&lt;br /&gt;本來寫程式 我是不喜歡問別人的 但這次比較急 只好趕快問人了＝ ＝ 不過也因此...我覺得我沒特別學到什麼 囧...看來還是需要找個機會 好好去磨練一下&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//當user按下送出之後 會導到insert.php這個頁面&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//method有分post和get兩種 而get的方式，會看到url裡面有代參數&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//但post就不會有 另外target="_blank" 是永遠開啟新視窗&lt;/span&gt;&lt;br /&gt;＜form action="insert.php" method="post" target="_blank"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//radiobox name設為相同 就表示同個群組 只能單選&lt;/span&gt;&lt;br /&gt;&lt; name="profile" value="general" type="radio"&gt;General&lt;br /&gt;&lt; name="profile" value="meeting" type="radio"&gt;Meeting&lt;br /&gt;&lt; name="profile" value="vibration" type="radio"&gt;Silent&lt;br /&gt;&lt; name="profile" value="outdoor" type="radio"&gt;Outdoor&lt;br /&gt;&lt; name="context" value="meetingatschool" type="hidden"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//斷行&lt;/span&gt;&lt;br /&gt;＜ｂｒ＞&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//按鈕 value為Submit 顯示也會是Submit&lt;/span&gt;&lt;br /&gt;&lt; value="Submit" type="submit"&gt;&lt;br /&gt;&lt; /form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2663595135309125608?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2663595135309125608/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/html-radiobox.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2663595135309125608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2663595135309125608'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/html-radiobox.html' title='Html-form with radiobox'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-103664452513007072</id><published>2009-07-29T06:20:00.006+08:00</published><updated>2010-01-03T23:40:00.773+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Web server+Database設置篇</title><content type='html'>安裝的時候可以用懶人包  &lt;a href="http://www.appservnetwork.com/"&gt;Appserv&lt;/a&gt;&lt;br /&gt;Webserver:Apache&lt;br /&gt;Database:MySQL&lt;br /&gt;管理資料庫部份:phpmyadmin&lt;br /&gt;&lt;br /&gt;如果不會安裝Appserv可以參考 &lt;a href="http://linux0911.no-ip.info/my_style/doc/appserv2/"&gt;教學&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/PHP/DEfaULT.asP"&gt;PHP Tutorial&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.w3schools.com/html/default.asp"&gt;&lt;br /&gt;HTML Tutorial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://httpd.apache.org/" class="l" onmousedown="return rwt(this,'','','res','2','AFQjCNGyImC8Qi-rx_Bxd9knbUGKMxH5TQ','&amp;amp;sig2=5GyPcfjPisLOt7pNxLdeqw')"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-103664452513007072?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/103664452513007072/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/web-serverdatabase.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/103664452513007072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/103664452513007072'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/web-serverdatabase.html' title='Web server+Database設置篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3389578164763374593</id><published>2009-07-29T05:49:00.005+08:00</published><updated>2009-11-09T21:21:27.609+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>J2SE-JDBC 資料庫select篇</title><content type='html'>Statement stmt = null;&lt;br /&gt;stmt = conn.createStatement();&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//從meetingatschool table 去select&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//&lt;/span&gt;&lt;small style="color: rgb(0, 153, 0);"&gt;executeQuery()方法則是用於SELECT等查詢資料庫的SQL&lt;/small&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//&lt;/span&gt;&lt;small style="color: rgb(0, 153, 0);"&gt;會傳回&lt;span style="font-weight: bold;"&gt;ResultSet物件&lt;/span&gt;，代表變更或查詢的結果，查詢的結果會是一筆一筆的資料&lt;/small&gt;&lt;br /&gt;ResultSet result = stmt.executeQuery( "SELECT * FROM meetingatschool");&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//&lt;/span&gt;&lt;small style="color: rgb(0, 153, 0);"&gt;使用查詢到的結果之欄位順序來顯示&lt;br /&gt;//&lt;/small&gt;&lt;small style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;"&gt;next()&lt;/span&gt;來移動至下一筆資料，它會傳回 true 或 false表示是否有下一筆資料&lt;/small&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//由於我meetingatschool table存的型別是int 因此 我用getInt來取得資料&lt;/span&gt;&lt;br /&gt;&lt;small&gt; while(result.next()) {&lt;br /&gt;      System.out.print("   "+result.getInt(1) + "\t");&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//這個地方 我是要拿來比較大小用&lt;/span&gt;&lt;br /&gt;      general=new Integer(result.getInt(1));&lt;br /&gt;      System.out.print("   "+result.getInt(2) + "\t");&lt;br /&gt;      meeting=new Integer(result.getInt(2));&lt;br /&gt;      System.out.print("   "+result.getInt(3) + "\t" );&lt;br /&gt;      vibration=new Integer(result.getInt(3));&lt;br /&gt;      System.out.println("    "+result.getInt(4) + "\t");&lt;br /&gt;      outdoor=new Integer(result.getInt(4));&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3389578164763374593?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3389578164763374593/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-jdbc-select.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3389578164763374593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3389578164763374593'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-jdbc-select.html' title='J2SE-JDBC 資料庫select篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5137669856790547415</id><published>2009-07-29T05:38:00.004+08:00</published><updated>2009-11-09T21:21:45.822+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>J2SE-JDBC 資料庫連接篇</title><content type='html'>若是用MySQL來當作資料的話 請先下&lt;a href="http://dev.mysql.com/downloads/connector/j/5.1.html"&gt;MySQL JDBC driver&lt;/a&gt;&lt;br /&gt;之後&lt;small&gt;將*.jar加入至CLASSPATH，Eclipse 在Library 加入external JAR&lt;br /&gt;&lt;br /&gt;String driver = "com.mysql.jdbc.Driver";&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//&lt;/span&gt;&lt;/small&gt;&lt;small style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;font-family:Courier New,Courier,monospace;" &gt;jdbc:mysql://主機名稱:連接埠/資料庫名稱&lt;/span&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;     String url = "jdbc:mysql://localhost/my_db";&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;     //登入資料庫的帳號&lt;/span&gt;&lt;br /&gt;    String user = "xxx";&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    //登入資料庫的密碼&lt;/span&gt;&lt;br /&gt;    String password = "xxx";&lt;br /&gt;    Connection conn = null;&lt;br /&gt;Class.forName(driver);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//連接資料庫&lt;/span&gt;&lt;br /&gt; conn = DriverManager.getConnection(url, user, password);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5137669856790547415?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5137669856790547415/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-jdbc.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5137669856790547415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5137669856790547415'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-jdbc.html' title='J2SE-JDBC 資料庫連接篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-5805872505771339272</id><published>2009-07-29T05:24:00.005+08:00</published><updated>2009-11-09T21:22:12.525+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>J2SE-分析字串篇</title><content type='html'>byte[] buf ;&lt;br /&gt;int read = 0;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//從inStream中讀取資料流 寫入到buf中&lt;/span&gt;&lt;br /&gt;while((read = inStream.read(buf))!=-1){ &lt;br /&gt;String str = new String(buf, 0, read);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//字串以"."來作為分隔 &lt;/span&gt;&lt;br /&gt;String[] token =str.split("\\.");&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//假設我在手機端傳的字串為meetingAtschool.Level1.Ring.Vibration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//以下寫法就是將token分別取出&lt;/span&gt;&lt;br /&gt;if(token[0].equals("meetingAtschool"))&lt;br /&gt;{&lt;br /&gt;             &lt;br /&gt;&lt;br /&gt;                     if(token[1].equals("Level1")){&lt;br /&gt;                     &lt;br /&gt;                 &lt;br /&gt;                     System.out.println("Current Exposed level: Level1");&lt;br /&gt;                     }&lt;br /&gt;                 &lt;br /&gt;                     System.out.println("The match functionalities:");&lt;br /&gt;             if(token[2].equals("Ring"))&lt;br /&gt;             {&lt;br /&gt;             &lt;br /&gt;             &lt;br /&gt;                     System.out.println("Ringer");&lt;br /&gt;                     server.broadcast(Ring);&lt;br /&gt;&lt;br /&gt;             }&lt;br /&gt;             if(token[2].equals("Vibration"))&lt;br /&gt;             {&lt;br /&gt;                 &lt;br /&gt;                     System.out.println("Vibration");&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                        //&lt;/span&gt;&lt;small style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;讓執行緒暫停執行進入Not Runnable狀態&lt;/small&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;其中50000毫秒=50秒&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                        //為了要傳給手機訊息 但是同一時間outputstream只能傳一個字串 所以我讓他暫停等候 再傳出去(這時上面的ring也已經傳出)&lt;/span&gt;&lt;br /&gt;                     Thread.sleep(50000);&lt;br /&gt;                     server.broadcast(vibration);&lt;br /&gt;             }&lt;br /&gt;             }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-5805872505771339272?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/5805872505771339272/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5805872505771339272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/5805872505771339272'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se.html' title='J2SE-分析字串篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2362945293347428893</id><published>2009-07-29T04:51:00.005+08:00</published><updated>2009-11-09T21:22:27.058+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>J2SE-Broadcast</title><content type='html'>&lt;span style="color: rgb(0, 153, 0);"&gt;//記得 import java.util.ArrayList;&lt;br /&gt;// 建立對應 client              的 輸出物件&lt;/span&gt;&lt;br /&gt;socketWriter = new PrintWriter(clientSocket.getOutputStream(), true);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//將client相關資訊存起來&lt;/span&gt;&lt;br /&gt;server.setClientOutputStreams( clientSocket.getInetAddress().getHostAddress(), socketWriter );&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//先將每個client的outputStream和ip存起來放到ArrayList中&lt;/span&gt;  ArrayList詳細用法請看&lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html"&gt;Library&lt;/a&gt;&lt;br /&gt;private static ArrayList&lt;createoutputstreamdata&gt; clientOutputStreams;&lt;br /&gt;clientOutputStreams = new ArrayList&lt;createoutputstreamdata&gt;();&lt;br /&gt;public ArrayList&lt;createoutputstreamdata&gt; getClientOutputStreams(){&lt;br /&gt;     return clientOutputStreams;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt; public void setClientOutputStreams( String ip, PrintWriter w ){&lt;br /&gt;     clientOutputStreams.add( new createOutputStreamData(ip,w));&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt; public class createOutputStreamData{&lt;br /&gt;     String clientIP;&lt;br /&gt;     PrintWriter writer;&lt;br /&gt; &lt;br /&gt;     public createOutputStreamData( String ip, PrintWriter w ){&lt;br /&gt;       clientIP = ip;&lt;br /&gt;       writer = w;&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//從ArrayList取出之後 分別寫入到個別的outputstream&lt;/span&gt;&lt;br /&gt; public void broadcast(char g2) throws IOException {&lt;br /&gt;     for( int i=0; i&lt;getclientoutputstreams().size();&gt;&lt;br /&gt;         getClientOutputStreams().get(i).writer.println(g2);&lt;br /&gt;         getClientOutputStreams().get(i).writer.flush();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;/getclientoutputstreams().size();&gt;&lt;/createoutputstreamdata&gt;&lt;/createoutputstreamdata&gt;&lt;/createoutputstreamdata&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2362945293347428893?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2362945293347428893/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-broadcast.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2362945293347428893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2362945293347428893'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-broadcast.html' title='J2SE-Broadcast'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8681513502585674373</id><published>2009-07-29T04:40:00.006+08:00</published><updated>2009-11-09T21:22:40.200+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>J2SE-multithread socket</title><content type='html'>public void startServer() {&lt;br /&gt;&lt;br /&gt;    try {&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//建立server用的socket (port不能小於1024)&lt;/span&gt;&lt;br /&gt;    echoServer = new ServerSocket(port);&lt;br /&gt;    }&lt;br /&gt;    catch (IOException e) {&lt;br /&gt;    System.out.println(e);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; //每當一個device連線產生時，就產生一個新的thread去處理這個連線 並且等待下一個device連進來&lt;/span&gt;&lt;br /&gt;while ( true ) {&lt;br /&gt;    try {&lt;br /&gt;    clientSocket = echoServer.accept();&lt;br /&gt;    numConnections ++;&lt;br /&gt;    Server2Connection oneconnection = new Server2Connection(clientSocket, numConnections, this);&lt;br /&gt;    new Thread(oneconnection).start();&lt;br /&gt;    }&lt;br /&gt;    catch (IOException e) {&lt;br /&gt;    System.out.println(e);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8681513502585674373?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8681513502585674373/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-multithread-socket.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8681513502585674373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8681513502585674373'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-multithread-socket.html' title='J2SE-multithread socket'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-7440617104164291852</id><published>2009-07-29T04:22:00.007+08:00</published><updated>2010-01-03T23:39:25.695+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>J2SE-初探 IDE安裝篇</title><content type='html'>最近一直懶惰沒上來更新 把之前寫的程式 整理一下@@&lt;br /&gt;&lt;br /&gt;我的IDE:eclipse 可在這裡  &lt;a href="http://www.eclipse.org/downloads/"&gt;下載&lt;/a&gt;&lt;a href="http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.5-200906111540/eclipse-SDK-3.5-win32.zip"&gt;&lt;br /&gt;&lt;/a&gt;           &lt;div&gt;       &lt;a class="packageTitle" href="http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.5-200906111540/eclipse-SDK-3.5-win32.zip"&gt;&lt;/a&gt;我都是用 Eclipse Classic 3.5.0 (162 MB) 這個版本&lt;br /&gt;還有記得下載 : &lt;a href="http://www.java.com/en/download/manual.jsp"&gt;java runtime&lt;/a&gt;&lt;br /&gt;Eclipse解壓縮之後 以及java runtime安裝完成&lt;br /&gt;就可以開始開發囉&lt;br /&gt;推薦網站:&lt;br /&gt;&lt;a href="http://www.javaworld.com.tw/jute/"&gt;Javaworld&lt;/a&gt;(國內)&lt;br /&gt;&lt;a href="http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/JavaGossip.htm"&gt;良葛格學習筆記&lt;/a&gt;(國內)&lt;br /&gt;              &lt;a href="http://java.sun.com/"&gt;Java Sun&lt;/a&gt;            (國外) 可以查Library&lt;br /&gt;基本上JAVA的資料還蠻多的 google一下很多資料可以查詢&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-7440617104164291852?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/7440617104164291852/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-ide.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7440617104164291852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7440617104164291852'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/j2se-ide.html' title='J2SE-初探 IDE安裝篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-9186591450319969603</id><published>2009-07-09T13:40:00.005+08:00</published><updated>2009-11-09T21:22:57.376+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian C++'/><title type='text'>symbian 彈出訊息視窗</title><content type='html'>&lt;p&gt;&lt;a shape="rect" name="Top"&gt;&lt;b&gt;Link against: &lt;/b&gt;&lt;code&gt;avkon.lib eikctl.lib eikcdlg.lib&lt;br /&gt;&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a shape="rect" name="Top"&gt;&lt;code&gt;&lt;/code&gt;&lt;/a&gt;&lt;a shape="rect" name="Top"&gt;#include &lt;&lt;/a&gt;&lt;a shape="rect" class="el" href="http://www.forum.nokia.com/infocenter/topic/S60_3rd_Edition_Cpp_Developers_Library/GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6/html/aknnotewrappers_8h-source.html"&gt;aknnotewrappers.h&lt;/a&gt;&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//R_CHAT_ON 這個要在*.rss 裡面去定義&lt;/span&gt;&lt;br /&gt;HBufC* textResource = StringLoader::LoadLC(R_CHAT_ON);&lt;br /&gt;CAknInformationNote* note = new ( ELeave ) CAknInformationNote;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//彈出訊息視窗 變且顯示&lt;/span&gt;&lt;br /&gt;note-&gt;ExecuteLD( *textResource );&lt;br /&gt;&lt;br /&gt;詳情請見&lt;a href="http://library.forum.nokia.com/"&gt;Library&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-9186591450319969603?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/9186591450319969603/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/symbian_09.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/9186591450319969603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/9186591450319969603'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/symbian_09.html' title='symbian 彈出訊息視窗'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-3348328513642053303</id><published>2009-07-09T13:21:00.005+08:00</published><updated>2009-11-09T21:23:14.442+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian C++'/><title type='text'>symbian 儲存與讀取檔案內容</title><content type='html'>寫入檔案 程式碼如下：&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//指定檔名與位置&lt;/span&gt;&lt;br /&gt;_LIT(KFILE,"c:\\kk.txt");&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//要寫入的字串&lt;/span&gt;&lt;br /&gt;_LIT(KT,"meetingAtschool.Level1.Ring");&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;// RFileWriteStream 寫入一個stream到一個文件&lt;/span&gt;&lt;br /&gt;詳情請看&lt;a href="http://library.forum.nokia.com/"&gt;Library &lt;/a&gt;&lt;br /&gt;RFileWriteStream write;&lt;br /&gt;write.Replace(CCoeEnv::Static()-&gt;FsSession(),KFILE,EFileWrite);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//把KT字串放入buf&lt;/span&gt;&lt;br /&gt;TBuf&lt;400&gt; buf(KT);&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//寫入&lt;/span&gt;&lt;br /&gt;write.WriteL(buf);&lt;br /&gt;write.CommitL();&lt;br /&gt;write.Close();&lt;br /&gt;&lt;br /&gt;讀取檔案內容 程式碼如下:&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//檔案的位置&lt;/span&gt;&lt;br /&gt;_LIT(KFILE,"c:\\kk.txt");&lt;br /&gt;RFileReadStream read;&lt;br /&gt;read.Open(CCoeEnv::Static()-&gt;FsSession(),KFILE,EFileRead);&lt;br /&gt;TBuf&lt;40&gt; buf2;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//讀出檔案 寫入到buf2 這邊特別要注意ReadL的第二個參數(這邊指27) 需要跟檔案內容的字串//一樣長 若比較小 會顯示不完全 若比較大 則會有錯誤訊息&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//一般可以寫成buf.Length() 也就是說read.ReadL(buf2,buf.Length()); 這樣就可以知道 當初所//存的buf有多長&lt;/span&gt;&lt;br /&gt;read.ReadL(buf2,27);&lt;br /&gt;read.Close();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-3348328513642053303?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/3348328513642053303/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/07/symbian.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3348328513642053303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/3348328513642053303'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/07/symbian.html' title='symbian 儲存與讀取檔案內容'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-7342638675702918011</id><published>2009-06-21T21:03:00.013+08:00</published><updated>2009-07-29T07:05:12.930+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='旅遊'/><title type='text'>我家到我弟租房子的地方(近元智)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jRLtRYQut2Y/Sj5JazVQSMI/AAAAAAAAAhg/N3mm0FZ7vDc/s1600-h/%E5%8C%97%E5%8D%80%E8%B7%AF%E7%B6%B2%E5%9C%96.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 197px;" src="http://4.bp.blogspot.com/_jRLtRYQut2Y/Sj5JazVQSMI/AAAAAAAAAhg/N3mm0FZ7vDc/s320/%E5%8C%97%E5%8D%80%E8%B7%AF%E7%B6%B2%E5%9C%96.jpg" alt="" id="BLOGGER_PHOTO_ID_5349794132167510210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRLtRYQut2Y/Sj5ICNmUuLI/AAAAAAAAAhY/GpK5bQDo19c/s1600-h/logo.gif.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 238px; height: 178px;" src="http://1.bp.blogspot.com/_jRLtRYQut2Y/Sj5ICNmUuLI/AAAAAAAAAhY/GpK5bQDo19c/s320/logo.gif.jpg" alt="" id="BLOGGER_PHOTO_ID_5349792610210068658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;高速公路北區路往圖                                                           收費道圖片&lt;br /&gt;&lt;br /&gt;橫書白色是ＥＴＣ、藍色是回數票、黃色是現金／回數票；直書藍色是小型車、黃色是大型車。&lt;br /&gt;最內側車道是小型車ETC專用車道，中間車道是回數票專用車道，再來車道是小型車現金收費車道，在來是大型車ETC專用車道，在來車道是大型車回數票車道，在來是大型車現金車道。&lt;br /&gt;＝＝＝去程＝＝＝＝＝＝&lt;br /&gt;路線一:確定&lt;br /&gt;中正路靠最右邊 走南下 中和交流道接國道3(梅花3) 先過 土城-&gt;三鷹-&gt;接鶯歌系統 走國道2(梅花2)-&gt;八德大湳交流道下 下來時走右邊-&gt;接福德一路(靠左)-&gt;左轉和平路(靠右)-&gt;右轉介壽路一段(靠左)-&gt;左轉接廣福路(靠右)(這邊注意 介壽路沒多久 就到廣福路)-&gt;新中北路接興仁路二段-&gt;看到7-11右轉就是遠東路了-&gt;再過去就是元智了&lt;br /&gt;&lt;br /&gt;後來發現路線二 比較方便&lt;br /&gt;路線二:&lt;br /&gt;中正路靠最右邊 走南下 中和交流道 入口靠右 接國道3(梅花3) 先過 土城-&gt;三鷹(鶯歌出口  三峽出口過兩個)-&gt;接鶯歌系統 走國道2(梅花2)-&gt;八德大湳-&gt;南桃園交流道下-&gt;走左手邊接大興西路三段(靠右 )-&gt;右轉接文中路一段-&gt;左轉接龍壽街一段(右手邊會看到桃園醫院)(上面會有陸橋)-&gt;右轉接中華路(靠左)-&gt;左轉接遠東路-&gt;過元智直走 看到7-11 沿著7-11直走 右手邊興仁國小 -&gt;直走會看到第二個7-11 橫的路興安二街-&gt;下一條榮民路241巷&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;＝＝＝回程＝＝＝＝＝＝&lt;br /&gt;興仁路二段-&gt;過兩個7-11-&gt;興仁路一段(靠右)-&gt;過平交道-&gt;右轉接中華路-&gt;看到頭上面有陸橋 不能走內線 內線左轉車專用-&gt;一直走會看到上面有國道2(梅花2)的橋-&gt;準備左轉接龍安街-&gt;過文中路-&gt;接大興西路三段-&gt;直走 走右手邊 梅花2 接上南桃園交流道 上高速公路-&gt;經八德大湳出口-&gt;直走會接鶯歌系統(不會像回去程 有個出口走) 而是直走 這時會看到叉路-&gt;走左邊北上接梅花三(右邊是南下)-&gt;經三鷹(三峽和鶯歌出口)-&gt;樹林收費站-&gt;土城-&gt;中和出口走左邊-&gt;接中和交流道-&gt;接著慢慢靠向內側車道-&gt;頭上會寫 中和/板橋(要走這個)(右邊好像是寫秀朗橋 還有中正路 有點忘了)-&gt;接著就準備下去了-&gt;靠內側車站-&gt;左轉民樂路就到了&lt;br /&gt;&lt;br /&gt;＝＝＝回程＝＝＝＝＝＝&lt;br /&gt;沿著路線二回去 中華路上面看到陸橋 就左轉 接龍壽街 在大興西路三段 靠右北上(走右邊) 接梅花2 走到底接鶯歌系統 走左手邊接梅花3 三鷹(三峽 鶯歌出口)-&gt;樹林收費站-&gt;土城-&gt;中和出口走左邊-&gt;接中和交流道-&gt;接著慢慢靠向內側車道-&gt;頭上會寫 中和/板橋(要走這個) 直走 靠內側 下去到民樂路口左轉就到了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-7342638675702918011?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/7342638675702918011/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/06/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7342638675702918011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/7342638675702918011'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/06/blog-post.html' title='我家到我弟租房子的地方(近元智)'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jRLtRYQut2Y/Sj5JazVQSMI/AAAAAAAAAhg/N3mm0FZ7vDc/s72-c/%E5%8C%97%E5%8D%80%E8%B7%AF%E7%B6%B2%E5%9C%96.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2022172329778510133</id><published>2009-06-12T01:23:00.003+08:00</published><updated>2009-11-09T21:23:50.601+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian C++'/><title type='text'>symbian-傳訊息篇</title><content type='html'>iActiveSocket-&gt;Write( aText, iStatus );&lt;br /&gt;此寫法在藍牙或與java socket傳字串時，都可以用此寫法&lt;br /&gt;aText我定義為TDesC8，因此在傳遞訊息時，需將unicode轉換為UTF8&lt;br /&gt;TBuf&lt;40&gt; text(_L("outdoor"));&lt;br /&gt;這裡是相當於string text="outdoor"&lt;br /&gt;TBuf8&lt;40&gt; text8;//用來作為儲存UTF8用&lt;br /&gt;呼叫CnvUtfConverter::ConvertFromUnicodeToUtf8(text8, text);&lt;br /&gt;將text轉成UTF8並存入text8中，接著就可以用在Write()中，去傳遞字串&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2022172329778510133?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2022172329778510133/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/06/symbian_293.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2022172329778510133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2022172329778510133'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/06/symbian_293.html' title='symbian-傳訊息篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-6859272747795531642</id><published>2009-06-12T01:09:00.007+08:00</published><updated>2009-11-09T21:24:07.680+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian C++'/><title type='text'>symbian-修改來電模式篇</title><content type='html'>&lt;span style="font-size:130%;"&gt;詳細用法 請參考&lt;a href="http://wiki.forum.nokia.com/index.php/CS001294_-_Setting_the_profile_tones_in_active_profile_using_Profile_Engine_Wrapper_API"&gt;Setting the profile tones in active profile using Profile Engine Wrapper API&lt;/a&gt;&lt;br /&gt;特別注意&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;Capability&lt;/span&gt;以及&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;Library&lt;/span&gt;&lt;/span&gt; &lt;h2 style="font-weight: normal;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;Library Files 在資料夾group中的XXX.mmp(XXX指的是檔名)，點兩下打開，找下方標籤library 就可以增加了&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;Capability&lt;/span&gt; 則是同樣在此處，請看下方option的標籤，左上方就可以選擇&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;Capability&lt;br /&gt;&lt;br /&gt;更改來電模式方法 如下:&lt;br /&gt;//standard&lt;br /&gt;MProEngEngine* engine = ProEngFactory::NewEngineL();&lt;br /&gt;             CleanupReleasePushL(*engine);&lt;br /&gt;             engine-&gt;SetActiveProfileL(0);&lt;br /&gt;             CleanupStack::PopAndDestroy(1);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;                                                                                                                   &lt;div id="bodyContent"&gt;                                             &lt;h3 style="font-weight: normal;" id="siteSub"&gt;&lt;span style="font-size:130%;"&gt;//silent&lt;/span&gt;&lt;/h3&gt;&lt;h3 style="font-weight: normal;" id="siteSub"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;MProEngEngine* engine = ProEngFactory::NewEngineL();&lt;br /&gt;             CleanupReleasePushL(*engine);&lt;br /&gt;             engine-&gt;SetActiveProfileL(1);&lt;br /&gt;             CleanupStack::PopAndDestroy(1);&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;span style="font-size:130%;"&gt;//meeting&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;MProEngEngine* engine = ProEngFactory::NewEngineL();&lt;br /&gt;             CleanupReleasePushL(*engine);&lt;br /&gt;             engine-&gt;SetActiveProfileL(2);&lt;br /&gt;             CleanupStack::PopAndDestroy(1);&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;//outdoor&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;MProEngEngine* engine = ProEngFactory::NewEngineL();&lt;br /&gt;             CleanupReleasePushL(*engine);&lt;br /&gt;             engine-&gt;SetActiveProfileL(3);&lt;br /&gt;             CleanupStack::PopAndDestroy(1);&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;                                             &lt;!-- ============= --&gt;                                             &lt;!-- = Body Text = --&gt;                                             &lt;!-- ============= --&gt;                                             &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-6859272747795531642?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/6859272747795531642/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/06/symbian_12.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6859272747795531642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/6859272747795531642'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/06/symbian_12.html' title='symbian-修改來電模式篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-2358941655291473356</id><published>2009-06-12T00:46:00.005+08:00</published><updated>2009-11-09T21:24:26.615+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian C++'/><title type='text'>symbian-選單篇</title><content type='html'>MENU_ITEM { command = EChatSendMessage; cascade = r_bt_profilechange_menu; txt="Select profile"&lt;br /&gt;(ps:MENU_ITEM定義在*.rss底下，相關變數名稱則定義在*.rls底下  HandleCommandL 中switch case的CommandId 則是定義在*.hrh底下)&lt;br /&gt;&lt;br /&gt;語法的意思是說 這個menu上的按鍵相對應的名稱叫做EChatSendMessage，可以在XXXAppui.cpp(XXX指的是你的檔名)&lt;br /&gt;運用到 包括(1)HandleCommandL 處理手機上視窗介面的按鍵，按下去所對應的動作&lt;br /&gt;                  (2) else if ( iChatInet-&gt;IsConnected() ){&lt;br /&gt;SetItemDimmed( EChatSendMessage,  !iChatInet-&gt;IsReadyToSendMessage() );}&lt;br /&gt;                      這個意思是指 EChatSendMessage 這個按鍵 要不要出現 而後面若是True表示要隱藏，False表示要顯示，條件是當手機與server已經連線時，要不要隱藏&lt;br /&gt;&lt;br /&gt;當我在某個function中呼叫 SetState( EConnected ); 我就可以將介面固定在以上的表達式中&lt;br /&gt;&lt;br /&gt;cascade是要寫子選單的所用的方法，我們可以看到cascade = r_bt_profilechange_menu&lt;br /&gt;而r_bt_profilechange_menu需要另外定義在*.rss底下，如下&lt;br /&gt;RESOURCE MENU_PANE r_bt_profilechange_menu&lt;br /&gt;  {&lt;br /&gt;items =&lt;br /&gt;      {&lt;br /&gt;      MENU_ITEM { command = EChangeprofileg; txt = STRING_r_bt_changeprofileg; },&lt;br /&gt;      MENU_ITEM { command = EChangeprofiles; txt = STRING_r_bt_changeprofiles; },&lt;br /&gt;      MENU_ITEM { command = EChangeprofilem; txt = STRING_r_bt_changeprofilem; },&lt;br /&gt;      MENU_ITEM { command = EChangeprofileo; txt = STRING_r_bt_changeprofileo;}&lt;br /&gt;            };&lt;br /&gt;  }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-2358941655291473356?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/2358941655291473356/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/06/symbian.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2358941655291473356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/2358941655291473356'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/06/symbian.html' title='symbian-選單篇'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-1547452204729828048</id><published>2009-06-02T03:48:00.005+08:00</published><updated>2010-02-24T13:22:52.193+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian C++'/><title type='text'>如何產生sis</title><content type='html'>(如何產生 待補充 目前正在趕程式 等弄好 會來補充)&lt;br /&gt;若是出現Error : Cannot find file : ${EPOCROOT}\epoc32\release\gcce\urel\ChatEx.exe&lt;br /&gt;ChatEx_gcce.pkg(19) : error: file I/O fault&lt;br /&gt;可至/sis/.pkg檔案中，將路徑改成絕對路徑&lt;br /&gt;例如:"C:\Symbian\9.2\S60_3rd_FP1\Epoc32\release\gcce\urel\ChatEx.exe"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;產生後的sis檔 要上傳到此網站 認證 才能丟到手機安裝&lt;/div&gt;&lt;div&gt;裡面要填一個imei的數字 請按手機*#06# 就會跑出一段數字 輸入這段數字即可&lt;/div&gt;&lt;div&gt;&lt;a href="https://www.symbiansigned.com/app/page/public/openSignedOnline.do"&gt;Symbian signed網站&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-1547452204729828048?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/1547452204729828048/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/06/sis.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1547452204729828048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1547452204729828048'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/06/sis.html' title='如何產生sis'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-8830334946396152037</id><published>2009-05-29T21:51:00.004+08:00</published><updated>2009-11-09T21:24:59.878+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian C++'/><title type='text'>初探-symbian開發環境架設</title><content type='html'>跟隨開發我的論文程式，紀錄一下，留下一些足跡，便於自己以後忘記可以再來看看，也分享一些開發經驗給大家&lt;br /&gt;&lt;br /&gt;開發工具的主角，當然是Carbide c++囉，安裝順序如下&lt;br /&gt;1ActivePerl-5.6.1.635&lt;br /&gt;ActivePerl-5.10.0.1004(windows7 請用這個版本)&lt;br /&gt;2.SDK (針對你的需要 下載相對應手機的SDK)，例如我要開發N82，就下載S60 3rd FP1&lt;br /&gt;&lt;a href="http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/Platforms/"&gt;下載網址:http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/Platforms/&lt;/a&gt;&lt;br /&gt;3.安裝Carbide c++&lt;br /&gt;&lt;br /&gt;以上就是安裝順序，但特別要注意的是，你安裝的sdk位置需要與carbide c++的workspace，要同個槽，這樣就不會出現&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;BLDMAKE ERROR: Directory "\&lt;/span&gt;&lt;em style="color: rgb(255, 0, 0);"&gt;Symbian&lt;/em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;\9.2\S60_3rd_FP1\&lt;/span&gt;&lt;em style="color: rgb(255, 0, 0);"&gt;EPOC32&lt;/em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;\"&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;的問題，再來就恭喜，可以開始來玩玩symbain的程式開發囉&lt;br /&gt;&lt;br /&gt;若是跑模擬器出現&lt;/span&gt;&lt;/span&gt;Application closed: &lt;span class="highlight"&gt;ncnlist&lt;/span&gt; &lt;span class="highlight"&gt;KERN-EXEC&lt;/span&gt; 3 error&lt;br /&gt;可以用以下檔案覆蓋&lt;a href="http://wiki.forum.nokia.com/index.php/TSS000651_-_NCNList_KERN-EXEC_3_panic_when_starting_the_S60_3rd_Edition%2C_FP1_emulator"&gt;epoc32&lt;/a&gt;，覆蓋至 C:\Symbian\9.2\S60_3rd_FP1(預設路徑)裡面的epoc32資料夾&lt;br /&gt;&lt;br /&gt;平常找一些資料可以看&lt;a href="http://www.forum.nokia.com/"&gt; Nokia forum&lt;/a&gt;&lt;br /&gt;推薦書籍:S60 Programming. A Tutorial Guide&lt;br /&gt;基本上 Symbian c++ 可以看的書非常稀少 不是太舊 就是沒人寫&lt;br /&gt;國內是完全沒什麼論壇有在討論 因此強烈建議 一定要看英文 雖然有對岸論壇 也有在討論&lt;br /&gt;但是如果要觀念清楚的話 先看上面我推薦的那本書 一步一步來看 然後看看SDK的範例 以及Nokia forum的一些教學 慢慢的就會熟悉了  剛開始學可能會有點痛苦 因為很多東西 是C++裡面沒有的 多寫程式 多試幾次 這是不二法則&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-8830334946396152037?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/8830334946396152037/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/05/symbian.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8830334946396152037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/8830334946396152037'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/05/symbian.html' title='初探-symbian開發環境架設'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5855805980158341754.post-1666525648451529316</id><published>2009-05-24T21:17:00.001+08:00</published><updated>2009-08-24T03:36:16.907+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='旅遊'/><title type='text'>我家到北鼻家路線</title><content type='html'>＝＝＝去程＝＝＝＝＝＝&lt;br /&gt;中山路二段 祥興樓-&gt;好市多-&gt;家樂福(靠左)&lt;br /&gt;左轉景平路 接華中橋&lt;br /&gt;華中橋下 萬大路&lt;br /&gt;接著沿著康定路直走 會經過 艋舺大道 內江街 成都路&lt;br /&gt;康定路走到底 接環河南路 直走 環河北路一段到三段&lt;br /&gt;接延平北路六段靠左(前面洲美快速道路)&lt;br /&gt;左轉延平北路七段 再直走接延平北路八段 會經過富安國小&lt;br /&gt;過沒多久就到了&lt;br /&gt;&lt;br /&gt;＝＝＝回程＝＝＝＝＝＝&lt;br /&gt;走延平北路八段 -&gt;延平北路七段-&gt;延平北路六段(左邊洲美快速道路)&lt;br /&gt;環河北一段(靠右)&lt;br /&gt;於民生西路 右邊大稻程處 上環河快速道路(高架)&lt;br /&gt;經過忠孝橋-&gt;中興橋-&gt;華江橋-&gt;萬板-&gt;(下平面)興義街-&gt;德昌街(靠中線)&lt;br /&gt;上第二個高架前 走中線 最右邊是萬大路&lt;br /&gt;上環快(高架)-&gt;走右線(華中橋)&lt;br /&gt;上橋沒多久 右轉出口 接華中橋(有紅綠燈)&lt;br /&gt;下華中橋 經中山路 下一條連城路 靠右線 於家樂福右轉&lt;br /&gt;沿著連城路 靠右線 看到上面高架橋為中正路&lt;br /&gt;過中正路後 靠右線 轉新生街&lt;br /&gt;&lt;br /&gt;ps:&lt;br /&gt;看上方指示 就可知道下個出口&lt;br /&gt;平面道路 出口在左側&lt;br /&gt;高架道路 出口在右側&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5855805980158341754-1666525648451529316?l=kkwinds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkwinds.blogspot.com/feeds/1666525648451529316/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://kkwinds.blogspot.com/2009/05/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1666525648451529316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5855805980158341754/posts/default/1666525648451529316'/><link rel='alternate' type='text/html' href='http://kkwinds.blogspot.com/2009/05/blog-post.html' title='我家到北鼻家路線'/><author><name>皮皮</name><uri>http://www.blogger.com/profile/09995017058049153902</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_jRLtRYQut2Y/S9bq69CLpdI/AAAAAAAACes/t9TdR0TGuic/S220/DSC07216.JPG'/></author><thr:total>0</thr:total></entry></feed>
