公告版位

新版部落格:blog.changyy.org

目前分類:Android (52)

瀏覽方式: 標題列表 簡短摘要

寫 Mobile app 不免要網路連線一下,這時候最簡易的方式就是像 php 的 file_get_contents 函數,只要呼叫一下,就得到想要的東西。然而,在測試 https 時,發現對方憑證並非經過第三方認證的,因此噴出錯誤訊息:android javax.net.ssl.SSLPeerUnverifiedException: No peer certificate,這資安保護的確還不錯,但對開發、測試實在不方便,在網路上有找到的解法是實作一個 SSLSocketFactory 來解決,雖然不知是不是正解,但至少可以 work 了 :P (總覺得應該要能某個參數設定一下就行,就像 php curl 的 CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 參數)

發送 http GET request:

文章標籤

changyy 發表在 痞客邦 留言(1) 人氣()

老話一句:為了給使用者有一致性的體驗,在 Android 環境上,使用 PagerAdapter/ViewPager 實作 iOS UIPageControl 效果。需額外 library (android-support-v4.jar) 來使用,請參考 Support Library | Android Developers 流程。

概念:

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

為了給使用者有一致性的體驗,在 Android 環境上,實作 iOS UINavigationController 效果。

實作的方式很...直觀,就是每個 Activity 最上頭都擺在一個區域(header)來達成啦 XD

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

tabhost_uitabbarcontroller

為了讓使用者有一致性的體驗,在 Android 環境中,可以使用 TabWidget/TabHost 來達成 iOS UITabBarController 的效果。

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

cursor

目標:在指定區域上,偵測手指觸碰位置並疊一張圖標記位置

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

android_imagebutton_resize

大概算是第二或第三次寫 Android app 吧,碰到一個很怪的現象,在 WVGA (480x800解析度),以一張 100px 方圖,橫放四張,理論上應該還會剩 480px - 4*(100px) = 80px 左右的範圍,但實際上圖形就是顯示不對,整個 ImageView/ImageButton 所顯示的圖被放大了,沒有剩下的空間,請教同事後,同事說這是 px 轉換成 dp 問題,但他還是說不出個所以然,後來經測試發現,這個問題是因為我把圖檔擺在 res/drawable 目錄下(在 Android 2.3.3 SDK 下,此目錄預設不存在),但 WVGA 預設是用 res/drawable-hdpi ,所以,只要把圖擺在 res/drawable-hdpi 內則會顯示正常。

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

MyContentProvider

整個流程在 Android 官網(Create Your Content Provider)已經有很豐富的介紹,在此筆記一下 :P 加快自己往後回憶。

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()


來源:Calendar Provider data model

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

MyDBHelper

SQLite 這幾年來已經成了一種標準用法,無論是嵌入式或是 PC 上的軟體,很容易看的到 SQLite 的蹤跡了。

文章標籤

changyy 發表在 痞客邦 留言(1) 人氣()

simple_list_item_1 simple_list_item_2

對 HTML 來說,所謂的 ListView 大概稱得上網頁上常看到的 ul、ol、dt 或是 table 吧!這東西真的是萬用的好工具,最直觀的排版,正所謂規規矩矩,不美也不會太醜。最近我終於開始在 Android 上使用這個東西了,光這功能就能讓你完成九成的工作了。更多 ListViewListActivity 的資訊,請參考官網的介紹,這邊僅簡易的筆記。

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

setting_about

最近把玩 AOSP 時,在 setting/about 可以看到此 AOSP 的編譯相關資訊,基於隱私想要更改他 XD 接著透過 grep -r "username" 的搜尋方式,發現此資訊擺放處:out/target/product/panda/system/build.prop 裡頭。

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

tw.study.rs_screenout

之前接觸 Renderscript - HelloCompute 時,第一次了解 Mono 特效是怎樣做的。這次則是要來筆記純用 Java 和 NDK 作的方式。

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

之前被要求測試 Android 4.0 的 Renderscript 是否可以做平行處理,但是隨著工作量的增加,一直把這件事擺在後頭,今天,終於測試完了!最早之前,我想到的是修改 HelloCompute 範例中的 mono.rs 檔案,裡頭的 root 函式是一個工作單位,如果一台裝置是多 CPU 且系統支援平行處理的話,理論上一次會有多個工作單位在進行。因此想說擺一個 static 變數在 root 函式中,每次把數值加一並印出,依此觀察系統運作時,印出的數字是否不連續,如果不連續或有相同時,想要把這當作有平行的依據。今天則想到一個更簡單的妙招,就是在 root 函式中,用一個 loop 讓它不結束,如此一來,在雙核心的 CPU 下,就會看到兩次訊息,單核心就只會看到一個!理由很簡單,因為工作沒做完,就不會分配新的工作。

這在 Pandaboard 上測試很成功,我看到了兩次 root 函式印出的訊息,然而,我更想要驗證自己設計的方式是不是對的,那就必須找只有一個核心的裝置,甚至四核心的裝置測試,如果在一個 CPU 的裝置只看到一次,在四核心的裝置可以看到四次,那代表驗證成功了。結果把構想跟同事分享後,同事教了我一個密技!那就是手動去更改 CPU 的狀態!對 Pandaboard 來說,就是強制把一個 CPU 關掉(offline),慶幸的,驗證對了!

文章標籤

changyy 發表在 痞客邦 留言(0) 人氣()

