:::
顯示具有 Android 標籤的文章。 顯示所有文章

如何連上iTaiwan公共免費無線網路? / How to Connect iTaiwan Wi-Fi Hotspot?

布丁布丁吃布丁

如何連上iTaiwan公共免費無線網路? / How to Connect iTaiwan Wi-Fi Hotspot?

image

臺灣各個公家機關與交通樞紐處都有提供iTaiwan免費Wifi無線網路,可供大家解決臨時查找地圖、查詢公車資訊等上網需求。特別是沒有辦理行動網路方案的使用者來說,iTaiwan更是十分重要的無線網路來源。

但是iTaiwan無線網路跟一般家用網路不一樣,並不是連上SSID就可以直接開通網際網路,而是還要在網頁中登入帳號與密碼,這樣才能夠正常上網。

我為了讓家裡長輩瞭解如何使用iTaiwan,以下簡單介紹一下使用iTaiwan的網頁登入步驟。

(more...)

用中華電信行動預付卡APP購買行動網路流量 / How to Buy Mobile Network In CHT Mobile Pre-Paid Card APP

布丁布丁吃布丁

用中華電信行動預付卡APP購買行動網路流量 / How to Buy Mobile Network In CHT Mobile Pre-Paid Card APP

image

對於使用量相當低的手機使用者,比起月租型方案,我更推薦大家使用預付卡。在4G的時代中,中華電信如意卡的通話費率不僅遠低於2G的費率,而且還可以在需要的時候臨時加購行動網路流量來上網。

購買行動網路很麻煩嗎?一點也不會。中華電信提供了APP「中華電信行動預付卡」,可以讓你直接在Android手機上購買行動網路流量。以下我們就來看看這是怎麽操作的吧!

(more...)

Android手機如何關閉軟體更新通知 (須root) / How a rooted Android disable OTA notification

布丁布丁吃布丁

Android手機如何關閉軟體更新通知 (須root) / How a rooted Android disable OTA notification

Screenshot_2016-02-23-01-13-52 - Copy
通常已經root過的Android手機無法安裝官方的Android軟體更新功能(OTA, Over The Air technology),例如我的HTC Butterfly 2在root後就無法安裝Android 6的升級版本。一臺手機運作穩定的話,其實沒有更新的必要。然而軟體更新的通知卻會強制一直提醒使用者更新,非常地擾人。因此我們需要把這個通知關掉。
雖然網路上介紹很多修改檔案、新增檔案的作法,但我這篇要講的作法更簡單:直接結凍軟體更新。這個作法使用了Link2SD的功能,一般來說必須要root才能做喔。
(more...)

適合聽力練習的Android音樂播放器:Music Folder Player

布丁布丁吃布丁

適合聽力練習的Android音樂播放器:Music Folder Player

unnamed

你有很多英文聽力練習用的錄音檔想要放在手機聽嗎?你覺得這些錄音檔太快了聽不清楚嗎?如果你也是Android的使用者的話,來試用看看這個Music Folder Player吧。


簡介 / Introduction

12243468_10205577149095796_4929910695031394358_n

您可以在Google Play安裝Music Folder Player:

以下內容翻譯自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的深處,啟用跟關閉都有點麻煩。以下我將介紹如何開啟這個功能。

12507494_10205577148015769_717671999522058730_n

首先,我們進入MFP的播放介面,然後按下控制鍵右邊的功能按鈕12507494_10205577148015769_717671999522058730_n

12494747_10205577148495781_5402705433735441622_n

我們會看到設定的畫面。這個畫面很長,讓我們往下拉。

12417968_10205577148295776_1397054741922558678_n1

讓我們找到「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

如何在PhoneGap Build上建制可發佈的Android APK: 建立簽署檔案 / How to build releasable Android APK in PhoneGap: Create a keystore file

image

在「從網頁開發到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檔案以方便執行:

1-3. 輸入專案名稱 / Alias name

image

開啟keytool_generator.bat之後,會跳出命令提示資源。請輸入您的專案名稱(alias name),例如「phonegap_build_camera」,然後按下enter鍵。

1-4. 輸入簽署檔案的密碼 / Password of keystore

image

接著要輸入兩次簽署檔案的密碼。

1-5. 輸入其他資訊 / Contact information

image

全部都可以直接按enter略過,但是最後的「Is CN=…[no]: 」的問題則要輸入「Yes」確認。

1-6. 輸入金鑰的密碼 / Password of key

image

