用 adb 快速抓 Android App 畫面

從事 Android App 開發的獨立開發者,常常會需要使用螢幕截圖來進行說明或者一些其他的用途,特別是撰寫介紹文章以及 App 說明文的時候,有沒有圖片的支援,對於終端使用者的方便度來說是差很大的,俗謂「一圖解千言」不是沒有道理。例如日前寫的「如何使用旅行計算機 app」就使用了不少圖片來說明,一張張慢慢截圖的話大概要花整整一天。

三張截圖才能組成一張說明圖
類似這樣一張說明圖,需要三張畫面截圖

關鍵來了,實際操作過的話,就會知道要把圖片從手機上或者模擬器上面截下來然後送到自己的電腦上,是一件有點麻煩的事情。要先在手機或者模擬器上操作螢幕截圖,然後到相簿裡面把截圖透過 Mail 或者其他方式轉給自己的帳號,再到電腦上從那些 Mail 或者 Line 帳號將圖給存下來,進一步拿來運用。通常這樣做完一輪,就是拿到一張圖,面對一篇文章裡面說明動作動輒十來個的圖片需求,一篇文章寫完大概就已經累掛,沒啥力氣繼續寫 Code。

插個話,因為我的開發環境是在 Macbook Pro 上,所以環境都是以 macOS 為主,如果到 Windows 上,就需要把 Shell Script 改寫為 Bat 檔,或者啟用 Windows 10 的 Linux Subsystem 機制,才能夠 run。Linux 的話,應該就沒有這個困擾。adb 的指令參數應該都一樣,如果有不一樣的,再查一下版本差異改一下對應的指令就可以。需要的話可以參考一下 adb command

針對截圖問題,有沒有方便好用的方法可以快速處理呢?

有的,今天就分享一個簡單的 Shell Script ,可以快速的對目前螢幕上的圖進行擷取,然後一氣呵成完成把圖送到自己電腦桌面上的動作,免去上面那些繁瑣的步驟。

先來看 Shell Script: ( Bash 說明可以參考一下鳥哥的介紹 )

#!/bin/bash

filename=$1

TARGET="/sdcard/$filename"

adb shell screencap -p $TARGET
adb pull $TARGET
adb shell rm $TARGET

# 最後一步,把檔案 mv 到 Desktop 去
mv $filename ~/Desktop/

接著來說明一下。

一開始先收參數,也就是想要存檔的檔名。第一個參數就會被列為是最終要存起來的檔名。然後那個 TARGET=… 的那一行,是等一下截圖過程當中會需要用到的目錄路徑,這個路徑是在模擬器上或者真實手機上都可以使用的,下命令截圖完畢的圖檔,就會先放到這邊。

接著連續三行呼叫 adb 做事。

adb shell screencap ,就是最重要的,把圖截下來,目前畫面上是什麼圖,就原封不動把它抓下來,可以在做完需要的示範之後,停在那邊,然後下命令擷取。

adb pull ,則是把手機或者是模擬器上的檔案從裡面「拖」出來到電腦上,具體來說就是剛剛的截圖命令把圖片存起來到內部的 /sdcard 目錄下,pull 則是把這個檔案從裡面再拿出來到電腦上。

adb shell rm ,這一行就是把截完圖的檔案砍掉,因為已經拖到電腦上了,所以就可以直接砍掉,免得 /sdcard 底下越來越多檔案,吃掉空間。

最後一步,為了方便作業,直接把剛剛弄出來的圖片檔案,搬到 Desktop 去,這樣就可以直接在桌面看到剛剛截出來的圖片,進而進行編輯或者上傳出去完成文章編寫。

每次需要截圖,就是呼叫這個 Shell Script ,後面加上想要的檔名,就可以在桌面看見那個檔案出現,內容則是目前手機或者是模擬器的畫面,有沒有很方便?

生命,就該浪費在美好的事物上!快速截圖,可以幫您省下時間,多陪陪家人、多寫點程式,都比在那邊跟繁瑣的步驟搏鬥來得有趣多了。

分享這個快速截圖的小撇步,希望能幫大家節省更多時間。

Happy Coding !

[Android]匯率計算機 1.3.7 當機問題請再更新一次即可

