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

adb、fastboot在那裡?下載即用的Android SDK Platform Tools / Where is adb? Android SDK Platform Tools Location and Usage

布丁布丁吃布丁

adb、fastboot在那裡?下載即用的Android SDK Platform Tools / Where is adb? Android SDK Platform Tools Location and Usage

%25E7%25B0%25A1%25E5%25A0%25B11.png

Android的進階操作都會使用「adb」跟「fastboot」。例如手機進入Fastboot Mode了無法操作,你需要用「fastboot reboot」來強迫它重新開機。但是adb的位置到底在那裡呢?其實我們可以直接從Android Studio網頁上的SDK Platform Tools下載只含有adb跟fastbook的檔案,解壓縮後就能夠馬上使用,這樣子就不用再煩惱去哪裡找尋adb跟fastboot指令了。

(more...)

拓展Android分享功能:分享建立行事曆事件、分享到導航、分享建立桌面捷徑 / Share in Android: Share to Event, to Navigation, to pin a Shortcut

拓展Android分享功能:分享建立行事曆事件、分享到導航、分享建立桌面捷徑 / Share in Android: Share to Event, to Navigation, to pin a Shortcut

%252111%255B3%255D.png

要說我覺得Android最好用的特色,那就是可以自由在各個APP之間傳遞資訊的「分享功能」(share)。你可以分享照片給Facebook APP去發佈、你可以分享網頁到Evernote保存,但奇怪的是,Android上最常見的行事曆活動(event)、地圖導航、以及建立桌面捷徑,卻都沒有分享功能可以用。所以這篇我就要來介紹我自己用PhoneGap建立的三個分享功能APP:分享建立行事曆活動 ShareToEvent分享開始導航 ShareToNavigation分享建立桌面捷徑 ShareToShortcut。以下就是介紹這三個APP的安裝與使用方法,最後跟大家聊聊我對與分享和捷徑的看法。

(more...)

網站負載測試器:Electron Web Speed Testing / Test Website Performance: Electron Web Speed Testing

網站負載測試器:Electron Web Speed Testing / Test Website Performance: Electron Web Speed Testing

簡報1

我們所開發的網站應用大多時候都是預設給多人同時上線使用,但是你要怎麼確認這個網站能夠容納多少人同時上線呢?網站負載壓力測試(web performance testing, web speed testing, load testing)就是模擬許多使用者同時上線存取網站內容,並記錄網站的反應時間以及超出負荷而當機的上限。

網站負載壓力測試工具中較為知名的跨平台工具是Apache JMeter,但它的設定較為複雜,操作門檻高。所以我用Electron另外開發了一個簡單版的網站負載測試器Electron Web Speed Test ,希望讓大家更容易測試自己網站的負載容量。

(more...)

混合應用程式框架試做:薑黃喵討摸摸 / Hyper APP Framework: Ginger Cat Touch

混合應用程式框架試做:薑黃喵討摸摸 / Hyper APP Framework: Ginger Cat Touch

簡報1

之前我介紹用HTML撰寫的混合應用程式框架點閱數意外的很高(本社比),藉著2018年底停車場的薑黃喵被好心人收養之際,我用混合應用程式框架開發了「薑黃喵討摸摸」的APP,可以在網頁開啟、Windows直接執行、也已經在Google Play上架,可在Android上安裝。這篇就記錄一下這個「薑黃喵討摸摸」APP吧。

(more...)

Android適合生產力應用嗎?文字和圖片的操作分析 / Productivity in Android? Difference between Android and Windows in Text and Image Copy/Paste

Android適合生產力應用嗎?文字和圖片的操作分析 / Productivity in Android? Difference between Android and Windows in Text and Image Copy/Paste

簡報1

在上次「閒聊智慧型手機上玩手遊用的鍵盤滑鼠遊戲控制器」的最後,我提到Android似乎逐漸朝向「行動辦公室」的方向發展。但就選取文字和圖片的這種基本操作來看,其實Android離真正的生產力應用似乎還有一段距離。這篇就讓我來說明一下為什麼會是如此吧。