剛剛是設定簽署檔案的密碼,現在則要設定金鑰的密碼。這時候請直接按enter鍵即可設定等同於簽署檔案的密碼。

結果的簽署檔案 / Result

image

最後就可以看到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

圖片1

接著你要在Adobe PhoneGap Build註冊一個免費帳號,然後登入之後到Edit account頁面。網址是:https://build.phonegap.com/people/edit

2-2. 上傳簽署檔案 / Upload keystore

image

接著在Android底下點選「add a key」按鈕,在title跟Alias的地方都輸入剛剛輸入的專案名稱(Alias name),例如「phonegap_build_camera」,然後選擇簽署檔案(keystore),按下「submit key」上傳。

2-3. 解鎖簽署檔案 / Unlock key

image

簽署檔案預訂是鎖起來的,要使用簽署檔案之前必須先解鎖。注意到該簽署檔案右邊有個黃色的鎖,點下去之後輸入剛剛設定的簽署檔案密碼,按下「submit key」解鎖。

image

這是已經解鎖的樣子。

2-4. 建置APK時設定簽署檔案 / Select key to build apk

image

在使用PhoneGap Build建制APK的時候,可以從「No key selected」下拉式選單中選擇剛剛上傳的簽署檔案。選擇之後apk會自動重新建置(Rebuild)。

image

有選擇簽署檔案的話,才能夠建制發佈版本的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”

image

這個月受邀到中華電信學院演講一門微課程「從網頁開發到Android APP行動應用程式開發」。這是給有HTML5基礎的前端網頁設計師開發Android APP的教學,講述AppsGeyserPhoneGap (Apache Cordova)的開發方法。


課程簡介 / Introduction

本次微課程將介紹如何從前端網頁開發技術進入到行動應用程式(APP)開發的領域,特別適合具備前端網頁開發能力的工程師來聆聽。演講內容將概述各種行動應用程式開發的技術,再聚焦到以網頁技術來開發行動應用程式的兩種方法:AppsGeyser 與 PhoneGap。只要會製作行動版網頁,聽完這個演講,您就能夠製作可以上架的行動應用程式!

大綱 / Outline

  • 前言:我是前端網頁設計師
  • 概論:要如何製作行動應用程式APP?
  • 樣板型APP開發:AppsGeyser教學
  • 網頁型APP開發:PhoneGap簡介
  • 實作:PhoneGap開發

投影片 / Slide

投影片下載:Google DriveOneDriveBox.netSlideShare

備註:由於當天演講時間太短,所以投影片有所刪減,這一份則是完整的版本。


演講的重點 / Points of this speech

這次的演講跟以往大家講述APP開發的內容相比,有幾個比較值得一提的地方。

關於APP開發的分類 / About APP development classification

以往大家對APP開發方法的分類只有三種:「原生型APP」、「網頁型APP」、「混合型APP」。但其實這是從PhoneGap的觀點來看APP開發方式,並不能夠含括所有的APP開發方法。

imageimage

Wikipedia的Mobile Application development給我們一個比較完整的分類:前端型、後端型以及系統型。而前述的三種分類則是隸屬於前端型開發中。而我又進一步將前端型開發方式分類成四種開發方法:

  1. 原生型APP:以該平臺開發方式開發,例如Android用Java搭配Android Studio開發。
  2. 網頁型APP:以製作網頁的思維建立APP,例如PhoneGap
  3. 其他型APP:以獨特的程式語言與IDE來進行開發,強調跨平臺或能夠支援複雜應用的開發方式。我將NativeScript歸類於其他型APP而不是網頁型APP,儘管它使用的是JavaScript,但建制的思維並不是寫網頁,而是一種獨立的開發方式。
  4. 樣板型APP:強調超簡單工具就能製作APP,像是APP Inventor。但是限制也很多。

我試著用這個分類來讓學員瞭解自己適合的開發方式,讓大家知道原來除了原生型開發方法之外,還有很多其他的途徑可以開發APP。

以PhoneGap Build的封裝方式 / Create APP by PhoneGap Build

image

市面上已經有很多書籍在講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

image

這篇演講介紹了jQuery MobileDojo MobileSencha Touch這三種行動網頁框架。但我想要強調的是「佈景主題」(theme)的問題,也就是如何能在該平臺上呈現該平臺的使用介面的能力。我讚賞Sencha Touch對於佈景主題的自動偵測與切換,在Android上他是Holo Dark的風格,在iOS上則能夠維持iOS的風格。

