Category Archives: Android

[Android] 計算機系列除以 0 問題已經修復

Android 計算機系列的 App ,除以 0 會導致當機的問題,已經全部修復。

受影響的版本

受影響的版本如下:
旅行計算機 – V1.8.5
匯率計算機 – V1.3.11
台灣匯率計算機 – V1.0.8

如果要確認自己使用的版本,可以利用選單 (menu) 的關於(about) 對話視窗,會有版本顯示。

解決方式

現在發生除以 0 的狀況,會直接擋掉。數值會維持為 0。

考慮過多種方式,還是用最簡單的方式來處理,避免再節外生枝。

修復的版本

修復的版本如下:
旅行計算機 – V1.8.6
匯率計算機 – V1.3.12
台灣匯率計算機 – V1.0.9

只要更新到這些版本,除以 0 的時候就不會再出現當機問題。

Travel Calculator 階段更新已經推進到 100%。所有的版本都可以更新到 V1.8.6 了。

其他的 App 都已經全面推出,所以只要有開啟自動更新的,應該都已經上到最新版本。

後續動作

Android 這邊會調整更新頻率,改為一年兩次,時間差不多就是暑假跟寒假,也就是七月跟一月。

不過已經不會做大幅度更動,秉持會動的工具就是好工具理念,有發現的小問題進行修復,外加使用 Google 最新的 SDK 進行編譯,然後推上去。

如果還有遇到類似這次更新 Google 端的問題,處理情況也會類似。就是快速找到問題,然後推出修復版本。

感謝還有在使用的大家支持。只要我還活著,這些 App 就會持續跟上 Google SDK 的更新腳步,讓匯率轉換這件事在旅行中不再是苦差事。

祝福大家出遊愉快,萬事順心。

[Android] 計算機系列新版本會遇到除以 0 的問題

現象

這一次更新,為了解決小數點的問題,引進了另外一組的解法。

這組解法可以用十進位來處理所有的計算,所以小數點就可以精準表達。

不過,先前除以 0 不會讓程式當掉的部分,就破功了。

所以計算機系列的 Android App ,只要按數字,然後按除號,再按 0,賓果,直接關掉。

預定做法

目前有找到發生問題的段落,已經修復。

就算要惡搞它,故意讓它除以 0,也不會當掉。只是顯示的部分還在想要怎麼處理。

因為呢,在數學上,除以 0 這件事會是無限大,或者它不是一個數字。

一般作法會顯示 NaN,意思是 “Not a Number”,不過那樣使用者可能會看不懂。現在是打算保留 0 的數值,不過這樣又會跟數學原意不同。

有一個可能的方式是顯示一條短訊息,跟使用者說除以 0 是不會有結果的,但這樣又要動到更多的程式碼,怕又會連動其他部分,這次更新可能就先不上。

預計上版時程

程式碼已經修改好了,不過最新版本上去,會再收集一兩天錯誤報告,看看有沒有其他的問題,一併解掉再推一版上去。

目前先暫定 2024/08/18 這一天會再推一版上去,所以在那之前,請大家高抬貴手,先不要亂用除以 0 玩旅行計算機,不然,它會直接當給你看,直接消失那種。

這真的是我的錯

所以要罵的就罵我。

該我自己揹的鍋,我不會躲的。

還請鞭小力一點就是。

[Android] 旅行計算機 V1.8.5 在 Android 14 上崩潰的問題已經修復

起因

因應 Google 最新的政策規定,所以需要更新一個版本。

程式其實沒有大幅度更動,只有拿最新版本的 Google Android 函式庫重新編譯一次,並且把版本號碼改掉。

But,人生最重要就是這個 But,Google 這次自己的 Library 出包了。

在一個不應該把我們的程式碼擋下來的地方,直接驅動一個意外發生,把正常程式碼給終結掉往下執行的可能。

這個問題只會在 Android 14 (Tiramisu) 以上的版本發生,Android 13 以下的版本不受影響。

解法

找到問題之後,就直接把該段程式碼槓掉。

如果要走正規解法,必須要把最低支援版本提升到 SDK Level 33,也就是 Android 13,這樣會有很多人的手機無法繼續使用,我自己的就是。

所以兩害相權取其輕,直接拿掉會產生這個問題的程式碼,對於整體功能不會產生影響。

新版本

修正過後的新版本已經上上去,版本名稱維持 V1.8.5 ,但是已經換成不會產生問題的版本。

所以如果有發生開起來直接當掉的狀況,請直接再更新一次,這問題就會解掉。

雖說 “又” 一次被 Google 所害,但還是自己 App 的問題,還是要跟大家說聲抱歉。(我怎麼說 “又” 呢)

小感言

其實以我自己的想法,一個穩定服務的 App,沒有必要進行大幅度更動,尤其是類似這種在外面旅遊需要持續使用的,一旦改出問題,都會是災難。

我向來服膺大同電鍋的信念,只要能煮飯,就是好電鍋。

不過我們偉大的 Google,好像不給我們開發者找點事情做就渾身不對勁,三不五時就會推出一些政策變動,然後我們支援的 API Level 也要跟著提升,不然就會擋掉之後的更新。

這樣就變成我們需要一段時間就更新一次,然後他們自家的軟體比較新的版本又沒有經過嚴格測試的話,就會出現類似這樣的問題。

使用者不會知道是誰的問題,就一律怪罪到 App 開發者身上。

我們就只能摸摸鼻子認了。

所以每一次的上版,其實那兩天都會睡不太好,生怕又會看到崩潰追蹤跳一堆錯誤出來,然後一查,又是 Google 的包。

感謝大家的體諒,新版本已經上去,預祝大家暑假旅遊愉快。

用 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 再一次拯救了世界。

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

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

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

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

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

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

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

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

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

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

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