(more...)

Chromebook多重作業系統簡介:Chrome OS + Android + Linux的世界 / Chrome OS, Android and Linux on Chromebook

Chromebook多重作業系統簡介:Chrome OS + Android + Linux的世界 / Chrome OS, Android and Linux on Chromebook

Presentation1

你知道嗎,便宜且硬體等級不高的Chromebook中竟然能夠同時運作Chrome OS、Android和Linux,甚至可以模擬並安裝Windows軟體。這實在是太有趣了,讓我就用這篇來跟大家做個簡單的介紹吧。

(more...)

閒聊智慧型手機上玩手遊用的鍵盤滑鼠遊戲控制器 / Talk about Keyboard & Mouse Controllers for Mobile Gaming

布丁布丁吃布丁

閒聊智慧型手機上玩手遊用的鍵盤滑鼠遊戲控制器 / Talk about Keyboard & Mouse Controllers for Mobile Gaming

image

近年來電競風氣的盛行,讓電競市場從桌上型電腦與筆記型電腦之後,進入到了智慧型手機上。隨著電競類手遊的增加(像是幾個知名的吃雞手遊),連帶刺激了遊戲控制器的發展。傳統的遊戲手把上少少的幾個按鍵已經無法滿足現今手遊複雜的操作需求,因此鍵盤、滑鼠又再度加入到遊戲控制器的行列。這篇就來跟大家閒聊一下最近我關注的鍵盤與滑鼠遊戲控制器的發展吧。

(more...)

用HTML5開發網頁APP、桌面APP、跟行動裝置APP:混合應用程式框架 / Hybird APP Framework for Web APP, Desktop APP and Mobile APP

用HTML5開發網頁APP、桌面APP、跟行動裝置APP:混合應用程式框架 / Hybird APP Framework for Web APP, Desktop APP and Mobile APP

image

HTML5 (JavaScript + CSS3)可以在網頁上跨平臺執行已經是眾所皆知的常理,但是要如何用HTML5來開發能在瀏覽器上執行、能夠在桌面作業系統上安裝、還能夠在行動裝置(手機、平板)上安裝的應用程式呢?這個OnsenUI+Vue.js+Electron+PhoneGap Build的「混合應用程式框架」就是我的答案。

因為這只是最近心血來潮整理出來的混合做法,架構上並不是很漂亮,我也沒有打算寫太多文件。但對於想要發揮HTML5極限的開發者來說,應該是個不錯的參考。


程式碼 / Source code

image

混合應用程式框架保存在GitHub中,任何人都可以自由下載、修改、發佈。

軟體展示 / Demo

在混合應用程式框架中,我們只要開發一個HTML5框架,就可讓它以在網頁瀏覽器、桌面端應用程式、行動端應用程式執行。你可以實際玩玩看,看看混合應用程式框架會是什麼樣子:

接下來我用以下幾張截圖跟照片來讓大家看看它在不同平臺上的樣子:

網頁瀏覽器截圖 / Run in Web Browser

image

這是在Chrome網頁瀏覽器上的畫面。

Windows桌面版應用程式截圖 / Run in Windows

2018-05-24_153932

這是在Windows桌面端執行的畫面。

Android手機應用程式截圖 / Run in Android Phone

Screenshot_20180524-164945

Screenshot_20180524-164949

這是在Android手機上執行的畫面。

Android平板應用程式截圖 / Run in Android Tablet

Screenshot_20180524-165216

Screenshot_20180524-165208

這個是在Android平板 (8吋)上執行的畫面。

除了一些元件的位置怪怪的之外,大致上畫面都能夠正常呈現,很不錯吧。

接下來就讓我們來看看混合應用程式框架怎麼做到這件事情的吧。


框架架構 / Framework architecture

image