DDMSLocation

對 Android 模擬器來說,可以透過 DDMS 模擬 GPS 座標及其變化,然而在實體機器上卻沒看到幾篇相關文章?之所以用實體機器的主因,實在是平板模擬器跑太慢了!程式還是在實體機器跑得順多囉。

文章標籤

changyy 發表在 痞客邦 留言(1) 人氣()

最近摸到一台變形金剛,順便學習一些簡單的東西,這次目標就是取得 Calendar Events,對整個 Android 系統來說,有不少 App 都提供讓人存取的功能,在此以 Calendar 為例。

另外一提的,很多資料都是用 SQLite 格式儲存在系統裡頭,可以透過 DDMS 或其他 shell 方式瀏覽或取出 db 檔案(/data/data/com.android.providers.calendar/databases/calendar.db),接著可以用 Firefox Plugin - SQLite Manager 去查看也挺方便喔。(此動作需要root權限)

文章標籤

changyy 發表在 痞客邦 留言(1) 人氣()

我本身是 Native App Development 崇尚者(雖然沒啥開發經驗),理由很簡單,我樂於學習新的開發環境,想要 app 的效能最快,過去也曾探問過一些人的意見,有些大老闆就是力推 Native App ,理由就是要給使用者最好的使用經驗。然而,我的強者同事一直推薦 PhoneGap 的架構,他的理念是希望可以用一套固定且可延續性的學習經驗,應用在任何 mobile app 開發情境,這時就完全屬於 PhoneGap/HTML 的絕對領域!我也能體會在某個情境下並不太需要高效能的追求,這時候就可以好好善用 PhoneGap 所提供的便利性,只要是 Web Programmer 背景,會 HTML + JS + CSS 即可,剩下的只是安裝 app develpment 環境並看著 PhoneGap 使用手冊,也就行啦!

由於沒啥動力,就找了台北市政府九月才提供的公開資料(Open Data)當作範例,剛好可以透過 Javascript API 取得資料,再加上這類屬於查詢及資料呈列功能,不會有多嚴重的效率,所以,衝一發!

文章標籤

changyy 發表在 痞客邦 留言(4) 人氣()

之前的學習環境都是 Ubuntu 桌機為主,無聊在 ASUS Eee PC 1215N - Intel(R) Atom(TM) CPU D525 / 1.80GHz / 4GB RAM / Windows 7 32-bit 上,安裝 Eclipse 和 ADT 後,發現單獨啟動 Android 2.3.3 模擬器竟然只要 5 分鐘左右耶,這真是神奇了!(這個速度對這類裝備已經算很驚奇了),隨後我便開始著手看看在 Windows 使用 Android NDK 的環境了。

關於 NDK 的使用,採用 Cgywin 環境,如此一來就可以透過 ndk-build 進行編譯的動作了。

文章標籤

changyy 發表在 痞客邦 留言(5) 人氣()

一般使用 JNI 的情境,不外呼從 Java 呼叫 C ,接著在 C (底層)運算完後,把數值透過 return 的方式傳回給 Java (上層)端,這在官方 NDK 教學或是之前的筆記都可以看到簡單的範例:Android 開發教學筆記 - 使用 Android NDK (Native Development Kit)。然而,如果要從 Native C 去呼叫 Java function 的話,就不是那麼直觀,例如在 Unix 系統上的程式開發,則是需取得一個門牌號碼(process id),接著才跟他溝通,或是直接透過執行新的程式,去指定運行某個 function 的這種架構等。在此使用的環境為 Ubuntu 10.04 desktop 64-bit,提供簡易 C call Java 的範例。

一般 C call Java 的話,則需要建立一個 Java 運行的 JVM 通道,接著才開始找尋物件、函數並開始運作:

文章標籤

changyy 發表在 痞客邦 留言(2) 人氣()

之把某個 android app 產品進行反組譯的動作,只是單純地想要驗證該 app 的實作流程,但在 Java 層只看到一些 UI 介面的操作,算是驗證了半個想法,但總覺得缺少什麼,所幸在原本的 apk 檔案內發現了 xxx.so 檔案,透過很基本的 strings 指令可以查看一些敏感字眼,就這樣我找到了鐵證。心中有股莫名踏實感,雖然 xxx.so 檔只能瞧見一些關鍵字,但因為撰寫程式的把 function name 取得很容易猜測功能,所以加加減減就成了一種驗證。

前陣子上過幾個小時的 android 課程,恰好稍微提到 NDK 的部份,此部份主要是設計給遊戲類的使用,例如之前寫 OpenGL ES 時,必須透過 Android Java API 來呼叫,現在則可以直接用 NDK 寫 C 語言達成,除了解決繁瑣的 C to Java 語法,更可以避開 JVM 來提昇效能。除此之外,我覺得 NDK 也是可以用拿來保護關鍵程式碼囉。此筆記就當作簡單的測試 NDK 的用法,在此不提及安裝 Android 開發環境,有興趣可以查看Android & Eclipse 開發環境- 第一次安裝筆記。在此使用 Ubuntu 10.04 64-bit 環境。

文章標籤

changyy 發表在 痞客邦 留言(1) 人氣()

android-fb

在 Android 上使用 Facebook SDK 比在 iOS 上麻煩了一點,也算是安全性在高了一點點。

文章標籤

changyy 發表在 痞客邦 留言(2) 人氣()

«12 3