Stark Wong 的個人開發網站
 


 此頁面:更新於 2018 年 1 月 15 日 00 時 30 分 00 秒,頁面處理需時 0.003 秒
 網站內容版權所有(C)Stark Wong。頁面(不包括檔案)可自由連結。網站系統版本 1.90-AngularJSBase (2015/9/27)
 
網站地圖

流動巴士版圖 NG iOS 版本重新上架 / 最近動態

由於收到一些網友查詢有關流動巴士版圖 NG iOS 版本無法在 App Store 中找到,而且新巴/城巴 App 最近也跟隨九巴 App 一樣加上煩擾式的廣告,故決定將流動巴士版圖 iOS 版重新上架,不過暫時不會進行任何程式更新 (資料庫仍可更新)。

最近一直在開發及測試 Android 版本流動巴士版圖透過鬧鐘及 Geofence 進行定時自動離站時間通知功能,不過似乎由於 Android 系統目前增添了不少省電功能,要在不使用 Wake Lock 之下穩定操作似乎有不少難度...

目前所遇到的問題包括 (可能是 Android 問題,也有可能是 Samsung 的問題):

  1. 鬧鐘觸發時間不準確,即使用 setExact() / setRepeating() 也有可能延遲達數分鐘
  2. Geofence.Builder 裡的 setTransitionTypes() 包含 GEOFENCE_TRANSITION_DWELL 旗標時,DWELL 通知觸發一次後就不再觸發,無論 LoiteringDelay 和 NotificationResponsiveness 的值為何
  3. FusedLocationProvider 有時候座標會嚴重偏移到即使設定距離 100 米也無法觸發 GEOFENCE_TRANSITION_ENTER
  4. 即使 GEOFENCE_TRANSITION_ENTER 正常,有時候 GEOFENCE_TRANSITION_EXIT 觸發距離超過 500 米
  5. 綜合 Stackoverflow 裡建議手動強制更新定位資訊讓 Geofence 較準確的方法似乎對 Android 8 無效
  6. BroadcastReceiver 裡使用 JobService (非 JobIntentService) 好像沒有加 Wake Lock,令手機關屏時所排定的 JobService 要到屏幕打開時才開始

由於那麼多問題,這個功能是否能推出也是一個問題...OTL


撰寫於:2018/12/3 00:31:22 / 回應:0
正在讀取回響內容...
流動巴士版圖 - 離站時間更新

流動巴士版圖的離站時間功能對於聯營線一直只支援九巴時間的離站時間預報,今天改進了這項支援,現在無論是純九巴/純新巴城巴或混合班次都可以正常顯示。如同之前的更新一樣,這次更新並不需要更新軟件版本,只需要更新到最新的資料庫即可 (無論是否 NG 版本均適用)。若發現有路線因這項修改導致資料不正常請電郵告知並附上有問題的路線號,謝謝。


撰寫於:2018/9/23 23:37:11 / 回應:0
正在讀取回響內容...
有關流動巴士版圖新巴/城巴部份路線離站時間不準確問題

最近發現流動巴士版圖中新巴和城巴部份路線的離站時間間歇不準確,經查證後發現有問題的路線方向(即上下行)與其他路線不同,現已在伺服器端進行修正,用戶只需要將程式的資料庫更新到最新版本即可解決此問題。

另外發現新巴 api6 的請求加了 syscode2 參數,不過老實說,門鎖是不能阻擋有心人的,再多的驗證參數也只是貓捉老鼠的遊戲,與其要防偷用 API 的人何不大方公開 API,或用改 API 的資源來改善服務吧...

(以下內容只是 PoC,已省略某些部份以免有人直接抄來用)
syscode2=AES_128_CBC(內容,密匙=siwmytnwinfo****, IV=a20330efd3f6060e)
內容=時間碼+SHA256(時間碼+siwmytnw+亂數)+亂數
時間碼=時間戳的索引#2,9,4,6,3,0,*,*,*,*


撰寫於:2018/8/28 23:40:10 / 回應:0
正在讀取回響內容...
流動巴士版圖NG更新

看著電郵裡的二十多個 Firebase Crashlytics 嚴重錯誤報告終於忍不住了,今天把大部份錯誤都修正了。Firebase Crashlytics 配合 Firebase Analytics 使用起來非常方便,透過在不同操作時以 FA 記錄用戶的操作內容 (匿名),可以在錯誤報告中呈現用戶導致出錯的操作方式,對除錯非常有用,這個是單獨使用 Crashlytics 時所無法做到的。可惜我發現有些地方我所作的記錄不清楚,否則就更好用了...