我把「混合應用程式框架」的架構整理成上面四個層次:顯示畫面 (Display)、平臺轉接(Platform Transport)、裝置(Client Device)、作業系統(Client Operation System, OS)。其中藍色的部分是我們可以掌握的元件,而灰色的部分對應不同使用者會用的客戶端。以下說明顯示畫面跟平臺轉接的細節。

顯示畫面 / Display

2018-05-24_153932

這邊使用的是Onsen UI,一個成熟的HTML5顯示框架。而控制資料邏輯的MVVM架構使用的是Vue 2。

我已經在「政大借書籃」跟「Voc4Fun全民樂單字」使用Onsen UI框架,但那時候Onsen UI只有跟Angular.js整合。現在Onsen UI已經開發到第二版,而且可以跟jQuery、Vue 2整合。

站在一個想要追求快速開發的角度,Vue算是相當好上手的MVVM架構。而這裡我選擇的是不編譯的Vue架構,因此可以直接在瀏覽器上執行,不需要任何打包或封裝。

平臺轉接 / Platform Transport

混合應用程式框架基本上可以直接用網頁瀏覽器開啟,但如果要打包成不同裝置上可以安裝的應用程式(APP),我們需要藉助一些平臺轉接的框架。

轉接桌面端應用程式:Electron / Electron for Desktop Application

Electron_0.36.4_Icon

(圖片來源:維基百科)

為了產生可以在桌面端作業系統安裝的應用程式,我們使用的是GitHub開發的知名框架Electron。

Electron可以產生給Windows、Mac OS、Linux使用的應用程式。這邊我主要只用Windows,Electron會在Windows平臺中產生可執行檔案,我寫了AutoIT將設定包裹成exe檔案,讓使用者可以直接點選執行。未來也可以更進一步使用InnoSetup打包成安裝檔。

至於Linux跟Mac OS我則沒有測試過,Linux可以直接用Electron打包,但我沒試過能不能執行。至於Mac OS,則必須要在Mac環境下打包才能使用,因此我也沒有試過。

之前我已經在「試做Electron桌面應用程式:webapp-wrapper」整理了一個簡單的基礎,現在我把它整合到混合應用程式框架中,讓Electron更容易將HTML5打包成桌面端應用程式。

轉接行動端應用程式:PhoneGap Build / PhoneGap Build for Mobile Application

Phonegap-build-mobile-app-development-tool-300x245

(圖片來源:boston technology)

為了產生可以安裝在行動裝置上的應用程式,包括手機、平板,我們使用的是PhoneGap Build。

PhoneGap Build提供了將HTML5程式打包成Android、iOS、Windows Phone三種平臺APP的功能。不過因為建構iOS APP需要具備開發者身份(每年需繳交不少費用),而Windows Phone已經沒落,所以實際上我只有用PhoneGap Build打包成Android APK而已。

我以前就有在「PhoneGap網頁樣板:簡單建立網站APP」寫過使用PhoneGap Build來建構網站APP的做法,跟Electron一樣,我也把它整合到混合應用程式框架中,成為大框架下的一份子。
值得一提的是PhoneGap Build雖然採用的是Apache Cordova核心,但這個名稱卻是描述在Adobe提供的伺服器上打包APP的整個流程,而不是像是Cordova在本機端部署環境、打包應用程式的做法。


功能 / Features

在混合應用程式框架中,我整理了一些在開發中可能會用到的功能,這是為了未來開發做的準備。這些功能包括了作為一個應用程式(APP)所需要的排版(包括主畫面、上方的工具列、左方的滑動選單)、主畫面的換頁、通知對話視窗、開啟外部連結、儲存由JSON產生的試算表檔案ODS、MVVM資料綁定、國際化語系、以遊戲引擎運作。以下簡單說明這些功能。

1. 排版與換頁 / Layout and Pages Navigation

image

混合應用程式使用了行動裝置為主的APP排版,主要畫面分成3大部分:1. 主畫面、2. 工具列 (toolbar)、3. 滑動選單 (sliding menu)。主畫面顯示該頁的主要內容,工具列會一直固定在畫面上方,而左邊的滑動選單則是會隨著你的畫面寬度動態的顯示、隱藏,你也可以按下工具列的選單按鈕來顯示滑動選單。