這種能夠相應於該系統而自動切換佈景主題的功能,對於使用者體驗(User Experience, UX)來說至關重要。這表示使用者可以在自己的系統上操作熟悉的UI,而不是APP特立獨行的佈景主題。

Dojo Mobile跟Sencha Touch都有不同的主題可以套用。雖然jQuery Mobile也可以找到一些第三方主題使用,但比較麻煩。至於其他的BootstrapSemantic UIIonicAngular Mobile等行動網頁框架就更是如此。

不過實際開發時,應該還要考慮到這些框架跟後端資料庫做交換的方式、是否能夠整合其他JavaScript函式庫、或是語法是否容易理解等問題才是。也許隨著經驗越多,這個看法也會隨之改變吧。


結論:更專業的教學內容 / Conclusion: An advanced speech

在準備這個演講的同時,我也一併在進行MIT APP Inventor的家教。我本來以為這兩件事情可以合併在一起做,但仔細想想之後還是放棄這個念頭。APP Inventor是給不會寫程式的人來學習的,做完的成果難以到實際應用的層次。這次的演講是給擁有網頁基礎的人來聽的,主要要講網頁技術跟APP之間的關聯。所以最後我是分開來做這兩件事情。

image

這個微課程只是一個先導性的簡介,之後會在安排一整天的工作坊,讓學員能夠一步一步地製作行動版網頁、以PhoneGap Build封裝,然後到Google Play上架。

儘管這次的教學跟我的專業有很密切的關係,而學員的程度也都很高,講的內容也可以深入不少。但我自己也擔心起實務經驗上是否有所不足,畢竟我跟專門開發APP的工程師相比,還是有很大的差距(這就是學界與業界的差別啦)。雖然是這樣說,懂得如何做一個非常複雜APP的知識,跟如何讓學員瞭解製作APP的教學方法,這兩件事情仍然是不太一樣。

接下來要努力準備工作坊的內容,加油!

(more...)

以MIT APP Inventor教程式的感想 / Thoughts about teaching APP

以MIT APP Inventor教程式的感想 / Thoughts about teaching APP

圖片1

最近因為因緣際會,我接了一個教國中生寫程式的任務,而我選擇的教學內容是以MIT App Inventor 2來教APP。雖然因為時間的關係,這門家教課程只有上短短三次就結束了。不過這次的教學卻讓我有不少值得反思的地方。


選擇以APP來教學的理由 / Why I select to teach make APP as programing

C++或Java是程式語言課程的基本教學內容,但老實說,我覺得學習程式的過程是乏味的。先別說光是佈置環境、編譯、執行等枯燥的動作會讓人覺得疲憊(實際上現在寫程式也一樣會盡力縮短這種編譯與執行的時間,而想辦法讓整個過程自動化),以傳統語言寫出來的入門內容也只有在命令列中單純的訊息輸入與輸出。相較於命令列,我還是覺得能夠看到具體的介面、能夠互動,才讓人有種「創造」程式的感覺。

minecraft-xboxoneedition

