中華電信延期太久遲遲不能跟google合作收費機制購買market上的軟體,
中華電信 和 遠傳電信 決定自己開設自己的 market(app store) 這兩家無獨有偶的都賣Android 和 windows moblie 軟體 (新聞網址) (遠傳s市集)
未來三年智慧行手機,將會達到市占率50%, 智慧手機,所以國內電信業者對於軟體的銷售也是非常積極投入,搶這塊大餅。
google 之前都是用佛心在經營market 所以下載收費軟體的人太少了,寫andorid的程式就像在做公益一樣,後來GameLoft因為andfroid 實在太佛心了賺不到錢,所以乾脆退出不玩了(http://android.cool3c.com/article/14446),這樣的消息無疑對開發者是一個疑慮,
大廠都不看好這個市場了,前景非常不樂觀。
現在中華電信 和遠傳電信推出這個收費平台,這代表開發者們我們辛苦的程式有機會回收實質的金錢效應,只要將我們開發的軟體放到這兩家平台上銷售,就可以得到 70%營收的回饋,
當然不是隨便寫寫就可以賺錢,拿android的玩家都是3C達人不是笨蛋,他們一定會去android market 那個佛心市場找找軟體,找到免費的為什麼還要花錢,所以眼前的競爭對手很明確就是要比market上的免費軟體來的實用,方便,好玩 ,新奇。
雖然失去了market的全球市場,不過這總是一個跳板機會,未來android market全球市場是否能夠興起付費軟體不確定,不過短期內google checkout收費機 應該是不會登入台灣,先把軟體開發在台灣這個市場測試自己的軟體,也營收一些金錢讓自己的辛苦有直接的回饋,不能餬口也喝口湯。
我是軟貓玩具(http://toimy.blogspot.com/)
或許你們會以為我是在幫這兩家電信打廣告,其實寫這個文章的理由是因為一個巴掌打不響,我也是一個軟體開發者,曾經在java game上賺過一些小錢但是大部分都被廠商抽走,自己只有回收15-20%,為什麼邀請大家一起來開發,這樣不是搶我自己的市場,答案是否定的,因為當這兩家電信上面的APP夠多,才會掀起使用習慣,國人自然習慣來這裡就是會找到比market上更多好用的軟體也甘願付費,現在的遠傳上面的軟體遊戲根本不到20個,程式加一加不到兩百個,如果我有android 一點都不想上去逛,沒有新軟體沒有什麼新意,更別說下載......,越多人開發雖然競爭的人多,但是下載人數更多:所以大家一起來開發,大家一起賺錢才能夠把這個遊戲規則建立起來,一起來寫Android 吧。
2009年12月2日 星期三
2009年11月26日 星期四
電子書
自行研發的電子書,物美價廉,一輩子只需要充一次電
解析度高達 1920000* 10800000
| ||||||||||||||||||||||||
|
2009年11月13日 星期五
開心瀏覽器
2009年10月1日 星期四
Android教學程式設計-音樂撥放第一彈 MediaPlayer
Android程式設計-音樂撥放第一彈 MediaPlayer
Android播放音樂很簡單,在SDK裡簡單了說明了如果要撥放音樂只需要簡單的程式即可達到撥放的功能,
可以播放mp3 wav AAC格式,播放資源檔裡的音樂只需要兩行
MediaPlayer mp = MediaPlayer.create(context, R.raw.檔名);
mp.start();
哇這麼簡單阿,那趕快來試試看,但是怎麼把音樂放到資源檔裡面呢,很簡單
只要打開程式專案的資料夾,例如我的專案放在
D:\Android\Code\Music1
打開資料夾,看到res資料夾,裡面就擺放著所有資源檔,
進入res資料夾,注意音樂或是音效統一要放在raw資料夾下面
預設是沒有這個資料夾的,所以我們建立raw資料夾,並將音樂檔案複製到這個資料夾下方
完成之後回到Eclipse,我們並沒有看到該檔案存在res下,那是因為還沒更新,
只要點選右鍵選擇Refresh,就會發現加到資源檔裡,例如我加入的是Hony.mp3
程式只要寫下
MediaPlayer mp = MediaPlayer.create(context, R.raw.Hony);
mp.start();
但是你會發現,奇怪為什麼R.raw. ? 沒有發現Hony這個檔案
這是因為R.java 不接受res檔名, 注意這裡很容易出錯
res下方的檔案名稱,只接受小寫的英文字母,和數字,不接受任何大寫的檔案
更別說中文名稱的檔案了,甚至數字開頭的檔案名稱他也不吃,這是需要注意的
將檔名改成hony.mp3後在點選 refresh 就可以看到hony.mp3 加到資源檔了.如果想要播放sd卡裡的音樂呢?
SDK寫
MediaPlayer mp = new MediaPlayer();
mp.setDataSource("路徑");
mp.prepare();
mp.start();
但實際把程式貼到Eclipse
mp.setDataSource("路徑");
mp.prepare();
會出現surround with try/catch
因為讀取了SD卡可能會有錯誤,所以要加入如果讀取錯誤該怎麼處理錯誤的
最少要寫成這樣才能執行
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource("路徑");
mp.prepare();
} catch (IllegalArgumentException e) {
} catch (IllegalStateException e) {
} catch (IOException e) {
}
mp.start();
現在還不知道路徑是什麼,簡單介紹一下Android為linux系統,Linux與windows系統的檔案系統有觀念上得不同
就是linux 的每個一個資料夾或是檔案,都是有權限的,最大權限的那個帳號叫做root,這個帳號可以對所有檔案進行
刪除或變更,但是我們並不是這個帳號,我們只是一般使用者,所以Android 上得大部分的檔案我們都沒有權限取存他
如果程式要存取檔案之前,都必需要有足夠的權限喔,模擬器現在有三大資料夾Data,SDcare,system
data 我們可以存取,但是sdcare為什麼不行喔,這真的很奇怪(因為建立AVD的時候沒有給予sd卡空間)(sdcard 的 permissions 只有d--------- 表示,沒有建立sdcard,所以不可以上傳任何資料)
但是怎麼把檔案上傳到模擬器的SD卡裡面呢?這裡有兩個問題,第一個問題,模擬器要模擬SD卡,所以在AVD設定時就要設定了,如下圖
第二個問題怎麼上傳。
第一步 設定一個擁有64M的模擬器
這樣我們的模擬器就有64M的 SD卡了
第二步 怎麼上傳檔案到模擬器呢,我們需要DDMS的幫助
DDMS簡單說,他是幫我們控制模擬器的程式,例如你需要模擬程式進行過程當中,有一通電話撥進來
或是程式執行時,有一通簡訊進來了,或是呢現在GPS的訊號是在經緯度多少,這一方面的手機控制,都是透過 DDMS
不過DDMS不只有這些功能,他主要幫助Debug的工具,所以需要和他博一些感情。
啟動DDMS在IDE的這個地方
然後我們透過DDMS這個按鈕將檔案上傳到sdcard裡面,注意上傳之前,如下圖在sdcard上點一下,
讓他呈現反白,如果沒有點選他,上傳的圖示就沒有作用.
目前我們只能傳到sdcard 還不能建立目錄,因為ddms並沒有很完整的檔案管理介面,所以下一章節我會介紹一下如何管理
還有這個章節如果一直沒有辦法把檔案傳道sdcard 那就先傳到data下面也可以,只是撥放路徑要改就可以,
看過下一章節或許比較可以控制模擬器上的檔案
上傳完成之後
我們把程式碼的路徑 改成 \sdcard\test.mp3
啟動程式, ㄟ ,美妙的音樂傳了出來, 真是感動阿
為什麼說很感動呢?因為其實為了撥放出這一段音樂, 我花了超過四個小時的時間尋找和探索如何把檔案上傳到sdcard 還有我一直以為路徑要寫成 file:\\\sdcard\test.mp3
錯誤連連,所以新手們,程式碼一直錯誤別害怕,這個都是因為我們還不習慣這個程式語言
不習慣這個介面,只要我們多摸他,多了解他的習性, 還是可以做出來,堅持的動力是因為
有很多人都走過向我們證明一定可以辦的到,只是需要熟悉 ,美妙的聲音 多Run幾次 真爽
雖然只有幾行的程式碼.
Android播放音樂很簡單,在SDK裡簡單了說明了如果要撥放音樂只需要簡單的程式即可達到撥放的功能,
可以播放mp3 wav AAC格式,播放資源檔裡的音樂只需要兩行
MediaPlayer mp = MediaPlayer.create(context, R.raw.檔名);
mp.start();
哇這麼簡單阿,那趕快來試試看,但是怎麼把音樂放到資源檔裡面呢,很簡單
只要打開程式專案的資料夾,例如我的專案放在
D:\Android\Code\Music1
打開資料夾,看到res資料夾,裡面就擺放著所有資源檔,
進入res資料夾,注意音樂或是音效統一要放在raw資料夾下面
預設是沒有這個資料夾的,所以我們建立raw資料夾,並將音樂檔案複製到這個資料夾下方
完成之後回到Eclipse,我們並沒有看到該檔案存在res下,那是因為還沒更新,
只要點選右鍵選擇Refresh,就會發現加到資源檔裡,例如我加入的是Hony.mp3
程式只要寫下
MediaPlayer mp = MediaPlayer.create(context, R.raw.Hony);
mp.start();
但是你會發現,奇怪為什麼R.raw. ? 沒有發現Hony這個檔案
這是因為R.java 不接受res檔名, 注意這裡很容易出錯
res下方的檔案名稱,只接受小寫的英文字母,和數字,不接受任何大寫的檔案
更別說中文名稱的檔案了,甚至數字開頭的檔案名稱他也不吃,這是需要注意的
將檔名改成hony.mp3後在點選 refresh 就可以看到hony.mp3 加到資源檔了.如果想要播放sd卡裡的音樂呢?
SDK寫
MediaPlayer mp = new MediaPlayer();
mp.setDataSource("路徑");
mp.prepare();
mp.start();
但實際把程式貼到Eclipse
mp.setDataSource("路徑");
mp.prepare();
會出現surround with try/catch
因為讀取了SD卡可能會有錯誤,所以要加入如果讀取錯誤該怎麼處理錯誤的
最少要寫成這樣才能執行
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource("路徑");
mp.prepare();
} catch (IllegalArgumentException e) {
} catch (IllegalStateException e) {
} catch (IOException e) {
}
mp.start();
現在還不知道路徑是什麼,簡單介紹一下Android為linux系統,Linux與windows系統的檔案系統有觀念上得不同
就是linux 的每個一個資料夾或是檔案,都是有權限的,最大權限的那個帳號叫做root,這個帳號可以對所有檔案進行
刪除或變更,但是我們並不是這個帳號,我們只是一般使用者,所以Android 上得大部分的檔案我們都沒有權限取存他
如果程式要存取檔案之前,都必需要有足夠的權限喔,模擬器現在有三大資料夾Data,SDcare,system
data 我們可以存取,但是sdcare為什麼不行喔,這真的很奇怪(因為建立AVD的時候沒有給予sd卡空間)(sdcard 的 permissions 只有d--------- 表示,沒有建立sdcard,所以不可以上傳任何資料)
但是怎麼把檔案上傳到模擬器的SD卡裡面呢?這裡有兩個問題,第一個問題,模擬器要模擬SD卡,所以在AVD設定時就要設定了,如下圖
第二個問題怎麼上傳。
第一步 設定一個擁有64M的模擬器
這樣我們的模擬器就有64M的 SD卡了
第二步 怎麼上傳檔案到模擬器呢,我們需要DDMS的幫助
DDMS簡單說,他是幫我們控制模擬器的程式,例如你需要模擬程式進行過程當中,有一通電話撥進來
或是程式執行時,有一通簡訊進來了,或是呢現在GPS的訊號是在經緯度多少,這一方面的手機控制,都是透過 DDMS
不過DDMS不只有這些功能,他主要幫助Debug的工具,所以需要和他博一些感情。
啟動DDMS在IDE的這個地方
然後我們透過DDMS這個按鈕將檔案上傳到sdcard裡面,注意上傳之前,如下圖在sdcard上點一下,
讓他呈現反白,如果沒有點選他,上傳的圖示就沒有作用.
目前我們只能傳到sdcard 還不能建立目錄,因為ddms並沒有很完整的檔案管理介面,所以下一章節我會介紹一下如何管理
還有這個章節如果一直沒有辦法把檔案傳道sdcard 那就先傳到data下面也可以,只是撥放路徑要改就可以,
看過下一章節或許比較可以控制模擬器上的檔案
上傳完成之後
我們把程式碼的路徑 改成 \sdcard\test.mp3
啟動程式, ㄟ ,美妙的音樂傳了出來, 真是感動阿
4: import java.io.IOException;
6: import android.app.Activity;
7: import android.media.MediaPlayer;
8: import android.os.Bundle;
10: public class Music1 extends Activity {
11: /** Called when the activity is first created. */
12: @Override
13: public void onCreate(Bundle savedInstanceState) {
14: super.onCreate(savedInstanceState);
15: setContentView(R.layout.main);
16: MediaPlayer mp = new MediaPlayer();
17: try {
18: mp.setDataSource("/sdcard/test.mp3");
19: mp.prepare();
20: } catch (IllegalArgumentException e) {
21: } catch (IllegalStateException e) {
22: } catch (IOException e) {
23: }
24: mp.start();
25: }
26: }
為什麼說很感動呢?因為其實為了撥放出這一段音樂, 我花了超過四個小時的時間尋找和探索如何把檔案上傳到sdcard 還有我一直以為路徑要寫成 file:\\\sdcard\test.mp3
錯誤連連,所以新手們,程式碼一直錯誤別害怕,這個都是因為我們還不習慣這個程式語言
不習慣這個介面,只要我們多摸他,多了解他的習性, 還是可以做出來,堅持的動力是因為
有很多人都走過向我們證明一定可以辦的到,只是需要熟悉 ,美妙的聲音 多Run幾次 真爽
雖然只有幾行的程式碼.
2009年9月14日 星期一
修改HelloWord的顯示字樣
上一篇文章中我們希望能夠透過程式來修改HelloWord的顯示字樣,
要修改HelloWord字樣之前,我們先介紹一下表單xml與程式之間的連結
到現在我們已經會產生新的表單,與表單上加入新的物件,但是我們還沒有辦法
與表單上得物件做任何互動,程式要與表單物件產生互動,慣例上(API SAMPLE都這麼做)
要先建立一個物件,並且將物與表單物件連結,寫法如下
物件類別 名稱;
名稱 = (物件類別)findViewById(R.id.表單物件名稱);
或是
物件類別 名稱 = (物件類別)findViewById(R.id.表單物件名稱);
例如按鈕物件
Button Bt1;
Bt1 = (Button)findViewById(R.id.Button01);
或是Button Bt1 = (Button)findViewById(R.id.Button01);
宣告Bt1為按鈕物件,連結表單上的Button01
顯示文字物件
TextView TV1 = (TextView)findViewById(R.id.TextView01);
宣告TV1為顯示文字物件,連結表單上的TextView01
圖形顯示物件
ImageView IV1 = (ImageView)findViewById(R.id.ImageView01);
宣告TV1為顯示文字物件,連結表單上的ImageView01
圖形按鈕物件
ImageButton IB = (ImageButton)findViewById(R.id.ImageButton01 );
宣告TV1為顯示文字物件,連結表單上的ImageButton01
當我們打下 Button Bt1 = (Button)findViewById(R.id.Button01);
會發現這一行程式的左方出現了一個燈泡,上面畫了x 表示這一行語法錯誤了
Eclipse是一套非常強大的程式語言編輯器,當你在寫程式的過程當中他就已經在幫你debug
以往我們開發程式,都必須到編譯時候,編譯器才會告訴我們那一行程式出錯,
Eclipse不用等到編譯時期,每當我們打完一些字,他就已經幫我們掃描我們打的語法是否正確
當我們打下按鈕物件,Eclipse立刻說這一行有問題,所以在左方打上一個x
Eclipse更貼心的是他會把他看到錯誤的地方,下標波浪紅線,滑鼠只要移動到該地方,
就會說明錯誤原因,並且提議修正方法(真是太貼心了,難以形容當初用筆記本開發程式的痛苦)
這個錯誤Button cannot be resolved to a type
找不到這個類別,所以他建議,第一項引入 Button 物件,第二項自行建立類別
我們選擇第一項,我們發現程式碼自動加入
import android.widget.Button;
(喔!我都快要尖叫了,這秘書真厲害,不知道他們會不會知道我要寫遊戲
,自動幫我寫下程式碼,我只要想就好了,哈哈哈)
事實上自動引入物件函數可以使用快速鍵 ctrl + shift + o可以達到一樣的功能,
還有一個自動完成的功能,例如你忘了指令findViewById 你打下findV時忘了後面怎麼打
這時候只要按下 alt + / 就會發現,哇,他幫我寫下了findViewById,真是太感動了
Eclipse感動的地方不只如此,我只能說這樣寫程式真是享受阿~~~~~~~~~~
關於layout上新增或刪除物件,R.java 並不會更新id裡的物件
當我們使用R.id.的時候Eclipse列出R.java裡所蒐集的表單物件,
但是當我們試著新增一個按鈕,R.java並沒有幫我們把按鈕的id加到R.java裡面
就算我們把R.java Refresh也並沒有看到ButtonXX新增到R.java裡面,
經過了一番嘗試之後,發現只要雙點 表單.xml就可以立刻更新R.java 的id
現在Bt1代表著表單上的按鈕,現在我們就可以透過Bt1對這個物件做任何控制,怎麼控制呢
有什麼可以控制呢? 我們打下Bt1. 哇跳出一堆選項這些選項,就是該物件可以使用的方法,
那麼多方法,一下子還真不知道該怎麼辦,其實我們只會使用到某些方法,不可以所有方法都瞭解
畢竟我們是創作程式,不是研究程式,今天我們使用一個最常用的吧
Bt1.setText("按我按我"); , 看字面上的字意就知道為設定按鈕文字。
我們看到,按鈕上得文字已經由原本的Button01改成按我按我,
那按下去之後,程式怎麼知道使用者按了這個按鈕呢?
如果需要物件回饋訊號讓程式判斷,就需要註冊事件,怎麼註冊呢
按鈕物件名稱.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
//按了之後的程式碼
}
});
一開始學習,會覺得如此的不習慣,但是,用久了就會發現這只是Android的程式特性
需要慢慢習慣,我寫了可以讓按鈕長大的方法,玩玩看挺好玩的。
講了一大圈,大該知道只要對HelloWord的TextView 使用 SetText() 就可以改變文字
但是使用 findViewById 卻沒有發現HellWord的任何TextView物件,這是因為HelloWord的
TextView物件,關閉了連結,我們需要自行輸入,打開main.xml 看到下方
少了一個屬性
android:id="@+id/TextView01"
把這一行加進去
然後雙點main.xml 讓R.java 更新,我們發現id裡增加了TextView01物件
接下來如上泡制一番,我們希望按了按鈕之後,helloword字樣變成 "按,按什麼按~"
程式碼如下
要修改HelloWord字樣之前,我們先介紹一下表單xml與程式之間的連結
到現在我們已經會產生新的表單,與表單上加入新的物件,但是我們還沒有辦法
與表單上得物件做任何互動,程式要與表單物件產生互動,慣例上(API SAMPLE都這麼做)
要先建立一個物件,並且將物與表單物件連結,寫法如下
物件類別 名稱;
名稱 = (物件類別)findViewById(R.id.表單物件名稱);
或是
物件類別 名稱 = (物件類別)findViewById(R.id.表單物件名稱);
例如按鈕物件
Button Bt1;
Bt1 = (Button)findViewById(R.id.Button01);
或是Button Bt1 = (Button)findViewById(R.id.Button01);
宣告Bt1為按鈕物件,連結表單上的Button01
顯示文字物件
TextView TV1 = (TextView)findViewById(R.id.TextView01);
宣告TV1為顯示文字物件,連結表單上的TextView01
圖形顯示物件
ImageView IV1 = (ImageView)findViewById(R.id.ImageView01);
宣告TV1為顯示文字物件,連結表單上的ImageView01
圖形按鈕物件
ImageButton IB = (ImageButton)findViewById(R.id.ImageButton01 );
宣告TV1為顯示文字物件,連結表單上的ImageButton01
當我們打下 Button Bt1 = (Button)findViewById(R.id.Button01);
會發現這一行程式的左方出現了一個燈泡,上面畫了x 表示這一行語法錯誤了
Eclipse是一套非常強大的程式語言編輯器,當你在寫程式的過程當中他就已經在幫你debug
以往我們開發程式,都必須到編譯時候,編譯器才會告訴我們那一行程式出錯,
Eclipse不用等到編譯時期,每當我們打完一些字,他就已經幫我們掃描我們打的語法是否正確
當我們打下按鈕物件,Eclipse立刻說這一行有問題,所以在左方打上一個x
Eclipse更貼心的是他會把他看到錯誤的地方,下標波浪紅線,滑鼠只要移動到該地方,
就會說明錯誤原因,並且提議修正方法(真是太貼心了,難以形容當初用筆記本開發程式的痛苦)
這個錯誤Button cannot be resolved to a type
找不到這個類別,所以他建議,第一項引入 Button 物件,第二項自行建立類別
我們選擇第一項,我們發現程式碼自動加入
import android.widget.Button;
(喔!我都快要尖叫了,這秘書真厲害,不知道他們會不會知道我要寫遊戲
,自動幫我寫下程式碼,我只要想就好了,哈哈哈)
事實上自動引入物件函數可以使用快速鍵 ctrl + shift + o可以達到一樣的功能,
還有一個自動完成的功能,例如你忘了指令findViewById 你打下findV時忘了後面怎麼打
這時候只要按下 alt + / 就會發現,哇,他幫我寫下了findViewById,真是太感動了
Eclipse感動的地方不只如此,我只能說這樣寫程式真是享受阿~~~~~~~~~~
關於layout上新增或刪除物件,R.java 並不會更新id裡的物件
當我們使用R.id.的時候Eclipse列出R.java裡所蒐集的表單物件,
但是當我們試著新增一個按鈕,R.java並沒有幫我們把按鈕的id加到R.java裡面
就算我們把R.java Refresh也並沒有看到ButtonXX新增到R.java裡面,
經過了一番嘗試之後,發現只要雙點 表單.xml就可以立刻更新R.java 的id
現在Bt1代表著表單上的按鈕,現在我們就可以透過Bt1對這個物件做任何控制,怎麼控制呢
有什麼可以控制呢? 我們打下Bt1. 哇跳出一堆選項這些選項,就是該物件可以使用的方法,
那麼多方法,一下子還真不知道該怎麼辦,其實我們只會使用到某些方法,不可以所有方法都瞭解
畢竟我們是創作程式,不是研究程式,今天我們使用一個最常用的吧
Bt1.setText("按我按我"); , 看字面上的字意就知道為設定按鈕文字。
我們看到,按鈕上得文字已經由原本的Button01改成按我按我,
那按下去之後,程式怎麼知道使用者按了這個按鈕呢?
如果需要物件回饋訊號讓程式判斷,就需要註冊事件,怎麼註冊呢
按鈕物件名稱.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
//按了之後的程式碼
}
});
一開始學習,會覺得如此的不習慣,但是,用久了就會發現這只是Android的程式特性
需要慢慢習慣,我寫了可以讓按鈕長大的方法,玩玩看挺好玩的。
3: import android.app.Activity;
4: import android.os.Bundle;
5: import android.view.View;
6: import android.widget.Button;
8: public class HelloWordActivity extends Activity {
9: /** Called when the activity is first created. */
10: @Override
11: public void onCreate(Bundle savedInstanceState) {
12: super.onCreate(savedInstanceState);
13: setContentView(R.layout.main);
14: final Button Bt1 = (Button)findViewById(R.id.Button01);
15: Bt1.setText("按我按我");
16:
17: Bt1.setOnClickListener(new Button.OnClickListener()
18: {
19: public void onClick(View v)
20: {
21: Bt1.setText("我被按了");
22: Bt1.setHeight(Bt1.getHeight() +10);
23: }
24: });
25: }
26: }
講了一大圈,大該知道只要對HelloWord的TextView 使用 SetText() 就可以改變文字
但是使用 findViewById 卻沒有發現HellWord的任何TextView物件,這是因為HelloWord的
TextView物件,關閉了連結,我們需要自行輸入,打開main.xml 看到下方
少了一個屬性
android:id="@+id/TextView01"
把這一行加進去
接下來如上泡制一番,我們希望按了按鈕之後,helloword字樣變成 "按,按什麼按~"
程式碼如下
1: package com.helloword;
3: import android.app.Activity;
4: import android.os.Bundle;
5: import android.view.View;
6: import android.widget.Button;
7: import android.widget.TextView;
9: public class HelloWordActivity extends Activity {
10: /** Called when the activity is first created. */
11: @Override
12: public void onCreate(Bundle savedInstanceState) {
13: super.onCreate(savedInstanceState);
14: setContentView(R.layout.main);
15: final Button Bt1 = (Button)findViewById(R.id.Button01);
16: final TextView TV1 = (TextView)findViewById(R.id.TextView01);
17: Bt1.setText("按我按我");
18:
19: Bt1.setOnClickListener(new Button.OnClickListener()
20: {
21: public void onClick(View v)
22: {
23: Bt1.setText("我長大囉~");
24: Bt1.setHeight(Bt1.getHeight() +10);
25: Bt1.setWidth(Bt1.getWidth() +10);
26: TV1.setText("按,按什麼按~");
27: }
28: });
29: }
30: }
哈哈我們已經成功的掌控,HelloWord 會不會有點囧呢,玩了這麼久,才只會玩HelloWord
事實上我們是再一點一滴,了解Eclipse的特性,和Android的程式架構.
2009年9月10日 星期四
關於程式架構
1: package HelloWord.com;我註解一下
3: import android.app.Activity;
4: import android.os.Bundle;
6: public class HelloWord extends Activity {
7: /** Called when the activity is first created. */
8: @Override
9: public void onCreate(Bundle savedInstanceState) {
10: super.onCreate(savedInstanceState);
11: setContentView(R.layout.main);
12: }
13: }
這是Helloword的程式碼? 他到底在說什麼呢,這幾行程式碼其實很簡單看起來很複雜
1: package HelloWord.com;
3: import android.app.Activity; //宣告
4: import android.os.Bundle; //宣告
6: public class HelloWord extends Activity {//程式活動範圍
7: /** Called when the activity is first created. */
8: @Override
9: public void onCreate(Bundle savedInstanceState) { //當Create時
10: super.onCreate(savedInstanceState);
11: //『Create』事件裡把參數savedInstanceStatePass給父物件作原始的處理
,不過如果這一常程式碼沒有感覺也沒有關係 當作沒看到,但是不可以幹掉......
12:
13: setContentView(R.layout.main);//把Main.xml 顯示出來
15: }
16: }
更簡化如下
1: /*
2: 宣告
3: 程式活動範圍
4: {
5: 當程式Create時
6: {
7: 把MAIN.xml顯示出來
8: }
9: }
10: */
ㄟ....原來HelloWord 這麼簡單阿,簡單來說這個程式什麼事情都沒作,只寫了一行程式碼
當Create的時候
setContentView(R.layout.main); <--把Main.xml 顯示出來。 看懂這裡的程式,心裡一定有很多疑問
- .如果說一個xml代表一個表單,是不是我建立一個表單的xml 那使用setContentView(我的比單) 就可以顯示新的表單呢?
- onCreate 叫做『當建立時候』那什麼時候會建立呢,程式啟動的時候嗎?
- 這是一個HelloWord我可以透過程式的方法去更改HelloWord的字樣嗎
- 除了onCreate 事件之外還有其他什麼事件?他們該怎麼打阿, 一個onCreate裡面我怎麼知道要打上super.onCreate(savedInstanceState); 這些該不會要我背起來吧....還是每次都要打一堆這些指令呢?
卻出現了一個錯誤,心裡忽然冒出一陣&︿*(%︿&
後來試了一下使用畫面上這個按鈕,就可以避開這個錯誤,增加Android xml 請使用這個按鈕
輸入檔案名稱,注意名稱必須 有.xml
又出現錯誤了
[2009-09-13 12:59:08 - HelloWord] res\layout\NewXml.xml: Invalid file name: must contain only [a-z0-9_.]
[2009-09-13 12:59:08 - HelloWord] Unknown error:
原來名稱只能有小寫和數字,改一下名稱,並且在新的表單中加入一些物件
我加入了兩個可愛的小時鐘
然後程式碼加入
setContentView(R.layout.newxml);
在main的下方,這樣代表先顯示main然後再顯示我們的表單
不過執行起來沒機會看到main就被我們的覆蓋了,下一章我們再來寫一個
按了按鈕就切換表單。
那問題 234呢....黑.....
2009年9月9日 星期三
從HelloWord改起吧
記得學習程式語言的開始,都是從修改範例開始
有時候根本不知道為什麼,只是知道這樣寫可以達到某種功能
接著就開始修改他,經由修改可以瞭解其中的意義,就算不瞭解,也知道怎麼去使用他
我們先從修改HelloWord開始玩起吧,這個程式執行之後畫面上就一個HelloWord
如果說那我把HelloWord填入一本小說的文字,那這個程式瞬間就變成一個小說閱讀器
不是超酷的嗎~~!!!!!
先到網路上找篇文章來貼吧
找到文章之後,打開程式碼HelloWord.java 哇勒 怎麼沒有看到任何Helloword的字眼
嗯我先稍微的介紹一下,Android的檔案架構吧,
左方我們看到
Src 這裡放原始檔的地方
res 存放資源的地方
資源什麼東西叫做資源呢
舉凡程式使用到的圖片 . 音樂 . 常數 . 還有表單 都放在這裡
表單又是什麼?表單多說無益,你點兩下main.Xml 喔你看到了程式執行畫面
是的 他就是執行畫面,上面可以擺按鈕,文字,還有多說無益,一樣的你把左邊的元件
拖到畫面中,他就會建立物件了,右邊的視窗顯示現在這個表單裡面所有元件的列表
建議你拖拉一個物件叫做AnalogClock 很誇張,一個時鐘ㄟ,這個物件真奇怪阿,哈哈
不過相信你很快就會跟我有一樣的感覺,我想要時鐘移動位置,
我想要按鈕放在我想要的地方,不能托移ㄟ,好難用阿...................
這個往後在介紹吧,先瞭解main,xml就是表單,當然一個程式可能有許多表單
你一定猜到,所有表單都會放在這裡,且他都是xml檔案
如何修改Hellword 剛剛看到Hellword在表單上了,可是我怎麼樣都不能去修改他阿,
點選了main.xml 只看到
android:text="@string/hello"
/>
這代表什麼意思呢,剛剛我們提到資源檔中,可以存放常數,@string/hello
就是提取常數字串名稱為hello中的文字
hello就放在strings.xml 中,打開string.xml可以使用他提供的修該方式,或是我們直接打開
strings.xml文件直接修改,貼上我們的文字吧,然後執行看看,
果真可以顯示好多文字,可是很快得就發現奇怪的地方,都黏在一起,不換行喔,且文字超出去的部份都看不到了,不過沒關係,我們成功的修改文字了。
我介紹一下,文字換行怎麼換
文字要換行需要打上 \n 有學過C語言 或是PHP 或是java都不陌生 這個叫做 跳脫字元
就是專門跳脫衣舞的字元,冷.......... 不是啦就是跳脫顯示而成為特殊用途的字元(自己亂掰掰的)
跳脫字元還有\t 可以打出Table \b返回 還有其他請用跳脫字元當作關鍵字Google一下就瞭解有哪些,多說無益,你試了就知道\什麼東西是作什麼用的,自己動作玩才記得牢固。
有時候根本不知道為什麼,只是知道這樣寫可以達到某種功能
接著就開始修改他,經由修改可以瞭解其中的意義,就算不瞭解,也知道怎麼去使用他
我們先從修改HelloWord開始玩起吧,這個程式執行之後畫面上就一個HelloWord
如果說那我把HelloWord填入一本小說的文字,那這個程式瞬間就變成一個小說閱讀器
不是超酷的嗎~~!!!!!
先到網路上找篇文章來貼吧
找到文章之後,打開程式碼HelloWord.java 哇勒 怎麼沒有看到任何Helloword的字眼
嗯我先稍微的介紹一下,Android的檔案架構吧,
左方我們看到
Src 這裡放原始檔的地方
res 存放資源的地方
資源什麼東西叫做資源呢
舉凡程式使用到的圖片 . 音樂 . 常數 . 還有表單 都放在這裡
表單又是什麼?表單多說無益,你點兩下main.Xml 喔你看到了程式執行畫面
是的 他就是執行畫面,上面可以擺按鈕,文字,還有多說無益,一樣的你把左邊的元件
拖到畫面中,他就會建立物件了,右邊的視窗顯示現在這個表單裡面所有元件的列表
建議你拖拉一個物件叫做AnalogClock 很誇張,一個時鐘ㄟ,這個物件真奇怪阿,哈哈
不過相信你很快就會跟我有一樣的感覺,我想要時鐘移動位置,
我想要按鈕放在我想要的地方,不能托移ㄟ,好難用阿...................
這個往後在介紹吧,先瞭解main,xml就是表單,當然一個程式可能有許多表單
你一定猜到,所有表單都會放在這裡,且他都是xml檔案
如何修改Hellword 剛剛看到Hellword在表單上了,可是我怎麼樣都不能去修改他阿,
點選了main.xml 只看到
/>
這代表什麼意思呢,剛剛我們提到資源檔中,可以存放常數,@string/hello
就是提取常數字串名稱為hello中的文字
hello就放在strings.xml 中,打開string.xml可以使用他提供的修該方式,或是我們直接打開
果真可以顯示好多文字,可是很快得就發現奇怪的地方,都黏在一起,不換行喔,且文字超出去的部份都看不到了,不過沒關係,我們成功的修改文字了。
文字要換行需要打上 \n 有學過C語言 或是PHP 或是java都不陌生 這個叫做 跳脫字元
就是專門跳脫衣舞的字元,冷.......... 不是啦就是跳脫顯示而成為特殊用途的字元(自己亂掰掰的)
跳脫字元還有\t 可以打出Table \b返回 還有其他請用跳脫字元當作關鍵字Google一下就瞭解有哪些,多說無益,你試了就知道\什麼東西是作什麼用的,自己動作玩才記得牢固。
2009年9月7日 星期一
Android如何載入別人程式碼或是範例程式
當我們第一次看到Android模擬器執行成功,想當然而會在模擬器上把玩一番
用他的瀏覽器上上網,感覺比電腦慢且螢幕不大不是很好用,但是還是上了一下網頁
看一下哪些網頁顯示正常,哪些他沒辦法. 試著打模擬器的電話,不過只有畫面,不可能撥出去
試著試著就想看看一些別人的範例,看看android可以寫出什麼東西,
SDK裡副了一些範例,其實我們寫程式的,有時候看到程式碼勝過千言萬語,
雖然看別人的程式碼是很痛苦的一件事情,廢話不多說,來吧欣賞別的作品了
阿勒....
Eclipse載入別人的專案,不太直覺,不是open喔, 是
[File->New->Android Project]
New Android Project 視窗中選擇
Create Project from existing source 在點選 Browse 開啟專案所在的資料夾,如果該資料夾裡面有完成的Android專案,就會發現在點選確定之後,Application name Project name 會自動填上名字
(SDK的範例放在 "你的sdk資料夾\platforms\android-1.5\samples )
打開範例就個人喜好亂看,但是我喜歡遊戲,推薦打開\LunarLander這個範例,
這是一個登入月球的遊戲,他是一個很玩整的遊戲喔,裡面有google大神教我們如何寫動作遊戲的
基礎架構呢,所以我們會往該遊戲繼續研究下去.
但是新手總是碰壁連連阿,好不容易可以載入專案,可是卻不能執行,
出現如下錯誤
no classfiles specified
Conversion to Dalvik format failed with error 1
遇到這樣的狀況,兩個方法可以解決
1.刪除gen下 的R.java 刪除後他會自動重新建立
2.關閉Eclipse然後再重新開啟
這樣就可以解決該問題,然後再度執行他, ya 成功了, android上的遊戲就是如此的美妙阿.......
想像一下他未來就可以在我的手機上執行耶,我可以創造任何程式,就像在電腦上執行一樣,
且我的程式可以讓全世界的人都看到喔,挖全世界ㄟ,這跟很多畫家的夢想一樣,我想要畫一副好大好大的畫,給全世界的人都看到,哈哈做完白日夢,更有想要繼續學習下去的動機,是的永遠都不要忘記學習跟創作是一件非常快樂的事情.......
用他的瀏覽器上上網,感覺比電腦慢且螢幕不大不是很好用,但是還是上了一下網頁
看一下哪些網頁顯示正常,哪些他沒辦法. 試著打模擬器的電話,不過只有畫面,不可能撥出去
試著試著就想看看一些別人的範例,看看android可以寫出什麼東西,
SDK裡副了一些範例,其實我們寫程式的,有時候看到程式碼勝過千言萬語,
雖然看別人的程式碼是很痛苦的一件事情,廢話不多說,來吧欣賞別的作品了
阿勒....
Eclipse載入別人的專案,不太直覺,不是open喔, 是
[File->New->Android Project]
New Android Project 視窗中選擇
Create Project from existing source 在點選 Browse 開啟專案所在的資料夾,如果該資料夾裡面有完成的Android專案,就會發現在點選確定之後,Application name Project name 會自動填上名字
(SDK的範例放在 "你的sdk資料夾\platforms\android-1.5\samples )
打開範例就個人喜好亂看,但是我喜歡遊戲,推薦打開\LunarLander這個範例,
這是一個登入月球的遊戲,他是一個很玩整的遊戲喔,裡面有google大神教我們如何寫動作遊戲的
基礎架構呢,所以我們會往該遊戲繼續研究下去.
但是新手總是碰壁連連阿,好不容易可以載入專案,可是卻不能執行,
出現如下錯誤
no classfiles specified
Conversion to Dalvik format failed with error 1
遇到這樣的狀況,兩個方法可以解決
1.刪除gen下 的R.java 刪除後他會自動重新建立
2.關閉Eclipse然後再重新開啟
這樣就可以解決該問題,然後再度執行他, ya 成功了, android上的遊戲就是如此的美妙阿.......
想像一下他未來就可以在我的手機上執行耶,我可以創造任何程式,就像在電腦上執行一樣,
且我的程式可以讓全世界的人都看到喔,挖全世界ㄟ,這跟很多畫家的夢想一樣,我想要畫一副好大好大的畫,給全世界的人都看到,哈哈做完白日夢,更有想要繼續學習下去的動機,是的永遠都不要忘記學習跟創作是一件非常快樂的事情.......
2009年8月31日 星期一
Android 開發環境安裝
開發Android需要下載三樣東西
Android SDK 1.5以上
http://developer.android.com/sdk/
Eclipse classic 3.5以上
http://www.eclipse.org/downloads/
JAVA SDK 6.0以上
http://java.sun.com/javase/downloads/index.jsp
AndRoid SDK 和 Eclipse classic 都是綠色版本不需要安裝,
只有Java SDK需要安裝,所以安裝步驟,
1.安裝 JAVA SDK
2.執行Eclipse
第一次啟動,Eclipse希望你選擇一個工作的資料夾路徑,
往後的產生的專案儲存到該資料夾下方.設定完成記得勾選
Use this as the default and not ask again .
這樣就不需要每次啟動都詢問一次了
建議不要使用預設的資料夾,預設會在C:\Documents and Settings\User名稱\workspace
病毒把作業系統弄壞了,要備份就不容易.
Eclipse安裝Android 套件
現在的Eclipse還不能開發Android,必須要透過網路安裝pluging讓Eclipse認識Android
點選 Help 下的 Install New Software
http://dl-ssl.google.com/android/eclipse/site.xml
取個名字然後按下確定
套件點選, 當然是全選, 接著下一步, 同意版權宣告, Finish 等待進度條完成工作
工作完成之後,Eclipse 會要求重新啟動軟體.
Android SDK路徑設定
重新啟動軟體,我們會看到Window 下面多了一個 Android AVD Manager .
不過還不能使用要縣設定Android SDK , 點選Window 下的 Preferences
出現Preferences 視窗後,點選Android 右方,出現sdk location: 這裡點選Browse 瀏覽
Android SDK解壓縮後的資料夾,完成後按下 OK . Eclipse就會開始安裝 Android SDK
模擬器的建立
Android的手機雖然都是相同的作業系統,但是硬體上有很大的差異,最基本的螢幕解析度上
有分,還有Android的版本別差異,這些都是需要考量與測試的,所以在建立模擬器上需要對模擬器
進行創立,其實還漫快樂的,因為只要告訴Android AVD Manager規格
他就幫我們建立好一隻府何規格的手機,如果在現實生活中要這樣的禮遇,就要拿很多小朋友來換吧.哈
如何建立模擬器呢,點選Window 下的 Android AVD Manager, 設定規格 按下Create AVD
他就乖乖的幫我生出一隻手機呢.
HelloWord專案建立
點選 File \New \ Android Project
輸入 Project name: 專案名稱
Application name: 程式名稱
Package name: 封包路徑 注意格式全部小寫並且為 xxx.xx.xx
Create Activity: 程式進入點程式自動產生
點選Finish之後 Eclipse 就會幫我們產生程式框架,我們只要執行他就可以看到Android 模擬器執行
注意模擬器啟動會有Android字樣大概一到五分鐘不等,他不是當機了,他只是在開機,別急著把他關掉
一開始我想,那每次編譯完之後都要開機三分鐘,那不用開發了,太慢了,後來發現只要不關掉模擬器
下次再按執行,模擬器不需要再開機,且會自動載入程式,這樣開發才順.
Android SDK 1.5以上
http://developer.android.com/sdk/
Eclipse classic 3.5以上
http://www.eclipse.org/downloads/
JAVA SDK 6.0以上
http://java.sun.com/javase/downloads/index.jsp
AndRoid SDK 和 Eclipse classic 都是綠色版本不需要安裝,
只有Java SDK需要安裝,所以安裝步驟,
1.安裝 JAVA SDK
2.執行Eclipse
第一次啟動,Eclipse希望你選擇一個工作的資料夾路徑,
往後的產生的專案儲存到該資料夾下方.設定完成記得勾選
Use this as the default and not ask again .
這樣就不需要每次啟動都詢問一次了
建議不要使用預設的資料夾,預設會在C:\Documents and Settings\User名稱\workspace
病毒把作業系統弄壞了,要備份就不容易.
Eclipse安裝Android 套件
現在的Eclipse還不能開發Android,必須要透過網路安裝pluging讓Eclipse認識Android
點選 Help 下的 Install New Software
http://dl-ssl.google.com/android/eclipse/site.xml
取個名字然後按下確定
套件點選, 當然是全選, 接著下一步, 同意版權宣告, Finish 等待進度條完成工作
工作完成之後,Eclipse 會要求重新啟動軟體.
Android SDK路徑設定
重新啟動軟體,我們會看到Window 下面多了一個 Android AVD Manager .
不過還不能使用要縣設定Android SDK , 點選Window 下的 Preferences
出現Preferences 視窗後,點選Android 右方,出現sdk location: 這裡點選Browse 瀏覽
Android SDK解壓縮後的資料夾,完成後按下 OK . Eclipse就會開始安裝 Android SDK
模擬器的建立
Android的手機雖然都是相同的作業系統,但是硬體上有很大的差異,最基本的螢幕解析度上
有分,還有Android的版本別差異,這些都是需要考量與測試的,所以在建立模擬器上需要對模擬器
進行創立,其實還漫快樂的,因為只要告訴Android AVD Manager規格
他就幫我們建立好一隻府何規格的手機,如果在現實生活中要這樣的禮遇,就要拿很多小朋友來換吧.哈
如何建立模擬器呢,點選Window 下的 Android AVD Manager, 設定規格 按下Create AVD
他就乖乖的幫我生出一隻手機呢.
HelloWord專案建立
點選 File \New \ Android Project
輸入 Project name: 專案名稱
Application name: 程式名稱
Package name: 封包路徑 注意格式全部小寫並且為 xxx.xx.xx
Create Activity: 程式進入點程式自動產生
點選Finish之後 Eclipse 就會幫我們產生程式框架,我們只要執行他就可以看到Android 模擬器執行
注意模擬器啟動會有Android字樣大概一到五分鐘不等,他不是當機了,他只是在開機,別急著把他關掉
一開始我想,那每次編譯完之後都要開機三分鐘,那不用開發了,太慢了,後來發現只要不關掉模擬器
下次再按執行,模擬器不需要再開機,且會自動載入程式,這樣開發才順.
訂閱:
文章 (Atom)