受益於OnsenUI的Auto Style功能,功能元件在不同平臺上會有些微的不同。舉例來說,下圖是iOS中的工具列:

image

下圖則是Android中的工具列:

image

我把換頁的方法包裝在onsenui_helper中,JavaScript語法如下:

onsenui_helper.switch_page(about)
2. 通知對話視窗 / Notification dialog

image

混合應用程式框架的使用了OnsenUI的$ons.notification功能來實作對話視窗。

受益於OnsenUI的Auto Style功能,上圖iOS風格的對話視窗在Android底下會變成下圖這個樣子:

image

通知功能的JavaScript語法如下:

vm.$ons.notification.confirm({      message: i18n.t("Are you sure to visit About?"),      callback: function (_result) {          console.log(_result);      }

});
3. 開啟外部連結 / Open link with your default browser

image

點下一些非APP內的連結時,混合應用程式框架提供了一些方法來讓他使用你預設的瀏覽器開啟。這部分我用hybird_app_helper來處理不同平臺的做法,JavaScript語法如下:

hybird_app_helper.open_window('https://github.com/pulipulichen/HTML5-Hybird-APP-Framework')
4. 儲存由JSON產生的試算表檔案ODS

image

這邊使用了JS-XLSX套件來讓JSON物件轉換成ODS試算表格式。JS-XLSX的功能複雜,網路上大部分的教學都亂七八糟,最好的用法還是官方自己提供的上傳分析轉換下載範例。我整理了JSON轉換成ODS Base64編碼的做法,寫在xlsx-helper.js檔案中。

另外的問題是如何讓裝置下載,或是說儲存、分享檔案。在網頁上,我使用的是FileSaver.js。在桌面端,我使用了Electron的ipcMain跟ipcRenderer來交換資料,讓網頁介面跟背後的Electron能夠彼此溝通,交給Electron寫入檔案。雖然Electron端已經很複雜了,但比不上在行動端的麻煩。在PhoneGap Build中,我先用cordova-plugin-file將ODS檔案寫入到cache暫存資料夾,然後使用PhoneGap / Cordova Social Sharing plugin來分享檔案。

5. MVVM資料綁定

image

混合應用程式框架使用了Vue.js的MVVM框架讓資料與顯示雙向綁定。主畫面中的「Hello, world!」綁定的是JavaScript中的「main_page.data.message」。顯示的程式設定如下:

image

而這個「main_page.data.message」則是寫在main_page.js中,資料的程式設定如下:

image

只要修改「main_page.data.message」的值,顯示畫面也會跟著改變。這是Vue.js這種MVVC框架的基本應用,相信熟悉MVVC框架的開發者應該很容易理解。

6. 國際化語系 / Localization

image

混合應用程式框架使用了javascript-i18n-core來作為語系檔的框架。以工具列中間的標題為例,我們可以用這個JavaScript語法來取得索引名稱「TITLE」的翻譯設定如下:

{{ i18n.t("TITLE") }}

語系檔放在www/locale資料夾中,裡面可以設定各個語系與對應索引名稱。

7. 以遊戲引擎運作:Cocoon.js / Game engine demo: Cocoon.js

image

為了挑戰混合應用程式框架的極限,我試著加入了Cocoon.js遊戲引擎框架所開發的兩款展示遊戲:SpaceSimDemoSuper Mario Bros

大家可以看看混合應用程式框架在網路瀏覽器、桌面端、行動裝置上玩遊戲是什麼感覺,也許未來也可以取代OnsenUI,使用Cocoon.js開發遊戲呢?


小結 / In closing

混合應用程式框架只是我為了未來可能會開發真正的跨平臺應用程式而做的一個小小的準備。我怕我現在不整理,以後可能就會忘記,所以做到這邊就趕快記錄一下。

30485967745854535578

(圖片來源:幫趣)