撰寫於:2018/8/5 01:13:56 / 回應:0
正在讀取回響內容...
流動巴士版圖 NG 更新

流動巴士版圖已經有一段時間沒有更新,但其實開發工作還是有緩慢地進行的,這次的更新帶來了一系列的修改,雖然外表上看來沒什麼分別,但內部的更新則不少:

  • Target SDK 26 + Play Service 版本更新
    Google 今年底就會強制所有新提交或更新的軟件都必須對應近期的 API 版本,所以流動巴士版圖 NG 這次已提升 Taget SDK 至 26, 而此提升亦導致所有 Google 類的程式庫 (Play Services 及 Support Library) 均需要作出相應提升,並需要修改因 SDK 版本提升至導致的相容問題
  • 引入 Firebase 平台
    流動巴士版圖本來只有使用 AdMob 及 Google Analytics,這次更新已分別修改成使用支援 Firebase 的 AdMob 及以 Firebase Analytics 取代 Google Analytics,另外亦新加入了以下的 Firebase 元件:

    Firebase Crashlytics
    加入 Firebase Crashlytics 可以讓開發者收到用戶使用軟件時出現問題的資料,長遠可有效改善穩定。

    Firebase Remote Config
    加入 Firebase Remote Config 可以讓軟件配備簡單的 AMS 支援,目前流動巴士版圖所支援的遠端設定包括特定平台及版本的強制更新及更新訊息,以及將本來儲存在小熊工作室伺服器的資料庫更新資料透過 Firebase Remote Config 提供。

    Firebase Storage
    資料庫更新後台目前會在建立更新資料庫後上傳至 Firebase Storage 並建立連結下載連結以便透過 Firebase Remote Config 提供給流動巴士版圖使用。不過這個修改目前只作測試之用,主要是要看免費的流量是否足夠支持,如果不足夠可能只會透過 Firebase Remote Config 作為分流使用 (Firebase Remote Config 可以設定某個數值只套用於某個百分比的請求)。
  • 以 Google Drive 進行授權轉移
    目前曾經捐款的用戶可以聯絡開發者將去廣告的授權轉移至其他裝置,雖然這不是花時間的操作,但始終還是需要開發者手動進行轉移。新版本的流動巴士版圖 NG 可支援在已授權的裝置上將授權儲存在用戶自己的 Google Drive 中,當以後需要授權轉移時只需要在新的裝置中綁定到有授權的 Google 帳號,就可以自動進行授權轉移,毋需再發送電郵給開發者。不過需注意下面幾點:

    - 儲存授權只能在已授權 (即不顯示廣告) 的裝置上進行,如果授權已無效時需先通知開發者轉移授權後方可進行儲存授權
    - 儲存後的授權仍然只對一個裝置有效,若在未授權的裝置上綁定有授權的 Google 帳號會要求授權轉移
    - 當進行授權轉移後,原裝置的授權會被撤銷,並會在下一次啟動程式時提示及恢復廣告顯示
    - 當儲存授權後,用戶不可以再聯絡開發者轉移授權,否則儲存在 Google 帳號的授權會變成無效
  • 改進自動更新機制
    以前的自動更新只有自動檢查而不會自動下載,這次更新則改成可自動更新。而提示有可用更新的對話框則改為放在螢幕下方的提示條,這樣可讓用戶在知道有更新的情況下不打斷目前的操作,甚至可以讓用戶先行下載資料庫 (或自動更新後不自動重新啟動),直至用戶覺得適合的時間才重新啟動程式以套用更新。
  • 兩項小修正
    此版本亦修正了兩個地圖功能的問題

    - 在地圖中按下另一個停站的時候,頂端的目前停站提示/選站按鈕並沒有一併更新
    - 在主介面停站清單中直接選擇街景功能,返回時應直接回到主介面而不是回到地圖介面
    - 在地圖使用街景功能返回後地圖移動嚴重卡頓

由於這次變動較大,目前只釋出於流動巴士版圖 NG 版本,至於傳統版本的更新時間則視乎之後的功能更新數量及進度而定。

==================================

