跳到主要內容

發表文章

目前顯示的是有「Android」標籤的文章

啟用 Android emulator 網路連線功能

最近用了超過3年半的手機壞了 不過因為下一支想買的Pixel 3還沒出,所以先拿了隻很舊的淘汰備用機撐著 這隻的版本舊到連我寫的App都不會支援,不過當然App的開發還是得進行下去😅 這下不能用實機測試,就得查詢怎麼讓 emulator 能夠連線到電腦網路 emulator 不能連網路的原因是缺少他使用的DNS紀錄 AVD Manager 的GUI介面沒有選項讓我們設定,所以若要連網就不能透過 AVD Manager 在Windows環境下先叫出 command line cd    $Andoird_SDK_Route \emulator                                         <-  SDK 路徑請替換成自己的 emulator -avd $Emulator_Device_Name -dns-server 8.8.8.8   <- 替換自己設定的 Emulator 裝置名稱 如果不清楚自己設定的 emulator 裝置名稱,可以透過 emulator -list -avds 這個指令查詢 指令下完就會自動幫我們叫出可以連網的 Emulator 了 示範指令是使用Google的 8.8.8.8 DNS Server,這個可以根據自己需求替換 另外留意下如果你在 App 裡是用 BroadcastReceiver 註冊監聽裝置網路狀態 用這個方式叫出來的 Emulator 將不會接收到這個廣播

Android 製作簽名擷取View

前一陣子有個 Android 開發需求是做一個簽名擷取的component 查詢了Android文件後沒看到可以直接用的相關套件 原本以為應該是商用上不罕見的功能才是? 看了一下SEO排前的類似專案,大概有style另外設定、UI固定格式等等我不喜歡的因素 所以決定寫一個簡單又比較容易跟其他自訂 component 整合的View 跟Dialog整合的成果圖如下:

從 Android device 取得App crash log

參考資料: https://wiki.cyanogenmod.org/w/Doc:_debugging_with_logcat Android developer 大概都會有協助測試 app 執行狀況的需求 不過如果不是用 Android Studio build 的話,crash report 只能從 device本身拿出來才看的到 以 Windows 為例的取得方式如下: 1.Win+R 叫出執行後,輸入 cmd 啟用命令提示字元 2.切換到 Android SDK 底下的 platform-tools 目錄 C:\Users\vencil>D: D:\SubPrograms\AndroidSDK\tools>cd D:\SubPrograms\AndroidSDK\platform-tools 3. 下指令 adb logcat *:E > [destination] 就可以將log輸出到目的檔案裡了 D:\SubPrograms\AndroidSDK\platform-tools>adb logcat *:E > D:\errlog.log 如果想在不移除app的狀況下清除累積的log,可以用 logcat  指令帶 -c flag D:\SubPrograms\AndroidSDK\platform-tools>adb logcat -c

Android Webview 使用 Basic Authentication 通訊

參考文章: http://en.wikipedia.org/wiki/Basic_access_authentication 這篇沒有技術成分,當成聊聊 Basic Authentication 就好 Basic Authentication 的說明看英文的wiki會比較明顯,中文的wiki我反而看不懂... 作為早期開發的使用者身分認證交換機制 他的優點在於簡單,不需要cookie、session 只需要在瀏覽器送出的Request裡加入header即可,所有瀏覽器均支援此機制 缺點也很明顯,就是安全性不夠好 所以現在的網路身分認證基本上不會用這個方式進行 現在會看到他的場合大多是軟體服務商提供的 API 通訊 不少的公開API服務的進行方式會是: 進行使用者身分認證 -> 取得Token -> 用Token 進行 Basic Authentication,並進行API操作 服務商的Server端會根據Token判別使用者,並依此決定回傳的內容 在JavaScript添加 request header 的需求常見,所以做法好找也不多提了 之前開發 Android 程式時需要用webview 查了下發現做法非常簡單,loadUrl method有一個版本能傳入Header為第二個參數 HashMap<String, String> extraHeaders = new HashMap<String, String>(); traHeaders.put("Authorization", "Basic " + Token); mWebView.loadUrl(url, extraHeaders); 這樣就是常見的API Token在Webview裡的使用方式囉

Android - ImageView 移除多餘 Padding

使用 ImageView 顯示圖片時發現有多餘的Padding出現 查詢過後得到原因的解釋 因為手機解析度(density)的差異 ImageView在不同的裝置上的邊界顯示會有所不同 要確保圖片的顯示正確,可以在 ImageView 上設定adjustViewBounds屬性 <ImageView             android:layout_width="wrap_content"             android:layout_height="wrap_content"             .....             android:adjustViewBounds="true" />

