從 Java 開發者角度看 JavaScript 之語法差異 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 - 12月 09, 2018 本篇是我的研究心得筆記,用 Google 文件撰寫。 內容會根據學習情況不定時更新,且直接複製貼上的版面不好看,也懶得再修改...... 請透過以下連結觀看: https://goo.gl/72qPpk 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言
Android 藍牙連接通訊實作心得 - 1月 14, 2019 最近因為專案需求,進行了一些藍牙通訊的研究。 首先來看官方線上文件: Bluetooth overview - Connect devices 前面描述開啟藍牙或搜尋、被搜尋……等較為基本的部份先跳過。從連接裝置(Connect devices)這一節開始,首先要將兩個裝置配對,然後使用 BluetoothAdapter 的 getBondedDevices() 方法取得已配對的裝置資訊,並從中取出 MAC address。 接下來我們需要一組 UUID (通用唯一識別號)作為藍牙服務的識別碼。在網路上有許多 UUID 產生器,例如: https://www.uuidgenerator.net/ 。找一個喜歡的使用即可。 因為藍牙的連接模式是由一個 Client 端主動發起連線給被動監聽的 Server 端,因此程式碼需要分別撰寫 Server 與 Client 端的動作。 首先來看接收藍牙連接的 Server 端程式碼: 接受連接的步驟為: 調用 listenUsingRfcommWithServiceRecord(String, UUID) 取得 BluetoothServerSocket 調用 accept() 開始監聽連線請求 在 manageConnectedSocket(socket) 副程式中管理 socket 連線。這部份後面再詳述。 調用 close() 關閉監聽連線請求 然後是藍牙連接的 Client 端程式碼: 發起連接的步驟為: 調用 createRfcommSocketToServiceRecord(UUID) 取得 BluetoothSocket。 調用 connect() 發起連接 在 manageConnectedSocket(socket) 副程式中管理 socket 連線。 到這邊可以發現到,Client 和 Server 都在第三步驟調用了 manageConnectedSocket(socket) 副程式,但是官方線上文件並沒有進一步說明這個副程式的內容。 所幸我在官方範例程式中找到了藍牙連接的範例程式: BluetoothChat 從中得知,原來是要啟動另一個 Thread:ConnectedThread 而 ConnectedThread 的程式 閱讀完整內容
Android App 存取 Google 雲端硬碟(Google Drive) - 1月 29, 2019 如果 Android App 有資料備份的需求,可以考慮使用 Google 雲端硬碟的服務。本篇文章會簡單說明一下實作必要流程與介紹官方工具的使用。 閱讀完整內容
在 Android 上自訂 Zxing 掃描框樣式與大小位置 - 2月 26, 2019 前言 Zxing 是知名的條碼辨識函式庫,可以整合在 Android、iOS......等平台的 App 上。 網路上已經搜尋的到許多使用教學,不過在深度客製化(如自訂 layout)上,多半都是用修改原始碼的方式去實現。直接修改原始碼固然方便快速,但缺點就是當有兩種以上客製需求時,必須撰寫額外的判斷式去處理。以模組化的概念來看,這樣的作法不是很漂亮。 因此,本篇文章著重在運用繼承和撰寫 layout XML 檔的方式實作客製化。 自訂掃描介面佈局 Zxing 最簡單的使用方式是利用 IntentIntegrator 物件去呼叫掃描器並接收回傳的掃描結果,而缺點也顯而易見的是無法客製化整個介面佈局。 基本的客製化方式是自行在 res/layout 目錄下建立 XML 檔,然後加入 <com.journeyapps.barcodescanner.DecoratedBarcodeView> 元件。如此就可以讓掃描畫面呈現在 App 畫面的某個區塊,而不用佔滿整個畫面。 其中有些屬性可以再進一步客製化 DecoratedBarcodeView 本身的外觀樣式,常用的有: app:zxing_framing_rect_width=掃描框的寬度 app:zxing_framing_rect_height=掃描框的高度 app:zxing_scanner_layout=套用自訂的 layout 而 app:zxing_scanner_layout 套用的 layout 中必須要包含繼承自 BarcodePreview 和 ViewfinderView 的兩個元件才能構成一個完整的掃描器。 客製化掃描框樣式 ViewfinderView 負責描繪掃描畫面中的掃描框,我們可以繼承並覆寫它的 onDraw() 方法。 下面範例的頂端幾個變數和 onDraw() 方法中的 [Custom start/end] 之間的程式碼是我所增加的部份,其他是直接從原始碼複製過來的。 下圖是客製化的結果,在掃描框四個角落加上了橘色邊邊。 客製化掃描框位置 BarcodePreview 負責顯示相機拍到的畫面以及定義解析區域在畫面上的範圍大小( 前面提到的 ViewfinderView 只是像濾鏡一樣覆蓋在 閱讀完整內容
留言
張貼留言