這整篇並沒有什麼提供給開發者的文件,請有心要使用這個框架的開發者自行trace code,程式碼都在GitHub上,請自行研讀、fork或下載吧。

開發感想 / Thoughts

接著來聊聊一些開發過程的想法。

混合應用程式框架實際上是要寫UI顯示畫面邏輯、 Electron跟桌面端底層作業系統的溝通、PhoneGap Build跟手機端底層裝置溝通的龐大架構。雖然都是用JavaScript來寫,但是不同框架下面使用的API都完全不一樣。雖然號稱跨平臺,但是還是要為不同平臺下很多功夫,實際上並沒有真的這麼跨平臺。

現在有很多開發框架是更加的跨平臺,像是Unity,但畢竟這個門檻比較高,不能直接將網頁使用的技術帶過去使用。而且對快速開發來說也不見得是比較方便。

用網頁來寫UI還是可以讓開發者有很大的自由度,特別是現在CSS3發展成熟,許多特別的UI介面又漂亮又好用,還能作出驚人的特效。我想未來我還是會繼續使用網頁來開發任何應用吧。

速度問題 / Performance issues

在開發的過程中很多人會問的是速度問題,這是PhoneGap令許多開發者詬病的問題。這個速度問題其實細分起來有兩個層面。第一個是載入,PhoneGap在開啟程式的時候,需要用「document.addEventListener("deviceready",function () {});」來確保cordova核心套件有正常載入,因此不管硬體效能多好,通常載入時間還是需要0.5秒。

image

一般來說我們會使用splash載入畫面讓使用者不會覺得太過突兀,在混合應用程式框架中也會預設使用icon.png作為載入背景畫面。

另一個問題是畫面運作時的流暢度。在Ionic Framework vs React Native Comparison這個影片中,我們可以看到基於Ionic Framework包裝的應用程式運作效能非常的差,已經到了妨礙使用體驗的程度了。但這個問題通常是因為程式寫的不好,最常見的情況,是因為開發者在轉場動畫上使用連續改變物件位置參數來營造動畫感,這卻是相當不流暢的做法。

現在比較好的做法是採用較好的顯示畫面框架,像是Onsen UI。或是根據How to Make High Performance PhoneGap Apps來修正你的程式架構。不過光是混合應用程式框架現在的架構,在各個平臺運作起來就已經很流暢了,我想就一般的應用程式來說是已經足夠使用。

如果要到玩遊戲的話,雖然看起來是可以運作Cocoon.js這種遊戲框架,但是還是不知道它的流暢度極限到底在那裡。但因為我可能比較不會朝遊戲的方向開發,這部分就待有心人士來測試吧。

其他跨平臺框架 / Cross platform framework

比起原生應用,我仍然比較偏好可以跨平臺的框架。

儘管許多知名的框架號稱自己是跨平臺,但其實也都是限制於行動裝置的平臺或桌面端的平臺,並不是真的能夠橫跨網頁、桌面端與行動裝置端,這也是我做這個混合應用程式框架的動機。
大部分的跨平臺框架有許多門檻,像是React NativeNativeScript。當然,這些門檻在混合應用框架裡面也是難以避免。

第一個門檻是編譯。幾乎現在主流的跨平臺框架都需要先進行編譯,然後才能展示最後的成果。只要框架使用了作業系統上的原生UI,幾乎都需要編譯後才能使用。React Native提供了Hot Reloading減少重複編譯的問題,但是還是需要部屬相關的編譯環境。相較之下,混合應用程式框架藉助了Adobe PhoneGab Build來編譯行動端的應用程式,我們只要用Git或壓縮成zip上傳即可,部屬環境不需要煩惱。但是如果要用Electron編譯成桌面端應用程式,那還是要用npm來安裝Electron需要的環境。Electron編譯環境所需要的指令請看README說明