(Minecraft Will Be Used To Teach Kids To Code, http://www.ubergizmo.com/2015/06/minecraft-teach-kids-coding/)

「創造」是寫程式最大也是最終的樂趣。不管是寫一個能夠協助日常事務繁複工作的程式,還是寫一個能夠刺激感官的遊戲,它們都是程式。

而且更重要的是,相較於一般被認為是「創造」的藝術技藝來說,以程式來進行創造的成本極低:我們不用買畫具,不用擔心耗材,只需要一台普通的電腦,就能夠開始寫程式。
(備註:其實寫程式不用買很昂貴的電腦。就算電腦上插了一張萬把塊的顯示卡,對小程式來說也沒有什麼差別,所以買便宜電腦就好,貴的電腦很多時候是玩遊戲要用的而已。)

4659468857_7e06dc4fdb

但是傳統的程式語言課程很難讓人體會到「創造」的實體感,入門課程的內容也很難讓人有實用的感覺。舉例來說,能夠迴圈印出各種形狀的「*」,其實是表示程式邏輯有一定基礎的成果。但對很多學生來說,這很難被視為是平常會有用的技能。這跟目標用程式來解決各種問題的思維其實有很大的偏差。

因此,面對上面交待要教程式的任務,我不是教傳統的C++或Java,也不是教網頁(那也很不錯,可是要做到互動性很難),而是教APP。而且不是按照官方規定的原生型APP,是MIT麻省理工學院為了程式教學開發的MIT APP Inventor 2。

教材的選擇 / Select Teaching Material

學習寫程式或是學習APP,他們都是一種應用型的技能。比起了解程式所有的功能,我認為了解如何「做出目標程式」所需要的功能還來的重要。這不僅是我們教課的時間並不多,也是遵循了我之前的說法,能創造出結果才是最令人興奮的事情。

getImage

因此我在選擇教科書的時候也是用這個想法在挑選。最後選擇的是蔡宜坦老師在2014年撰寫的「超圖解! App Inventor 2手機程式設計教本」。

值得一提的是,隨著MIT APP Inventor 推出中文介面,這本書也有中文版的教學。但是我認為學程式本身也是一種英文學習(甚至可能是程式設計師唯一會的英文),這也當作課堂內容之一來教比較好。

這本書的組成包括了17個章節,除了序言之外,大部分章節都會實際作一個APP出來,這部分的確是我想要的。然而開始教了之後,才發現各章節內容都是先講解功能、再來說明APP的製作,這就跟我想要的有點落差。所以雖然最後我還是拿這本來教,但是教學內容則是再做調整就是。

課程與成果 / Lesson and result

由於教課的時間並不長。原本預定四堂課,因為種種原因最後只剩下三堂課。我原本就不覺得能夠教完所有章節,實際上也沒那個必要,因為我的重點在於教程式的相關概念,像是變數、迴圈、事件,至於GPS、相機等只會用在手機上的功能就不是很重要。

Lesson 1. 貓叫 / Cat meows

第一堂課教的是事件與聲音播放的應用。

image

第一個範例就是貓叫聲啦,點下畫面的貓就會叫一聲「喵」。這個簡單的程式是APP Inventor的範例,在Google Play上也可以下載。

unnamed

基於對停車場的守護神:薑黃喵的敬仰,我也做了另一個薑黃喵的變體版本:換一張薑黃喵的照片上去。

image

之後我們做了小鋼琴的APP,點下指定的琴鍵發出聲音,而琴鍵在點下去時會更換圖片,這也是課本的教學內容。

Lesson 2-1. 溫度轉換 / Temperature Convert

這堂課是要教基本的運算式與邏輯判斷的應用。

image

這是一個攝氏轉華氏的應用,最後我們還加入了Slider (拉條)來輸入攝氏溫度。

Lesson 2-2. 畫圖 / Drawing

這堂課則是教Drawing and Animation中的Canvas應用。

image

可以選擇顏色、擦拭、繪畫的種類、清除版面,並將畫圖存檔後利用Share的功能傳到其他APP上,例如在Facebook上發言。

Lesson 3. 擲骰子 / Dice

這次的課程是教陣列與從陣列中取出隨機變數。

image

我們先做一個陣列,決定晚餐要吃什麼,然後隨機取出結果來抽籤。抽籤時用到了加速感應器(AccelerometerSensor),讓抽籤感覺比較有趣。

image

這個則是用骰子來抽籤,再應用之前教的邏輯判斷數字大小,搭配聲音播放結果。因為是最後一堂課,所以我加入了之前教的功能,可惜實際上沒能教到這裡就下課了。


APP Inventor的優點與侷限 / Advantages and Limitation of APP Inventor

在這幾堂課的教下來,第一個感覺是驚訝於APP Inventor的容易上手。

image

這並不只是在講APP Inventor是用拖拉元件跟拼圖就能組成一個APP的製作方法,而他的環境部屬也一樣地簡單。

要開始使用APP Inventor,我們要做的事情只有:

  1. 開啟Google Chome瀏覽器,用Google帳號登入APP Inventor:http://ai2.appinventor.mit.edu/
  2. 手機上安裝MIT AI2 Compainon:https://play.google.com/store/apps/details?id=edu.mit.appinventor.aicompanion3
  3. 開始製作APP,並用Connect中的AI Companion跟手機上的AI2 Companion配對,就可以看到成果。

照正規製作Android的方法,大概要下載超過2GB的檔案,然後要花上1個小時左右來安裝、設定,非常麻煩。APP Inventor將這些繁雜的環境部屬工作降到最低,實在是令人讚歎。

功能限制 / Limitation of Functions

image

但是APP Inventor的限制也很明顯,就是我們除了APP Inventor提供的功能之外,幾乎很難使用其他的功能。

舉例來說,本來我想要用APP Inventor來開發複雜的網路應用程式。一般而言我們都會需要用關聯式資料庫在背後儲存複雜的資料,但是APP Inventor的網路資料庫TinyWebDB只能做到儲存值、取出值兩種動作,而不能像執行SQL一樣的複雜指令。這就會讓實際應用有很多限制。

11753290_10204702104220221_219577884213920244_n

另一個限制就是APP Inventor的解析度是固定的。就算是在尺寸比較大的平板電腦上,他的解析度也會拉大到跟手機一樣。這就很難做到類似RWD的設計。

雖然APP Inventor很容易上手,但是要拿來開發正式的APP,還是要先三思啊。


結論:教程式果然很難 / Conclusion: It is difficult to teach programming

我在這短短的三次課程中以MIT APP Inventor教了程式的概念。但實際上我覺得成果並不是很理想。這最大的原因在於我仍然沒有把握程式教學的精髓,因此很難有效率地把程式的概念教給學生。

我們在寫程式時,大部分的概念都已經是固定成熟了,就像是騎腳踏車、游泳一樣地自然,通常不會去深入思考自己到底怎麼去理解這件事情的。

image

以「迴圈」為例,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

布丁布丁吃布丁

解決Android上Google日曆同步錯誤問題:安裝Google的Googlde日曆 / How to solve Google Calendar sync error in Android: Install Google Calender APP

image

我最近發現我的Android裝置都發生了Google日曆同步錯誤的問題,讓我無法把電腦上新增的時間同步到手機與平板上。但是安裝了Google自己推出的Google日曆之後,日曆同步就恢復正常了。

Recently my Android devices got calendar sync error. But after I installed Google Calendar APP, calendar sync is going working.


4 - 1

我習慣用電腦或平板電腦編輯行事曆,然後手機負責當鬧鐘。平時使用的行事曆管理工具是Digical,因為它介面簡單好操作,也可以設定通知或電子郵件提醒,一直很深得我心。

Screenshot_2015-01-04-16-21-51

可是最近在電腦上跟平板上設定的事件,卻奇怪地沒能同步到手機上。檢查了「設定 」→「帳號」→「Google」→我的帳號→「同步化行事曆」的時候,卻發現行事曆同步出現了異常的符號。同步的時間也跟其他服務有明顯的落差,我的平板最後同步時間甚至是到一個月以前。即使我手動啟動同步,行事曆也無法順利更新,非常奇怪。

Screenshot_2015-01-07-09-01-20

後來看網路上的建議是說需要安裝Google自己推出「Google日曆」,這樣行事曆才能正常同步。

4 - 2

我抱著半信半疑的心態安裝了Google日曆,並跳過簡單的使用操作,進入到了Google日曆操作畫面。由於行事曆尚未順利同步,所以這時候Google日曆上也沒有我完整的行事曆。

Screenshot_2015-01-07-08-57-12

接著再回到設定同步化行事曆畫面,手動進行同步。這次同步時不會馬上就發生異常而停止,而是會持續連線好長一段時間。過了許久之後,行事曆就正常同步了

不能移除Google日曆 / If Uninstall Google Calendar

4 - 3

後來我想說我平時不習慣Google日曆太過花俏的介面,還是主要使用Digical,索性乾脆把Google日曆移除掉好了。

結果移除掉之後,行事曆又無法同步了!真的是非得要安裝Google日曆不行。Google現在的同步服務做的真的很奇怪啊。

還是不能同步? / Still Sync Error?

用了幾天之後,即使安裝著Google日曆,赫然發現還是有同步失敗的問題。最後我參考「簡單解決 Android 裝置無法與 Google 帳戶同步」這篇文章,到 Android的 設定 > 應用程式 > 全部 > 儲存行事曆,清除行事曆的快取即可。

最近這件事情真讓我感到頭大啊……

(more...)

Android系列裝置禁止快取縮圖thumbnails / Deny Thumbnails In Android Devices

布丁布丁吃布丁

Android系列裝置禁止快取縮圖thumbnails / Deny Thumbnails In Android Devices

14 - 5

Android裝置會自動產生大量快取縮圖(thumbnails),佔據Android裝置所剩不多的記憶體空間(ROM space)。本文教你如何防止Android裝置產生縮圖。

Android system automatically create thumbnails to SD card’s “DCIM/.thumbnails”. The “.thumbnails” directory will occupy most of SD card’s space. This article show you how to stop Android system to create thumbnails.


空間不足的問題 / Not Enough Space Problem

14 - 1

我的平板電腦是Samsung Galaxy Note 8,內建空間16GB,而實際上可用空間大概是9.78GB。上面的截圖中,我目前的空間剩餘大概3.23GB。

not-enough-space-delete-unecessary-items

9.78GB乍看之下似乎很多,但在以前,這個空間往往很快就會被不知名的檔案佔據,系統會一直提示我儲存空間不足、請刪除軟體APP、圖片、影片與文件 (Not enough space. Delete unnecessary items, such as downloaded software, pictures, videos, and documents)。

上面這張圖片是來自於How to Tackle Message “Not Enough Space, Delete Unnecessary Items…” When Opening Gallery on Android,他也是跟我一樣使用Galaxy系列的手機,也是遇到了一樣的問題。

龐大的快取圖片資料夾 / Fat “.thumbnails” Folder

14 - 3 - Copy

後來我使用Storage Analyser分析記憶卡中佔用記憶體空間的檔案,才發現佔用空間的並不是各種APP或是下載的檔案,而是記憶體中的「/DCIM/.thumbnails」這個資料夾佔據了大量的空間。

這個.thumbnails資料夾存放的是圖片的快取縮圖。只要開啟了圖片,這個快取縮圖資料夾就會增加該張圖片的縮圖。附帶一提,這個資料夾「.thumbnails」開頭是一個「.」,這是Linux檔案系統中表示隱藏檔案的功能,一般是存放系統檔案時使用。

別看這個縮圖好像沒什麼了不起,就算我空間有9.78GB,這個.thumbnails資料夾甚至可以佔到3GB之多,早已超過我現在的剩餘空間了。

14 - 6

我的Sony Xperia TX也會有一樣的問題。這個.thumbnails就佔據了3.09GB,對手機記憶體空間帶來不小的負擔。

無法清理乾淨的快取圖片資料夾 / Cannot Remove .thumbnails Folder

remove-thumbnail-files-android

TrickyWays的建議是刪除「.thumbnails」這個資料夾。但是事實上,這個做法並非長久之計。

因為.thumbnails快取圖片資料夾會持續產生。只要開啟圖片,.thumbnails資料夾就會產生縮圖,而這個縮圖又會佔據記憶體空間。過不久,我又得再次手動刪除.thumbnails資料夾。

因此我後來又去找了其他解法,發現xda developers中Minions_Army提出的方法的確可以永久解決這個問題。

放置快取縮圖產生 / Deny Thumbnails

原理是把.thumbnails資料夾刪除,然後建立一個.thumbnails檔案。這樣子快取縮圖就無法順利產生。

以下例子我用ES文檔瀏覽器(ES File Explorer)來操作,做法如下:

Step 1. 顯示隱藏的資料夾 / Display Hidden Directory

14 - 5

由於.thumbnails是隱藏資料夾,在ES文檔瀏覽器中預設不會顯示。在此我們要先修改設定,以顯示.thumbnails資料夾。

14 - 3

開啟ES文檔瀏覽器(ES File Explorer),進入設定(Settings)。

14 - 2 (1)

進入顯示設定(Display settings)。

14 - 4

打勾「顯示隱藏檔案」(Show hidden files)。

14 - 4 (1)

再回到記憶體的DCIM資料夾中,就會看到.thumbnails資料夾了。

Step 2. 移除快取縮圖資料夾 / Delete .thumbnails Directory

14 - 4

首先長壓.thumbnails資料夾,直到ES文檔瀏覽器選取了該資料夾。然後再按下下方垃圾桶圖示的刪除(Delete)。

接著ES文檔瀏覽器會跳出一個確認刪除視窗,按下確認刪除。

Step 3. 建立取代檔案 / Create .thumbnails File

14 - 3

接著按下ES文檔瀏覽器左下角的「建立」(New),選擇建立「檔案」(File)。

14 - 2

將該檔案命名為「.thumbnails」。

14 - 1

建立完成,這個位置就塞了一個.thumbnails檔案了。

這樣子未來Gallery APP就無法在「.thumbnails」資料夾中建立快取縮圖,因為這個路徑不是資料夾,而是檔案,因此會無法建立。


小結:刪除快取縮圖之後的後遺症? / Conclusion: Is There Any Problems After Deleting .thumbnails?

我的Note 8平板刪除了.thumbnails資料夾已經過了一個月了。這個月我也是照常開啟網頁、讀PDF paper、看影片、看漫畫,並沒有感覺到什麼異常。

理論上刪除.thumbnails之後,開啟圖片的速度應該比較慢一點。但是這問題感覺上不明顯。倒是記憶體剩餘空間多了許多這點比較令人有感覺。

大家可以一起來試試看,有問題歡迎一起來討論。

(more...)