另外,這裡也列出幾個最近有網友查詢的問題及其他資料:

  • 下一個預定更新的程式
    目前正在修復 MagicTV 串流播放器,雖然那個程式已經沒什麼實際用途,但其所用的程式庫實在過舊,需要修復一下 (目前免費版已因穩定性問題被下架)
  • 無法在 App Store 中找到 iOS 版本的流動巴士版圖
    由於多次提交新軟件失敗,而流動巴士版圖也被迫縮減功能,所以目前已經沒有再為蘋果開發者資格續期。已安裝程式的用戶仍可繼續使用 (資料庫如常更新),但若刪除後則無法再重新下載
  • 流動巴士版圖的離站時間不準確
    這個不是流動巴士版圖本身的問題,當你發現班次不準確的時候即使你開啟巴士公司的官方應用程式也同樣不準確。既然官方資料也不準確,我又如何比他們更準確?
  • 關於新的電話攔截程式
    在經過評估及一直使用小鴨幹線的經驗,我目前不會考慮開始開發

    - 現在一些廠商 (例如三星) 自已也有問題電話提示功能
    - 自從我的手機升級到 Android 8.0 後,小鴨幹線似乎很多時候攔截失敗 (但服務有一直執行),增加一點不確定性
    - Google 宣佈 Android 9 開始會封鎖非公開 API,而電話攔截主要依賴非公開 API,所以再增加不確定性
    - 政府開始研究管制真人電話推銷,攔截程式的需要性可能降低

撰寫於:2018/7/22 13:35:44 / 回應:0
正在讀取回響內容...
流動巴士版圖資料來源更新

今天更新的流動巴士版圖資料庫對於九巴的資料作出了調整,由於九巴會在無公開發佈下調整班次資料,而且巴士大典上的資料有格式不一致的問題,所以班次資料決定回去用官方資料,因為官方資料在每次更新來源資料時都是所有路線一併更新的,所以不會出現班次與官方資料不同步的問題。至於轉乘資料則繼續使用巴士大典的資料。

另外,今天的資料庫更新亦啟用了新嶼巴的官方離站時間資料,顯示的班次時間應與官方手機應用程式一致,同時亦將九巴及新巴的後備資料來源正式關閉,即若無法從官方來源取得離站時間時會直接顯示沒有資訊而不會從後備資料來源取得離站時間,因為後備來源的預估時間與實際時間相差很大,沒有參考價值。


撰寫於:2018/2/26 00:31:20 / 回應:0
正在讀取回響內容...
流動巴士版圖資料來源更新

流動巴士版圖的新嶼巴資料一直都是全手動更新的,導致有些資料已經過時很久也沒有修改。不過由現在開始,新嶼巴的資料庫會改為半自動更新,路線資料及時間表可自動更新,而附加資料則為手動更新,這樣應該可以減少資料不更新的問題。

另外也發現了路線資料合併時的分區自動判斷功能有漏洞,地鐵巴士部份車站的分區可能錯誤,現已修正。除此之外,我收到網友電郵指一些過海線的方向倒過來了,檢查下發現是之前修正路線資料中頭尾站顯示與實際路線部份不符合的問題後所導致,所以該修改目前已暫時還原,稍後再另找方法進行修正。


撰寫於:2018/1/15 00:30:41 / 回應:0
正在讀取回響內容...
近況更新

最近都沒寫任何更新,主要是在花時間構思一個新的工具程式,但似乎因為想得太過複雜而目前前暫時停工,需要另找時間再重新整理一次所有流程。


流動巴士版圖

最近其實一直都有進行流動巴士版圖的後台調整,包括九巴資料來源變更,新巴離站時間預報資料來源變更,另外還有因巴士大典的表格資料不適合於手機顯示而改用手機版頁面的嘗試,結果是雖然顯示效果是有少許改善,但卻帶出了手機版頁面無法正確處理 ROWSPAN 關鍵字的問題,需要透過一堆搜尋取代的方式去處理掉。

不過目前在時間表仍然有問題,產生出來的頁面在桌面瀏覽器看是兩個方向呈上下顯示的,但當匯入到程式後卻呈左右顯示,影響可讀性,遲些再找時間看好了。


新程式開發

我其實也有一些比較大型的程式想開發,但礙於公司政策,我目前只能暫時放棄開發任何有商業價值的程式...


來電過濾程式