10/9 上版的「匯率計算機」1.3.7 版本,在發布之後,有使用者反映會出現當機問題,特徵是在開啟 App 之後就閃退,沒有其他的症狀。

經過初步調查與確認,這問題是由於這一版採用了某一套解析 Json 物件函式庫最新版本所導致,這個版本的函式庫會在 Android API Level 26 以下的手機上出現類似的狀況,原因是找不到所需要的檔案,因此導致載入失敗。

已知這問題會在 API 26,也就是 Android 8.0 以前的版本出現,Android 8.0 以後的版本不會受影響。

目前採取的對策是直接把函式庫的版本改回原本穩定的版本(果然最新不一定最好),然後版本名稱不變(1.3.7),版號往前推動一格上一次版。

因此有遇到此狀況的人,可以等「匯率計算機」再次出現可以更新的時候,按下更新一次,就可以使用原本穩定版本的函式庫所建立的新版。

造成大家的困擾再次深深感到抱歉,之後類似的情況會更嚴謹一些,盡可能不要選用最新版本的函式庫,避免一些不必要的問題。

若是還有遇到其他問題,可以透過 Email: ericlin@tomosware.com 跟我反應。

感謝大家。

[Android] 台灣匯率計算機 V1.0.6 上線

在幾過一陣子的調整與修改之後,新版本今天終於推上去 Google Play。

新的版本號碼是 V1.0.6,前一個版本是 V1.0.5,因為改動的部分不是很大,所以版本號碼就小小推進一格。ICON 也根據新版的 Android ICON 規範重新設計過一次,主要是拿掉透明圖層,然後讓圖案可以滿版。這樣 Google Play Store 在顯示的時候也會比較順。

這一次主要的改動如下:

版本 1.0.6:

  1. 全面更新網路通訊協定為 https,提升安全層級
  2. 修正 TIP 按鈕的行為,改為跟 Tax 按鈕一樣,重複按下去會循環顯示數值
  3. 改變貨幣別的圈圈顏色,在一般畫面的時候可以更明顯的辨別與選擇
  4. 上下交換/Tax/Tip/Off 的按鈕都加上按下去會變動背景色的效果,更容易識別有無按到
  5. 更新一次 App 的 ICON 符合新版 Android 規範
  6. 因應日本十月開始消費稅變為 10%,預設的稅率改為 10%
  7. 其他小問題修正

其中的 https 升級我個人覺得還滿重要的,雖然只是一個小動作,但是可以保護所有的資料來往免於被窺探,對於重視隱私的人來說比較有安全感,至少我就是。

另外一個比較不同的改動是讓 TIP (小費) 的按鈕行為對齊 TAX 的做法,也就是數值會根據當前狀態循環顯示。第一次按下去的時候,會顯示加上小費的總數值,按鈕數字變為紅色;第二次按下去,數值會顯示為增加的小費,按鈕數字變為黃色;第三次按下去,就會回到原來的數值,同時按鈕數字恢復為正常的白色。

這個是為了在真正使用時可以更加方便,有時候想要單獨查看增加了多少錢,而不是總數,可是又希望可以保留住原來的數值,這時候這個功能就可以派上用場,只要重複持續按下去,就可以看到想要看的數字,最終還是會回到原本的數字。

然後因應日本十月一日把消費稅上調到 10% (沒事調什麼稅率嘛,這樣去日本消費又要變貴),所以直接把預設的稅率調整為 10% 了,這樣第一次安裝的朋友就可以直接看到稅率是 10%,不用再自己調整。我想目前台灣出國去玩的目的地應該日本還是佔大宗,所以就做了這個小小的調整。

原本中間四種匯率型態轉換的圈圈,也被我把顏色調整為比較醒目的狀態了。原本顯示是黑色的圈圈,這樣在選擇的時候不清楚,調整完之後(有變大與調顏色),變得比較醒目一些,在需要的時候也可以快速按到自己想要的匯率別,買進賣出的調整會更快速。

新版本上了,期望可以給大家更好的使用體驗,有任何需要改進的地方,可以直接留言或者寫 Email 來喔: ericlin@tomosware.com,能回答的一定竭誠為您解答。

預祝有要出國的大家旅途愉快啊!

[Android]如何改變 radio button 的顏色

今天修改 Code 遇到這個小狀況,順手做個紀錄,免得之後忘記。