第二個門檻是API。雖然框架提供了跨平臺都能使用的UI API,像是特定的按鈕、特定的工具列寫法,但這個框架的API常常已經有別於傳統網頁的做法,並非一般網頁開發者所謂的HTML5,幾乎等於你要重學一個語言。而這語言使用的API並不能帶到其他平臺上,像是網頁或桌面端的Electron,因此不能說是真的跨平臺。儘管混合應用框架本身也用了OnsenUI跟Vue.js等框架,讓人需要重新學習這些框架的用法。不過至少OnsenUI上所寫的工具列是真的可以在網頁、桌面端跟行動端正常顯示,而不會被原生UI的限制所綁架。

Electron的限制 / Huge file from Electron

相較於行動裝置端有許多大紅大紫的知名跨平臺框架,桌面端的跨平臺框架倒是只有Electron比較知名。混合應用程式框架也是使用Electron來實作桌面端應用程式的跨平臺開發。

然而,Electron最大的問題,還是它編譯出來的檔案大小實在是太大了。在www中的主要程式其實只有16MB左右,但混合應用程式框架最後編譯出來的檔案大小居然來到136MB,壓縮成7z也還有35MB之多。網路上有許多人對Electron檔案大小感到疑惑,Expected app bundle size?  中zcbenz說就是這樣大小,沒辦法。我也覺得很無奈。

剛好今天看到了新的桌面端跨平臺框架出現:Vuido,這是用Vue.js撰寫桌面端應用程式的框架,可以使用桌面端原生的UI元件,而不是像我使用混合應用框架中實際上是寫一個網頁來模擬UI介面的做法。檔案大小似乎比Electron還要小,速度上也應該會比Electron還要快吧。不過我個人還是比較喜歡寫網頁,用網頁做UI介面,因此應該不會選擇這個方案,還是繼續使用Electron吧。


好啦,混合應用程式框架就聊到這邊了。

你有想過要開發跨平臺的應用程式嗎?以前你都是怎麼做的呢?除了像混合應用程式框架使用的OnsenUI + Vue.js + Electron + PhoneGap Build之外,你還知道什麼不錯的框架嗎?對混合應用程式框架什麼問題的話,歡迎你在下面的留言發問。如果你也覺得混合應用程式框架是個開發跨平臺應用程式不錯的起點,請幫我在AddThis分享工具按讚、將這篇分享到Facebook等社群媒體吧!感謝你的耐心閱讀,讓我們下一篇見。

(more...)

PhoneGap網頁樣板:簡單建立網站APP / PhoenGap Web Template: Wrap a Website as an APP

PhoneGap網頁樣板:簡單建立網站APP / PhoenGap Web Template: Wrap a Website as an APP

image

PhoneGap能夠讓人用HTML5網頁技術來建立一個APP,那如果我本來就有一個支援RWD的網站,例如改版後的「布丁布丁吃什麼?」,那能不能直接用PhoneGap把這個網站包裝成一個APP呢?可以的,我把整個架構設定整理成PhoneGap Web Template,並且保存到GitHub儲存庫中供人使用。這一篇將說明如何將它客製化成屬於你的APP,這樣就能夠讓使用者用APP開啟你的網站了。

(more...)

藍牙耳機一直斷線?解決Android藍牙耳機的斷線問題 / How to solve Bluetooth randomly Disconnecting Issue on Android Smartphone

藍牙耳機一直斷線?解決Android藍牙耳機的斷線問題 / How to solve Bluetooth randomly Disconnecting Issue on Android Smartphone

image

因為我原本的手機電池膨脹了,所以我最近買了另一隻沒有耳機孔的Android智慧型手機HTC U11,想說搭配之前買的藍牙耳機SAMZU神族就可以解決這個問題,不過在藍牙連線狀態下連上行動網路時,藍牙耳機就會斷線。而行動網路沒連線時,藍牙耳機又會恢復連線。

後來我在網路上找到了katieelva的建議,在藍牙裝置配對的時候,用於功能取消勾選「聯絡人分享」,之後藍牙耳機就再也沒有發生異常斷線的問題了。這篇將這個方法整理一下,供大家參考。