Android 在 ScrollView 裡使用 ListView

這篇純粹拾人牙慧,來源是  How can I put a ListView into a ScrollView without it collapsing? 如同大家知道的的,ListView 放入 ScrollView 之後就變成疊起來的狀態 實際上 ListView 本身就能夠 scroll,只要將 layout_height 設定成 wrap_content 就可以了 把兩個具有 scroll 能力的元件疊加使用反而會沒辦法正常顯示 但有時候你想做的會是將複數個 ListView 並排展開 外面再包一層 ScrollView 讓一次就能捲動所有的 ListView 這時候就需要一些特殊技巧處理 提醒如果你要製作的排版並不複雜 也許只需要透過 ListView 的 addHeaderView、addFooterView 就能滿足需求 如果你要捲動的範圍內包含了文字、圖片、很多個ListView等複雜的排版,才建議使用這個方式

Android Studio 初探

參考文章: IntelliJ IDEA Q&A for Eclipse Users ndroid Studio vs. Eclipse: What You Need To Know last update:2014/12/9 Android Studio是Google的Android官方開發工具,目前正式推出1.0版了 這項工具是 IntelliJ 的開源版本 + Android SDK + Gradle 的整合 取名Android Studio大概是因為這樣才會有比較多人用吧 Google已經確定不會繼續維護Eclipse上的開發套件ADT 現在已經沒有理由不用Android Studio了 Google將他調校的滿不錯,很多快捷鍵跟新功能都很方便 這篇是我從ADT轉換過來的摸索,圖片有時間的話再更新成1.0版的圖示

建立 Android 專案的 build.xml

參考文章: GENERATING A BUILD.XML FOR AN ANDROID PROJECT Android tool 提供了建立 builder.xml 的功能 使用 Ant 跑過這個檔案後就可以產生 Android 專案的apk檔 在Windows環境下,你需要先將 .android\sdk\tools 加入系統的環境變數的 path 下 將著在命令提示字元下 android update project -p [專案路徑] -n " [apk名稱] " -s 這樣就可以產生專案用的 build.xml 看之後是繼續使用 command line 下 ant release 或其他方式取得apk檔

Android AsyncTask 較佳的 Exception 處理方式

Android 在 4.0 以後規定有網路連線的程式必須寫在另外的Thread,主Thread 負責處理與UI相關的部分 Android裡的 AsyncTask 是符合這個需求比較好的解法,他本身實作了 Java 的 concurrent 套件 所以透過它可以省掉一些實作上的細節 只是App中最常碰到的 Exception 大多是網路連線引發的 一旦沒有處理到 Exception 就很容易導致 App crash App 本身的 Exception 處理不像 Java Web 那樣有 filter、error page 等機制 參考討論後大概是以下方式比較好處理 Multi-Thread 引發的 Exception

PhoneGap 2.x包裝HTML文件為Android App

PhoneGap是一個行動開發框架 目的是讓開發者使用HTML5技術開發應用程式後,就能快速的部署到各平台 使開發者能專注在程式本身及減少學習上的成本 HTML5應用程式經過PhoneGap轉換後會變成原生應用程式 網頁本身會使用平台核心的瀏覽器功能讀取,例如:android.webkit.WebView 而透過呼叫PhoneGap的API,應用程式就能使用平台原生的相機功能、影片、音樂等 PhoneGap的官網: http://phonegap.com/ 教學引導 在被Adobe買下後,PhoneGap的核心被捐贈給Apache基金會,並改名為Apache Cordova專案 本篇文章僅示範PhoneGap在Android平台的簡單使用 以Eclipse IDE為示範進行開發,建議先參考 Android SDK開發環境設定 以下為開發工具版本,對於2.x版應該都適用 Eclipse:4.2 Juno PhoneGap:2.5.0

Android SDK開發環境設定

開發Android程式需先安裝Java的JDK工具和Android SDK Java的安裝參考 以前文章 ,Android開發者網址為 http://developer.android.com/sdk/index.html 在之前,Google的作法是將安裝套件拆開讓開發者自行搭配 但因為使用率不彰的關係,現在整合成ADT(Android Developer Tool)簡化開發者的安裝步驟 裡面包含了SDK本身、AVD模擬器以及Google為Android設計的Eclipse版本 雖然說開發不限定IDE的類型,但Eclipse是Google投入最多資源協助的IDE