我以前開發的來電過濾程式在轉讓時有附帶禁止開發的條款,該條款目前已經履行完成,也就是如果我想的話我可以再次開發同類軟件。我目前對是否再次開發持開放態度,不過我目前正使用小鴨幹線已經相當滿意,我是覺得沒有迫切性去實行。不過如果我會再次開發的話,以下幾點會是主要考慮點:
1. 不依賴第三方資料庫,就算使用第三方資料庫也只以輔助方式使用
2. 不會沿用目前自行回報方式,而是會有假定條件
3. 使用者有權利使用,也有義務回報,程式不允許只使用服務但拒絕回報的行為
4. 黑名單納入機制基於獨一機器回報數量,超過一定數量才會納入,該數量在無新回報下會遞減,故錯誤回報無需進行任何處理
5. 對於有商業機構的刪除請求,會要求對方發出官式文件並列明相關號碼的用途,而該官式文件會對外公開以便作出監察 (未知法律層面是否可行)
6. 使用 Kotlin 語言開發,以避免有使用侵權程式碼的嫌疑

不過最近 Google 公佈了一項新政策,從下年 11 月開始新提交的程式必須針對新版本的 SDK,估計到時候最舊的 SDK 版本也需要 Android 8。Android 8 SDK 不再允許程式透過 AndroidManifest.xml 接收大部份全域的廣播,也就是可能無法穩定接收來電的廣播。另外聽說也會收緊呼叫非 SDK 提供的功能,也就是有可能無法再透過程式碼掛線。如果這兩項都屬實的話電話過濾軟件將會再 Play Store 上消失了吧...我先找時間試試看第一點的影響有多大好了。

如果你們有任何意見,歡迎在這裡留言討論。


開源專案

上一篇所提到要開源的軟件,目前已經上傳至 GitHub (總合頁面於 這裡,由於這兩個是完整的程式,我不希望有人直接將它重新發佈,如果經修改後想發佈的話煩請先經我過目一下,謝謝。


這個網站

這個網站已經很多年沒有改過設計了,似乎應該找些時間 Revamp 一下,昨天總算把選單名字過長導致 Popup 移位的問題解決,不過還是很多過時和缺少的資料,畢竟有點懶...


撰寫於:2017/12/31 00:35:06 / 回應:0
正在讀取回響內容...
iOS 版本流動巴士版圖移除導航功能及下架預告

蘋果是一家喜歡作弄開發者的公司。以前我試圖提交 iOS 版本的 Magic TV 預錄程式時因蘋果提出需要拍攝實體裝置間的互動而最終令該程式無法上架。這次流動巴士版圖亦因相同原因被拒絕更新。流動巴士版圖的導航功能已經不是什麼新功能,突然需要為該功能錄製影片我真心覺得無奈。在我手上沒有適合條件的情況下,我只好將導航功能砍掉後再上架了。如果這次砍掉還是被拒絕的話我就干脆不更新。

我已經厭倦每次更新都好像提交試卷的過程,每次都要擔心會不會因為什麼無聊原因被攔下來,被攔下來還得額外再花時間去改動程式然後再重覆整個過程。反正我這個開發身份成功發佈的程式就只有一個,所以當這個開發身份下次續期(大概是5月底)時我不打算再續期,也就是說 iOS 版本流動巴士版圖會於下年 6 月下架,已安裝程式的使用者將不受影響,程式還可以繼續使用及更新資料庫,但重新安裝或新安裝時將無法再找到程式。

至於那個無法上架的 Magic TV 預錄程式,我將會透過 GPLv2 發佈,而被下架的 Android 版本也會以相同方式發佈,反正自 Magic TV 7000D 後就再沒有符合我使用需要的 Magic TV 型號了,不過就算有,這家香港公司的系統軟體穩定性相當一般,預錄消失,無故自動重啟,錄影完成前自動停止全部都可以被官方解讀為正常行為...


撰寫於:2017/10/1 00:45:40 / 回應已關閉
正在讀取回響內容...
流動巴士版圖新版本發佈

在相隔了半年時間後,流動巴士版圖釋出新版本。這次的更新主要是改進離站時間查詢的準確度,沿用的資料來源有時候提供的資料跟實際有點差距,於是啟用基於官方資料的新資料來源,再經過幾星期的測試及調整後整合於這次釋出的版本。新的離站時間查詢使用起來跟舊方法基本無異,顯示時只增加了是否為估算時間的字樣。不過有一點要留意的是,新方法需要保持資料庫更新,如果程式的資料庫與現時間本相差超過5個版本時將無法使用新方法,而當新方法無法使用時會自動回到舊方法。新方法適用的路線包括所有九巴路線以及部份新巴/城巴路線 (不支援的路線會回到舊方法),至於合營線則會根據時段決定使用的方法。


撰寫於:2017/9/5 00:25:13 / 回應已關閉
正在讀取回響內容...
其他較舊內容請移步至舊部落格版面