(more...)

手機也可以拍微距淺景深效果!Android的可變焦距相機 / How to take a bokeh photo with Android phone? Zoom Camera

布丁布丁吃布丁

手機也可以拍微距淺景深效果!Android的可變焦距相機 / How to take a bokeh photo with Android phone? Zoom Camera

image

春神到訪的三月有許多漂亮的花兒盛開。待在政大山上畢不了業的我,校內上下山時也喜歡拍些山櫻花的照片做記錄。山櫻花並不大,我用Android的Google Camera相機實在很難近距離對焦在花上。後來我改用了可變焦距相機APP,就能夠輕鬆聚焦在花朵上。不用專業相機也不用後製,我們就能在微距下拍出淺景深的效果囉。

(more...)

用網址自訂Android的捷徑:Website Shortcut & App Redirect / Creatre APP’s Shortcut from URL: Website Shortcut & App Redirect

布丁布丁吃布丁

用網址自訂Android的捷徑:Website Shortcut & App Redirect / Creatre APP’s Shortcut from URL: Website Shortcut & App Redirect

image

Android的捷徑(shortcut)功能讓使用者可以立即開啟APP中所需要的頁面,例如使用Google雲端硬碟直接開啟指定檔案,這樣我們就不需要再從APP第一頁慢慢點進去。

然而,大部分APP並沒有提供捷徑的功能,或是沒有提供我們常用頁面的捷徑。但是如果這個APP同時具有網頁跟APP版本,那麼很多時候就能夠用網址來開啟APP中的指定頁面。

以下我就以Google雲端硬碟為例,教大家如何開啟它的「近期」頁面吧。

(more...)

Android手機需要root的三個理由 / The 3 Reasons Why You Need to Root Android

布丁布丁吃布丁

Android手機需要root的三個理由 / The 3 Reasons Why You Need to Root Android

image

(圖片來源:5 Apps to Root Android Phone Without PC – [How To])

我的Android裝置大多都有用root,而這導致我被Pokemon Go阻擋無法進入遊戲。很多朋友選擇捨棄root玩遊戲、也很多人選擇進一步研究用Magisk繞過root檢查,而我選擇不玩遊戲。大多人都會問我Android手機好好的為什麼要root,不要root就可玩遊戲啦。雖然Android與root這話題已經被講到了無新奇了,但即使到了現在最新版的Android Nougat,還是有很多功能需要root才能使用。以下我整理了個人認為必須要使用root的三大理由供大家參考。如果你也遇到了類似的問題,那麼也許可以考慮看看踏入root的世界。

(more...)

Android使用USB遊戲控制器 / How to use Generic USB Joysticks in Android via OTG?

布丁布丁吃布丁

Android使用USB遊戲控制器 / How to use Generic USB Joysticks in Android via OTG?

image

之前有跟大家聊過我一直關注在Android上使用遊戲控制器的這件事情。這期間我看到有些機型可以直接透過OTG接USB遊戲控制器,可是我手邊的機型就是不行。後來我才發現這不是USB遊戲控制器的問題,而是Android裝置上缺少了一些驅動程式。我參考gamepaduser的教學後發現,其實安裝USB/BT Joy Center、再做一些設定,就可以在Android的機器上面使用USB遊戲控制器了。以下我就來一步一步介紹怎麼使用USB/BT Joy Center來連結USB遊戲控制器。

(more...)

行動應用程式「政大借書籃」介紹 / Introduce “NCCU Book Cart”

行動應用程式「政大借書籃」介紹 / Introduce “NCCU Book Cart”

image

為了試著開發PhoneGap的行動應用程式APP,我使用OnsenUI建構了一個簡單的APP:政大借書籃。這個APP的功能是為了取代在政大圖書館找書時,使用公用電腦旁邊的小紙條來抄書的困擾。政大借書籃可以用掃描條碼功能把政大圖書館公用目錄上面找到的書加入借書清單,然後就可以拿著手機去找書了。

(more...)

如何連上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...)