Android 裡面的 Radio Button 在很多場合都會用到,特別是需要互斥選項挑一個的時候。原本如果採用 Default 的 Style 設計,應該會跟著系統的設定一起走,狀況就出在,我希望文字顏色跟 Radio Button 的顏色可以分開來設定,這樣就會有比較明顯的效果,稍微試了下,沒有試到滿意的結果。

於是就發揮了 StackOverflow 工程師的精神,找了一下解法,原來解法很簡單。

提供答案的連結在此:change-circle-color-of-radio-button

關鍵在於,要替 radio button 加上 android:buttonTint 的屬性,指定自己想要的顏色,這樣他在 Layout 的時候,就會依據指定的顏色顯示上去。

<RadioButton android:buttonTint="@color/radio_color" />

效果就是想要的,Radio Button 依據指定的顏色顯示:

就是這麼簡單。

感謝強大的 StackOverflow 再一次拯救了世界。

網站全面更新支援 https 瀏覽

經過一陣子的努力與往返測試之後,終於可以讓整個網站以 https 運作了。之後如果發現沒有綠色鎖頭,請把網址改為 https 開頭,然後再重新載入一次即可。

還是要感謝 LetsEncrypt 提供的 Certificates 運作機制,不然光是每年要付出去的認證取得費用大概就不得了了,遑論要讓這個站可以支援 SSL,那樣的話就不曉得要等到何年何月才可以看到綠色鎖頭飄揚在網址列。

目前所有的內容都有在 SSL 的保護之下了,所以原則上你所看到的每一頁應該都會是有綠色鎖頭保護中,如果發現那個鎖頭破掉了,還請不吝寫信跟小弟我說一下,或者留言也可以。這種情況有可能是因為之前上傳的圖片網址還沒有改為 https 的狀態,修正即可把綠色鎖頭回復過來。

感恩 LetsEncrypt,讚嘆 LetsEncrypt

如果有遇到 https 設定困難的,可以留言或者寄信給我,能幫得上忙的我就盡量幫忙,畢竟當中有一些小地方沒突破就是沒辦法。我的 server 是用 nginx,作業系統是 Linux Ubuntu 18.04。

[合作優惠] 旅行計算機 x GlobalWiFi 國外上網優惠

時序又到了旅遊旺季囉(是說現在好像一年四季都是旅遊旺季),有打算要去國外的朋友,除了必備的「旅行計算機」之外,一定會需要當地的網路來跟世界連線,目前的網路使用方案眾多,相信每位朋友都有自己的心頭好。

最近剛好 GlobalWiFi 找小弟合作,提供一個「 旅行計算機 x GlobalWiFi 」優惠方案,只要透過優惠連結過去,就可以享有 8 折加上國內寄件免運的優惠,想說先寫在這邊讓有需要的朋友可以先連過去使用這個優惠方案。

如果原本就習慣使用 GlobalWiFi 的朋友,可以點擊下方的連結過去,就會進入優惠方案,享有折扣。

本來使用其他家上網方案的朋友,就看您自己的需求,或者做個評估看看也不錯。GlobalWiFi 是一家日商公司,最近跟他們 Mail 來往的感覺是效率很高,很有禮貌。給大家做個參考。

這種合作的優惠小弟我優先評估的重點都是對使用者有沒有真正的好處,如果沒有真正的好處純粹只是要幫忙宣傳的通常就敬謝不敏了。所以如果有放上去的優惠,都會是對使用者有實質好處的。一直以來的理念就是要幫助這個世界向上提升啊!

原先是要趕十二月初上一個版本把優惠方案直接放在 App 的一個頁面讓大家可以點過去使用,不過最近 Google API 改得兇,遇到了一些狀況,所以要再測試一陣子才會連同旅行計算機的新功能一起上版。

順便預告一下,旅行計算機接下來的新版本會再增加貨幣的種類,包括比特幣在內,最近比特幣大起大落,我自己都很想盯著看了。等 API 測試穩定了就會把這個版本推上去。

GLOBAL WiFi x 旅行計算機 國外上網優惠

海外WiFi分享器,出國上網必備,拍照打卡連線。

優惠連結 – http://globalwifi.com.tw/?pr_vmaf=lywHjLPR6b