Time of Update: 2018-12-03
最近要修改packages/apps目錄下的Settings,需要加些功能上去,需要加入的代碼在eclipse上類比OK了,於是搬到Android
Time of Update: 2018-12-03
轉自:http://qiuzhenqing.blog.edu.cn/2010/576669.html。作者:qiuzhenqing 目前android還沒有有關FMRadio的application介面類,下面對目前存在的一個實現案例進行分析。 硬體: BCM4329 + CPCAP 要求:BCM4327需要串連RX天線 audio analog out與CPCAP相連 軟體: FMRadio.apk -->
Time of Update: 2018-12-03
源碼: frameworks/base/media/java/android/media/RingtoneManager.java frameworks/base/media/java/android/media/Ringtone.java frameworks/base/core/java/android/preference/RingtonePreference.java
Time of Update: 2018-12-03
原文地址:http://blog.csdn.net/hmg25/article/details/6447067最近在做個東西,巧合碰到了sharedUserId的問題,所以收集了一些資料,存存檔備份。 安裝在裝置中的每一個apk檔案,Android給每個APK進程分配一個單獨的使用者空間,其manifest中的userid就是對應一個Linux使用者都會被分配到一個屬於自己的統一的Linux使用者ID,並且為它建立一個沙箱,以防止影響其他應用程式(或者其他應用程式影響它)。使用者ID
Time of Update: 2018-12-03
Android手機中內建了一款高效能webkit核心,該核心完美封裝到了WebView組件中,而從js中直接調用java方法和在java中直接調用js方法更是讓我們看到了WebView的強大,下面這個小例子介紹了怎樣在js和java中雙向調用方法1.首先是布局檔案main.xml <?xml version="1.0" encoding="utf-8"?><LinearLayout
Time of Update: 2018-12-03
現在在Android上的HAL開發總的來說還是隨意性比較大,Android也並沒有規範好一個具體的架構,下面我將根據Jollen的Mokoid工程,自己做了一些改動,分別給大家介紹一下三種實現方式。這篇先介紹最簡單的一種實現方式 - Java應用程式直接調用JNI庫。由於JNI技術的存在,在Android中,java程式能夠很好的調用C/C++庫。我們這裡設計一個簡單的HAL,一共只有三層: HAL stub <-> JNI 庫 <->
Time of Update: 2018-12-03
一個Android.mk file用來向編譯系統描述你的原始碼。具體來說:該檔案是GNU Makefile的一小部分,會被編譯系統解析一次或多次。你可以在每一個Android.mk
Time of Update: 2018-12-03
可以一次開啟LOGV,LOGI,LOGD,也可以分別開啟:#undef NDEBUG //開啟LOGV/LOGI/LOGD#define LOG_NDEBUG 0 //開啟LOGV#define LOG_NIDEBUG 0 //開啟LOGI#define LOG_NDDEBUG 0 //開啟LOGD舉例舉例,如果要看AndroidRuntime的LOGI和LOGD,可以有這樣2種寫法:方法一NDEBUG-LOG_NDEBUG=LOG_NIDEBUG
Time of Update: 2018-12-03
類型註冊過程在MediaPlayerPrivateAndroid中的registerMediaEngine中會註冊supportsType,這個值是通過MediaPlayerPrivate::supportsType函數賦值的,進一步跟蹤發現調用到了WebViewCore.cpp中的WebViewCore::supportsMimeType,這個函數是通過JNI擷取到WebViewCore.java中的supportsMimeType方法的值,跟到這裡我們可以看到實際使用的是媒體庫中的Media
Time of Update: 2018-12-03
曾經在某位部落格上看到的,記錄一下。只需要在tools目錄下寫如下的bat指令碼,即可正常運行CTS@echo offset CTS_ROOT=..\..rem set RDBG_FLAG=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=0set CTS_LIB=%CTS_ROOT%\android-cts\tools\cts-tradefed.jarset DDM_LIB=%CTS_ROOT%\android-cts\
Time of Update: 2018-12-03
在上文中我們實現了利用Service來設計HAL,但是根據Android的架構,一般應用程式都不直接和Service打交到,中間需要經過一個Manager層。我們在這裡也按照Android的架構,進一步最佳化HAL的設計。結構如下:HAL stub <-> JNI 庫 <-> JAVA Service <-> Manager <-> JAVA
Time of Update: 2018-12-03
Android對硬體的調用,google推薦使用HAL的方式進行調用,對於Andriod HAL的寫法,可以參考android源碼裡的hardware目錄下幾個模組的模版。在看HAL的編寫方法的過程中,會發現整個模組貌似沒有一個入口。一般說來模組都要有個入口,比如應用程式有main函數,可以為載入器進行載入執行,dll檔案有dllmain,而對於我們自己寫的動態連結程式庫,我們可以對庫中匯出的任何符號進行調用。問題來了,Android中的HAL是比較具有通用性的,需要上層的函數對其進行載入調用,
Time of Update: 2018-12-03
網上Android數位簽章大多是與Android APK相關,而介紹Android系統簽名的方法卻不多。正巧前段時間幫別人做CTS 認證,需要用到給Android系統簽名。為什麼需要給Android系統簽個名才能進行CTS認證呢?原來我們通過make -j4編譯出來的system.img使用的是test
Time of Update: 2018-12-03
gdb在android開發中的使用相信很多開發人員都很想掌握,今天我們就用gdb在AndroidEmulator中進行調試,讓大家學習gdb調試。在Android手機開發平台的emulator裡,有兩種方式可以做Gdb調試:直接使用GdbServer或利用Gdb調試進行調試。 1、利用Gdb Server進行調試: A、從下面的連結中下載針對Android的Gdb Server http://http://ftp.gnu.org/gnu/gdb/ B、把下載的Gdb
Time of Update: 2018-12-03
Android 編譯系統分析之返璞歸真 自Android開源以來,引起了嵌入式行業一股熱潮,很多嵌入式開發人員表示對Android有很強的興趣,並下載Android源碼進行編譯和移植。Android源碼的巨大(repo下來,大概2G)給人以Android相當複雜的錯覺。本文從Android編譯系統的角度,讓大家瞭解Android其實也是很純真的。Android編譯系統(build system)集中於Android源碼下的build/core下,在Android2.2中,共有56個*.mk檔案。
Time of Update: 2018-12-03
SQLite 資料庫功能非常強大,使用起來也非常方便,SQLite資料庫的一般操作包括:建立資料庫、開啟資料庫、建立表、向表中添加資料、從表中刪除資料、修改表中的資料、關閉資料庫、刪除指定表、刪除資料庫和查詢表中的某條資料。下面我們分別來學習這些基本操作。 1.建立和開啟資料庫 在Android
Time of Update: 2018-12-03
Binder是Android系統中實現處理序間通訊的核心機制,其本質是一種Proxy模式的具體實現,就像COM,CORBA一樣。 Proxy模式的基本思想是用戶端程式通過某種方式得到伺服器端的代理對象,所有對伺服器端的服務要求都發送給該代理對象,該代理對象負責同伺服器端進行通訊。從用戶端的角度看,訪問代理對象就如同訪問其它本機物件一樣;伺服器代理對象則屏蔽了所有的處理序間通訊細節。
Time of Update: 2018-12-03
想在Android系統中添加鈴聲,可以通過adb push 的方法,但如果要多次修改系統,每次push進去就顯得太費勁了,這裡有個簡單的方法,就是把鈴聲編譯進android
Time of Update: 2018-12-03
$ adb shell$ cd /data/data/com.android.providers.media/databases //進入media資料庫目錄 $ sqlite3 settings.db //啟動sqlite3SQLite version 3.6.22Enter ".help" for instructions
Time of Update: 2018-12-03
在這篇文章中,我們將深入剖析一下如何向系統註冊Service。 在第一篇文章的例子中,ExampleService通過如下語句向系統註冊服務。// File: ExampleService.cppint r = defaultServiceManager()->addService(String16("byn.example"), new ExampleService());