Android驅動學習-APP操作新硬體的兩種方法(支援添加的驅動)

來源:互聯網
上載者:User

標籤:如何   one   wrap   原生態   靜態   classname   兩種   initial   相關   

在給Android添加新的驅動後,app要如何使用呢?

正常的使用一個裝置,需要getService。但是像LED等我們自己添加的硬體驅動,Android原始碼根本沒有我們自己添加的服務。

第一種:

我們自己的建立的硬體裝置驅動的類是被系統定義為了隱藏類,那麼在Android系統中如何使用隱藏類呢?為此我們可以根據android的編譯過程可以看到我們添加的類被添加到framework.jar。但是framework.jar是dex格式,在我們做app時要使用原生態的jar目標檔案.

所以我們使用 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/class.jar這個jar檔案。

如何包含jar檔案,我們可以Google。

 第一步,把jar包放在工程下的libs目錄裡,如果沒有就建立這個目錄。

第二步,通過File菜單或者F4進入project structure,先在左上方選擇+號,然後添加class.jar,然後左邊選中app,再進到dependencies,點 + 選擇file dependency ,再從libs目錄選擇你要的jar包,選擇後把 scope置為Provide。即可。 第二種:通過反射來建立我們建立的類。也就是不用匯入class.jar檔案就能實現對我們自訂的類的建立和函數調用。我個人的理解就是使用 Class.forName靜態函數,通過已知的函數名來實現對函數的調用。 

Class.forName:返回與給定的字串名稱相關聯介面的Class對象。

Class.forName是一個靜態方法,同樣可以用來載入類。該方法有兩種形式:Class.forName(String name, boolean initialize, ClassLoader loader)和 Class.forName(String className)。第一種形式的參數 name表示的是類的全名;initialize表示是否初始化類;loader表示載入時使用的類載入器。第二種形式則相當於設定了參數 initialize的值為 true,loader的值為當前類的類載入器。

static Class<?>

forName(String className)

Returns the Class object associated with the class or interface with the given string name.

static Class<?>

forName(String name, boolean initialize, ClassLoader loader)

Returns the Class object associated with the class or interface with the given string name, using the given class loader.

通過類名擷取類。

Class serviceManager = Class.forName("android.os.ServiceManager");

擷取方法

Method method = serviceManager.getMethod("getService", String.class);

調用方法

method.invoke(serviceManager.newInstance(), "phone");

 

()http://blog.csdn.net/fengyuzhengfan/article/details/38086743

 

Android驅動學習-APP操作新硬體的兩種方法(支援添加的驅動)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.