如何連上iTaiwan公共免費無線網路? / How to Connect iTaiwan Wi-Fi Hotspot?
4月 26, 2016 5 Comments Android OS/Android
如何連上iTaiwan公共免費無線網路? / How to Connect iTaiwan Wi-Fi Hotspot?
臺灣各個公家機關與交通樞紐處都有提供iTaiwan免費Wifi無線網路,可供大家解決臨時查找地圖、查詢公車資訊等上網需求。特別是沒有辦理行動網路方案的使用者來說,iTaiwan更是十分重要的無線網路來源。
但是iTaiwan無線網路跟一般家用網路不一樣,並不是連上SSID就可以直接開通網際網路,而是還要在網頁中登入帳號與密碼,這樣才能夠正常上網。
我為了讓家裡長輩瞭解如何使用iTaiwan,以下簡單介紹一下使用iTaiwan的網頁登入步驟。
(more...)用中華電信行動預付卡APP購買行動網路流量 / How to Buy Mobile Network In CHT Mobile Pre-Paid Card APP
4月 25, 2016 8 Comments Android OS/Android
用中華電信行動預付卡APP購買行動網路流量 / How to Buy Mobile Network In CHT Mobile Pre-Paid Card APP
對於使用量相當低的手機使用者,比起月租型方案,我更推薦大家使用預付卡。在4G的時代中,中華電信如意卡的通話費率不僅遠低於2G的費率,而且還可以在需要的時候臨時加購行動網路流量來上網。
購買行動網路很麻煩嗎?一點也不會。中華電信提供了APP「中華電信行動預付卡」,可以讓你直接在Android手機上購買行動網路流量。以下我們就來看看這是怎麽操作的吧!
(more...)Android手機如何關閉軟體更新通知 (須root) / How a rooted Android disable OTA notification
2月 23, 2016 0 Comments Android OS/Android
Android手機如何關閉軟體更新通知 (須root) / How a rooted Android disable OTA notification
通常已經root過的Android手機無法安裝官方的Android軟體更新功能(OTA, Over The Air technology),例如我的HTC Butterfly 2在root後就無法安裝Android 6的升級版本。一臺手機運作穩定的話,其實沒有更新的必要。然而軟體更新的通知卻會強制一直提醒使用者更新,非常地擾人。因此我們需要把這個通知關掉。
雖然網路上介紹很多修改檔案、新增檔案的作法,但我這篇要講的作法更簡單:直接結凍軟體更新。這個作法使用了Link2SD的功能,一般來說必須要root才能做喔。
(more...)
適合聽力練習的Android音樂播放器:Music Folder Player
1月 21, 2016 0 Comments Android OS/Android
適合聽力練習的Android音樂播放器:Music Folder Player
你有很多英文聽力練習用的錄音檔想要放在手機聽嗎?你覺得這些錄音檔太快了聽不清楚嗎?如果你也是Android的使用者的話,來試用看看這個Music Folder Player吧。
簡介 / Introduction
您可以在Google Play安裝Music Folder Player:
- Music Folder Player Free (免費)
- Music Folder Player Full (大約臺幣47元)
以下內容翻譯自Music Folder Player (MFP)在Google Play介紹:
Music Folder Player (MFP)是為了那些不喜歡以歌手(artist)、專輯(album)、曲目(track)或是播放清單(playlist)來播放音樂的人們而做的。如果您偏好使用資料夾(folder)來管理音樂,那MFP就是您需要的工具。
此外,MFP還有許多獨特的功能,包括:
- 符合Google的物質設計(Material Design) (布丁註:其實設計彷彿是Android 4)
- MFP會在您離開時記住上次播放的音樂進度位置。同時也會記得您每個資料夾最後播放的曲目。
- 您可以選擇「扁平」(flat)式地陳列每一個資料夾,或是保持原本的多層次資料夾瀏覽模式。
- 四個快轉按鈕(seek buttons)皆可自訂。這在聽podcasts或是有聲書(audio books)的時候非常方便。
- 等化器(equalizer):四種可自訂的設定、八種預先訂定的設定,像是強調低音(Bass Booster)、強調人聲(Vocal Booster)以及聚會(Party)設定。
- 虛擬的室內與迴響特效(Android 2.3)
- 速度控制與音高修正(pitch correction) (Android 4.2+):可以增加或降低podcasts或是有聲書播放的速度,但並不適合普通音樂。操作方式請看這個影片。
- 音量放大器(pre-amplifyer) (Android 4.2+):當音樂聲量太低的時候,可以用來增加它的聲量。
- 432 Hz 播放模式 (Android 4.2+):請看這篇文章的說明。
- 車用/運動模式:顯示大按鈕。
- 可以用雙指手勢改變聲量與左右聲道平衡:雙指放在左右,上下滑動調整聲量;雙指放在上下,左右滑動調整平衡。詳情請看此操作影片。
- 復原功能:如果您誤觸其他按鈕,您可以立刻復原。
- 隨機播放(shuffle)與重播(repeat)功能:長按播放(play)或暫停(pause)按鈕。
- 刪除(delete)與重新命名(rename)檔案:長按檔案。
- 睡眠計時器(sleep timer)
- 耳機按鈕控制:點兩次或三次都可以設定不同功能。
- Last.fm音樂推薦 (Simeple Last.fm Scrobbler)
- 搜尋檔案或資料夾
- 分享檔案
可惜的是,免費版本MFP的廣告有點多。不僅播放器下面的廣告條太接近播放按鈕,導致容易被誤觸之外,離開MFP的時候也常常出現全頁廣告。
如果你很滿意MFP的功能的話,那不妨也可以到這裡買它的付費版本,把廣告去掉吧。
如何調整音樂播放的速度? / How to change the playback spped?
MFP有很多功能,其中我覺得最特別的是「調整速度」的這項功能。如果要試著一個字一個字仔細聽懂廣播、有聲書的內容,而又無法接受原本音樂檔案速度的話,那這個功能可真的能夠幫得上大忙。不過前提是這項功能只有Android 4.2以上的版本才能使用,舊版本的使用者可能就得令尋其他途徑了。
不過這個功能隱藏在MFP的深處,啟用跟關閉都有點麻煩。以下我將介紹如何開啟這個功能。
首先,我們進入MFP的播放介面,然後按下控制鍵右邊的功能按鈕。
我們會看到設定的畫面。這個畫面很長,讓我們往下拉。
讓我們找到「ADVANCED (EXPERIMENTAL!)」,先打開「Experimental effects」這個功能,然後下面的「Speed」(播放速度)跟「Pre-amplifier」(音量放大器)就可以調整了。
預設的「Speed: 1.0 X」表示原始速度,最慢可以調整到0.3倍,最快則可以調整到2倍。我個人覺得0.8倍聽起來很不錯,可以一個字一個字聽得清楚。特別要稱讚MFP的是他還有做到音高修正,即使速度放慢,音高也不會隨之降低,聽起來還是跟原本的人聲差不多。
不過可惜的是,MFP並沒有歌詞播放的功能。如果想要在播放聲音時搭配閱讀全文的話,可能就要找找其他工具了。
(more...)如何在PhoneGap Build上建制可發佈的Android APK: 建立簽署檔案 / How to build releasable Android APK in PhoneGap: Create a keystore file
7月 24, 2015 6 Comments Android OS/Android Programming/APP Programming/PhoneGap
如何在PhoneGap Build上建制可發佈的Android APK: 建立簽署檔案 / How to build releasable Android APK in PhoneGap: Create a keystore file
在「從網頁開發到Android APP行動應用程式開發」演講中,我講到如何用PhoneGap Build開發可以發佈到Google Play的APP的內容。由於演講時間限制的關係,當天我沒有細講到這裡。這一篇則是介紹如何建制可發佈的APP的做法。
有簽署的APK跟簽署檔案 / Signed APK and keystore
用PhoneGap Build製作可以安裝在Android上的應用程式套件檔案:APK,是一件很簡單的事情。但這樣只能作出偵錯用的APK (debug version),而不是發佈版本的APK (release version),只有可發佈版本的APK才能上架到Google Play。
要讓APK從偵錯版本變成發佈版本,也就是讓它變成有簽署的APK,則必須加入簽署檔案(keystore)。這個簽署檔案可以在自己的電腦上產生,只需要安裝JDK環境即可。
以下內容我分成二個階段來介紹:先在本機段製作簽署檔案,然後再到PhoneGap Build中上傳簽署檔案並解密。
Phase 1. 製作簽署檔案 / Create keystore
1-1. 下載與安裝JDK / Download and install JDK
要製作簽署檔案必須要有JDK的環境。Java Development Kit下載位置是http://www.java.com/en/download/index.jsp 。至於安裝與配置方式就跟一般的Java安裝一樣,可以參考這篇「JDK 在 MS-Winsdows 的安裝、設定」來進行設定。
1-2. 下載並執行keytool_generator.bat / Download and excute keytool_generator.bat
簽署檔案的製作工具是keytool,詳細做法可以看「[教學]簽署應用程式 sign APK 發佈 Android App」這篇,但我覺得這樣的程序太過繁雜,所以把做法包裝成成一個bat檔案以方便執行:
- 下載keytool_generator.bat:請直接按右鍵下載內容即可。
1-3. 輸入專案名稱 / Alias name
開啟keytool_generator.bat之後,會跳出命令提示資源。請輸入您的專案名稱(alias name),例如「phonegap_build_camera」,然後按下enter鍵。
1-4. 輸入簽署檔案的密碼 / Password of keystore
接著要輸入兩次簽署檔案的密碼。
1-5. 輸入其他資訊 / Contact information
全部都可以直接按enter略過,但是最後的「Is CN=…[no]: 」的問題則要輸入「Yes」確認。
1-6. 輸入金鑰的密碼 / Password of key
剛剛是設定簽署檔案的密碼,現在則要設定金鑰的密碼。這時候請直接按enter鍵即可設定等同於簽署檔案的密碼。
結果的簽署檔案 / Result
最後就可以看到keytool_generator.bat旁邊多了一個簽署檔案,副檔名為「keystore」,例如「phonegap_build_camera.keystore」。
Phase 2. PhoneGap Build使用簽署檔案 / Use keystore in PhoneGap
2-1. 進入PhoneGap的Edit account / Enter edit account page
接著你要在Adobe PhoneGap Build註冊一個免費帳號,然後登入之後到Edit account頁面。網址是:https://build.phonegap.com/people/edit
2-2. 上傳簽署檔案 / Upload keystore
接著在Android底下點選「add a key」按鈕,在title跟Alias的地方都輸入剛剛輸入的專案名稱(Alias name),例如「phonegap_build_camera」,然後選擇簽署檔案(keystore),按下「submit key」上傳。
2-3. 解鎖簽署檔案 / Unlock key
簽署檔案預訂是鎖起來的,要使用簽署檔案之前必須先解鎖。注意到該簽署檔案右邊有個黃色的鎖,點下去之後輸入剛剛設定的簽署檔案密碼,按下「submit key」解鎖。
這是已經解鎖的樣子。
2-4. 建置APK時設定簽署檔案 / Select key to build apk
在使用PhoneGap Build建制APK的時候,可以從「No key selected」下拉式選單中選擇剛剛上傳的簽署檔案。選擇之後apk會自動重新建置(Rebuild)。
有選擇簽署檔案的話,才能夠建制發佈版本的APK。你可以點選「apk」下載按鈕下載apk,然後就可以到Google play Developer Console上架了。
(more...)中華電信學院微課程演講:「從網頁開發到Android APP行動應用程式開發」 / Speech at CHT School: “From Web to APP: Developing Android APP”
中華電信學院微課程演講:「從網頁開發到Android APP行動應用程式開發」 / Speech at CHT School: “From Web to APP: Developing Android APP”
這個月受邀到中華電信學院演講一門微課程「從網頁開發到Android APP行動應用程式開發」。這是給有HTML5基礎的前端網頁設計師開發Android APP的教學,講述AppsGeyser跟PhoneGap (Apache Cordova)的開發方法。
課程簡介 / Introduction
本次微課程將介紹如何從前端網頁開發技術進入到行動應用程式(APP)開發的領域,特別適合具備前端網頁開發能力的工程師來聆聽。演講內容將概述各種行動應用程式開發的技術,再聚焦到以網頁技術來開發行動應用程式的兩種方法:AppsGeyser 與 PhoneGap。只要會製作行動版網頁,聽完這個演講,您就能夠製作可以上架的行動應用程式!
大綱 / Outline
- 前言:我是前端網頁設計師
- 概論:要如何製作行動應用程式APP?
- 樣板型APP開發:AppsGeyser教學
- 網頁型APP開發:PhoneGap簡介
- 實作:PhoneGap開發
投影片 / Slide
投影片下載:Google Drive、OneDrive、Box.net、SlideShare
備註:由於當天演講時間太短,所以投影片有所刪減,這一份則是完整的版本。
演講的重點 / Points of this speech
這次的演講跟以往大家講述APP開發的內容相比,有幾個比較值得一提的地方。
關於APP開發的分類 / About APP development classification
以往大家對APP開發方法的分類只有三種:「原生型APP」、「網頁型APP」、「混合型APP」。但其實這是從PhoneGap的觀點來看APP開發方式,並不能夠含括所有的APP開發方法。
Wikipedia的Mobile Application development給我們一個比較完整的分類:前端型、後端型以及系統型。而前述的三種分類則是隸屬於前端型開發中。而我又進一步將前端型開發方式分類成四種開發方法:
- 原生型APP:以該平臺開發方式開發,例如Android用Java搭配Android Studio開發。
- 網頁型APP:以製作網頁的思維建立APP,例如PhoneGap。
- 其他型APP:以獨特的程式語言與IDE來進行開發,強調跨平臺或能夠支援複雜應用的開發方式。我將NativeScript歸類於其他型APP而不是網頁型APP,儘管它使用的是JavaScript,但建制的思維並不是寫網頁,而是一種獨立的開發方式。
- 樣板型APP:強調超簡單工具就能製作APP,像是APP Inventor。但是限制也很多。
我試著用這個分類來讓學員瞭解自己適合的開發方式,讓大家知道原來除了原生型開發方法之外,還有很多其他的途徑可以開發APP。
以PhoneGap Build的封裝方式 / Create APP by PhoneGap Build
市面上已經有很多書籍在講PhoneGap開發了,那我講這個PhoneGap開發豈不是再次老調重彈?實際上我這次講得內容並不是單純的PhoneGap開發,而是使用Adobe PhoneGap Build來封裝APP。
如果你仔細比較一下PhoneGap的開發方式,會發現他要做的前置作業就跟開發原生型APP一樣複雜。實際上也是如此,因為PhoneGap就是基於原生型APP之上在添加的功能。如果要開發Android的APP,就要先佈置Android的開發環境;如果要開發iOS (iPhone或iPad)的APP,就要先佈置iOS的開發環境。教過MIT APP Inventor之後,我覺得這種要花很多時間才能進行開發的方式並不利於教學。
而這個Adobe PhoneGap Build則是一種雲端服務的開發環境。我們只要把PhoneGap專案準備好、上傳,就能夠封裝成各種平臺的APP。這大幅度地降低了開發環境的配置需求,只要瀏覽器、能夠撰寫HTML的工具(像是ATOM),我們就能夠開始開發了。
然而,PhoneGap專案跟上傳到PhoneGap Build的專案內容其實有很多的差異,但是卻很少人在介紹如何製作PhoneGap Build的專案。尤其是加入簽署檔案(.keystore)讓APP可以上架的這些細節更是很少人提及,這也是我這份演講比較獨特的地方。
行動網頁框架的佈景主題 / Mobile web framework’s theme
這篇演講介紹了jQuery Mobile、Dojo Mobile跟Sencha Touch這三種行動網頁框架。但我想要強調的是「佈景主題」(theme)的問題,也就是如何能在該平臺上呈現該平臺的使用介面的能力。我讚賞Sencha Touch對於佈景主題的自動偵測與切換,在Android上他是Holo Dark的風格,在iOS上則能夠維持iOS的風格。
這種能夠相應於該系統而自動切換佈景主題的功能,對於使用者體驗(User Experience, UX)來說至關重要。這表示使用者可以在自己的系統上操作熟悉的UI,而不是APP特立獨行的佈景主題。
Dojo Mobile跟Sencha Touch都有不同的主題可以套用。雖然jQuery Mobile也可以找到一些第三方主題使用,但比較麻煩。至於其他的Bootstrap、Semantic UI、Ionic、Angular Mobile等行動網頁框架就更是如此。
不過實際開發時,應該還要考慮到這些框架跟後端資料庫做交換的方式、是否能夠整合其他JavaScript函式庫、或是語法是否容易理解等問題才是。也許隨著經驗越多,這個看法也會隨之改變吧。
結論:更專業的教學內容 / Conclusion: An advanced speech
在準備這個演講的同時,我也一併在進行MIT APP Inventor的家教。我本來以為這兩件事情可以合併在一起做,但仔細想想之後還是放棄這個念頭。APP Inventor是給不會寫程式的人來學習的,做完的成果難以到實際應用的層次。這次的演講是給擁有網頁基礎的人來聽的,主要要講網頁技術跟APP之間的關聯。所以最後我是分開來做這兩件事情。
這個微課程只是一個先導性的簡介,之後會在安排一整天的工作坊,讓學員能夠一步一步地製作行動版網頁、以PhoneGap Build封裝,然後到Google Play上架。
儘管這次的教學跟我的專業有很密切的關係,而學員的程度也都很高,講的內容也可以深入不少。但我自己也擔心起實務經驗上是否有所不足,畢竟我跟專門開發APP的工程師相比,還是有很大的差距(這就是學界與業界的差別啦)。雖然是這樣說,懂得如何做一個非常複雜APP的知識,跟如何讓學員瞭解製作APP的教學方法,這兩件事情仍然是不太一樣。
接下來要努力準備工作坊的內容,加油!
(more...)以MIT APP Inventor教程式的感想 / Thoughts about teaching APP
7月 24, 2015 0 Comments 教學課程 程式寫作 Android OS/Android
以MIT APP Inventor教程式的感想 / Thoughts about teaching APP
最近因為因緣際會,我接了一個教國中生寫程式的任務,而我選擇的教學內容是以MIT App Inventor 2來教APP。雖然因為時間的關係,這門家教課程只有上短短三次就結束了。不過這次的教學卻讓我有不少值得反思的地方。
選擇以APP來教學的理由 / Why I select to teach make APP as programing
C++或Java是程式語言課程的基本教學內容,但老實說,我覺得學習程式的過程是乏味的。先別說光是佈置環境、編譯、執行等枯燥的動作會讓人覺得疲憊(實際上現在寫程式也一樣會盡力縮短這種編譯與執行的時間,而想辦法讓整個過程自動化),以傳統語言寫出來的入門內容也只有在命令列中單純的訊息輸入與輸出。相較於命令列,我還是覺得能夠看到具體的介面、能夠互動,才讓人有種「創造」程式的感覺。
(Minecraft Will Be Used To Teach Kids To Code, http://www.ubergizmo.com/2015/06/minecraft-teach-kids-coding/)
「創造」是寫程式最大也是最終的樂趣。不管是寫一個能夠協助日常事務繁複工作的程式,還是寫一個能夠刺激感官的遊戲,它們都是程式。
而且更重要的是,相較於一般被認為是「創造」的藝術技藝來說,以程式來進行創造的成本極低:我們不用買畫具,不用擔心耗材,只需要一台普通的電腦,就能夠開始寫程式。
(備註:其實寫程式不用買很昂貴的電腦。就算電腦上插了一張萬把塊的顯示卡,對小程式來說也沒有什麼差別,所以買便宜電腦就好,貴的電腦很多時候是玩遊戲要用的而已。)
但是傳統的程式語言課程很難讓人體會到「創造」的實體感,入門課程的內容也很難讓人有實用的感覺。舉例來說,能夠迴圈印出各種形狀的「*」,其實是表示程式邏輯有一定基礎的成果。但對很多學生來說,這很難被視為是平常會有用的技能。這跟目標用程式來解決各種問題的思維其實有很大的偏差。
因此,面對上面交待要教程式的任務,我不是教傳統的C++或Java,也不是教網頁(那也很不錯,可是要做到互動性很難),而是教APP。而且不是按照官方規定的原生型APP,是MIT麻省理工學院為了程式教學開發的MIT APP Inventor 2。
教材的選擇 / Select Teaching Material
學習寫程式或是學習APP,他們都是一種應用型的技能。比起了解程式所有的功能,我認為了解如何「做出目標程式」所需要的功能還來的重要。這不僅是我們教課的時間並不多,也是遵循了我之前的說法,能創造出結果才是最令人興奮的事情。
因此我在選擇教科書的時候也是用這個想法在挑選。最後選擇的是蔡宜坦老師在2014年撰寫的「超圖解! App Inventor 2手機程式設計教本」。
值得一提的是,隨著MIT APP Inventor 推出中文介面,這本書也有中文版的教學。但是我認為學程式本身也是一種英文學習(甚至可能是程式設計師唯一會的英文),這也當作課堂內容之一來教比較好。
這本書的組成包括了17個章節,除了序言之外,大部分章節都會實際作一個APP出來,這部分的確是我想要的。然而開始教了之後,才發現各章節內容都是先講解功能、再來說明APP的製作,這就跟我想要的有點落差。所以雖然最後我還是拿這本來教,但是教學內容則是再做調整就是。
課程與成果 / Lesson and result
由於教課的時間並不長。原本預定四堂課,因為種種原因最後只剩下三堂課。我原本就不覺得能夠教完所有章節,實際上也沒那個必要,因為我的重點在於教程式的相關概念,像是變數、迴圈、事件,至於GPS、相機等只會用在手機上的功能就不是很重要。
Lesson 1. 貓叫 / Cat meows
第一堂課教的是事件與聲音播放的應用。
第一個範例就是貓叫聲啦,點下畫面的貓就會叫一聲「喵」。這個簡單的程式是APP Inventor的範例,在Google Play上也可以下載。
- Pet the Kitty: https://play.google.com/store/apps/details?id=appinventor.ai_all4him.HelloPurr
(還有另一個一樣的APP,賣30元XD)
基於對停車場的守護神:薑黃喵的敬仰,我也做了另一個薑黃喵的變體版本:換一張薑黃喵的照片上去。
之後我們做了小鋼琴的APP,點下指定的琴鍵發出聲音,而琴鍵在點下去時會更換圖片,這也是課本的教學內容。
Lesson 2-1. 溫度轉換 / Temperature Convert
這堂課是要教基本的運算式與邏輯判斷的應用。
這是一個攝氏轉華氏的應用,最後我們還加入了Slider (拉條)來輸入攝氏溫度。
Lesson 2-2. 畫圖 / Drawing
這堂課則是教Drawing and Animation中的Canvas應用。
可以選擇顏色、擦拭、繪畫的種類、清除版面,並將畫圖存檔後利用Share的功能傳到其他APP上,例如在Facebook上發言。
Lesson 3. 擲骰子 / Dice
這次的課程是教陣列與從陣列中取出隨機變數。
我們先做一個陣列,決定晚餐要吃什麼,然後隨機取出結果來抽籤。抽籤時用到了加速感應器(AccelerometerSensor),讓抽籤感覺比較有趣。
這個則是用骰子來抽籤,再應用之前教的邏輯判斷數字大小,搭配聲音播放結果。因為是最後一堂課,所以我加入了之前教的功能,可惜實際上沒能教到這裡就下課了。
APP Inventor的優點與侷限 / Advantages and Limitation of APP Inventor
在這幾堂課的教下來,第一個感覺是驚訝於APP Inventor的容易上手。
這並不只是在講APP Inventor是用拖拉元件跟拼圖就能組成一個APP的製作方法,而他的環境部屬也一樣地簡單。
要開始使用APP Inventor,我們要做的事情只有:
- 開啟Google Chome瀏覽器,用Google帳號登入APP Inventor:http://ai2.appinventor.mit.edu/
- 手機上安裝MIT AI2 Compainon:https://play.google.com/store/apps/details?id=edu.mit.appinventor.aicompanion3
- 開始製作APP,並用Connect中的AI Companion跟手機上的AI2 Companion配對,就可以看到成果。
照正規製作Android的方法,大概要下載超過2GB的檔案,然後要花上1個小時左右來安裝、設定,非常麻煩。APP Inventor將這些繁雜的環境部屬工作降到最低,實在是令人讚歎。
功能限制 / Limitation of Functions
但是APP Inventor的限制也很明顯,就是我們除了APP Inventor提供的功能之外,幾乎很難使用其他的功能。
舉例來說,本來我想要用APP Inventor來開發複雜的網路應用程式。一般而言我們都會需要用關聯式資料庫在背後儲存複雜的資料,但是APP Inventor的網路資料庫TinyWebDB只能做到儲存值、取出值兩種動作,而不能像執行SQL一樣的複雜指令。這就會讓實際應用有很多限制。
另一個限制就是APP Inventor的解析度是固定的。就算是在尺寸比較大的平板電腦上,他的解析度也會拉大到跟手機一樣。這就很難做到類似RWD的設計。
雖然APP Inventor很容易上手,但是要拿來開發正式的APP,還是要先三思啊。
結論:教程式果然很難 / Conclusion: It is difficult to teach programming
我在這短短的三次課程中以MIT APP Inventor教了程式的概念。但實際上我覺得成果並不是很理想。這最大的原因在於我仍然沒有把握程式教學的精髓,因此很難有效率地把程式的概念教給學生。
我們在寫程式時,大部分的概念都已經是固定成熟了,就像是騎腳踏車、游泳一樣地自然,通常不會去深入思考自己到底怎麼去理解這件事情的。
以「迴圈」為例,for的概念在限定條件下重複固定的步驟,對懂得人來說很簡單,但是對不懂的人來說,這種非線性的敘述是很難理解的事情。我一時間也沒能好好地把這個概念講得很清楚。
儘管很多細節沒能帶好,但是APP Inventor透過簡單的步驟就有成果展現,符合我對程式學習的目標。看到學生玩著自己做的APP,然後再加上我教的功能,讓APP變得更多功能,而從中找到寫程式的樂趣,這就是我覺得寫程式最令人開心的地方。
未來如果又要教寫程式,我想我會繼續使用MIT APP Inventor,然後再把概念的部分講得更清楚吧。
(more...)解決Android上Google日曆同步錯誤問題:安裝Google的Googlde日曆 / How to solve Google Calendar sync error in Android: Install Google Calender APP
1月 04, 2015 0 Comments Android OS/Android
解決Android上Google日曆同步錯誤問題:安裝Google的Googlde日曆 / How to solve Google Calendar sync error in Android: Install Google Calender APP
我最近發現我的Android裝置都發生了Google日曆同步錯誤的問題,讓我無法把電腦上新增的時間同步到手機與平板上。但是安裝了Google自己推出的Google日曆之後,日曆同步就恢復正常了。
Recently my Android devices got calendar sync error. But after I installed Google Calendar APP, calendar sync is going working.
我習慣用電腦或平板電腦編輯行事曆,然後手機負責當鬧鐘。平時使用的行事曆管理工具是Digical,因為它介面簡單好操作,也可以設定通知或電子郵件提醒,一直很深得我心。
可是最近在電腦上跟平板上設定的事件,卻奇怪地沒能同步到手機上。檢查了「設定 」→「帳號」→「Google」→我的帳號→「同步化行事曆」的時候,卻發現行事曆同步出現了異常的符號。同步的時間也跟其他服務有明顯的落差,我的平板最後同步時間甚至是到一個月以前。即使我手動啟動同步,行事曆也無法順利更新,非常奇怪。
後來看網路上的建議是說需要安裝Google自己推出「Google日曆」,這樣行事曆才能正常同步。
我抱著半信半疑的心態安裝了Google日曆,並跳過簡單的使用操作,進入到了Google日曆操作畫面。由於行事曆尚未順利同步,所以這時候Google日曆上也沒有我完整的行事曆。
接著再回到設定同步化行事曆畫面,手動進行同步。這次同步時不會馬上就發生異常而停止,而是會持續連線好長一段時間。過了許久之後,行事曆就正常同步了。
不能移除Google日曆 / If Uninstall Google Calendar
後來我想說我平時不習慣Google日曆太過花俏的介面,還是主要使用Digical,索性乾脆把Google日曆移除掉好了。
結果移除掉之後,行事曆又無法同步了!真的是非得要安裝Google日曆不行。Google現在的同步服務做的真的很奇怪啊。
還是不能同步? / Still Sync Error?
用了幾天之後,即使安裝著Google日曆,赫然發現還是有同步失敗的問題。最後我參考「簡單解決 Android 裝置無法與 Google 帳戶同步」這篇文章,到 Android的 設定 > 應用程式 > 全部 > 儲存行事曆,清除行事曆的快取即可。
最近這件事情真讓我感到頭大啊……
(more...)
Comments