編輯:關於Android編程
這裡說明一下具體使用場景及方法:
需求:有一個應用需要操作mtd flash,這是一層比較底級的接口操作,針對此類接口封裝好了libmtd_flash.so,但是同時
碰到一個問題,應用對設備沒有訪問權限,多放查證增加了對sdcard的訪問等還是不行,那麼解決這個問題的方法就是兩個:
1、在c++層做一個service,使用binder作為客戶端聯系橋梁
2、使用android自帶的屬性系統
從使用的場景及數據量,還是復雜度多方面考慮,決定采用屬性系統共享數據
1、首先我們知道:
Native代碼
當編寫Native的程序時,可以使用property_get和property_set API來獲得和設置屬性。使用這兩個API必須要包含頭文件和鏈接libcutil庫。
Java代碼
Android在Java庫中提供System.getProperty和System.setProperty方法,我們Java程序可以通過他們來設置和獲得屬性。
由於我們在native層編寫代碼,所以使用property_get和property_set即可
2、列一下屬性系統的接口函數
/* property_get: returns the length of the value which will never be
** greater than PROPERTY_VALUE_MAX - 1 and will always be zero terminated.
** (the length does not include the terminating zero).
**
** If the property read fails or returns an empty value, the default
** value is used (if nonnull).
*/
int property_get(const char *key, char *value, const char *default_value);
/* property_set: returns 0 on success, < 0 on failure
*/
int property_set(const char *key, const char *value);
ok,沒有什麼初始化或者啥的函數,直接使用set、get即可,相當方便
3、實現使用
a、直接編譯一個可執行後台進程運行
b、在些中讀取和設定mtd flash中數據,比如open/read/write/erase等等操作,將其數據保存到內存中,對於
只需要get的屬性數據直接從內存中查找即可
c、對於write/erase等對flash中數據改寫的操作,同步內存中數據及屬性系統中數據即可
d、對於上層應用或其它進程需要訪問相關數據直接利用property_get/property_set即可
優點:一個後台進程,服務於所有客戶端並保持數據一致,最重要的解決了權限問題,因為由init啟動的服務進程帶有root權
package com.gc.adapterviewflipperdemo; /** * 功能:自動播放的圖片庫 * @author Android將軍 */ /*
不管是出於什麼樣地考慮,android系統終究是提供了hardware層來封裝了對Linux的驅動的訪問,同時為上層提供了一個統一的硬件接口和硬件形態。一.Hardwar
前言先看看效果怎麼樣不錯吧?別急下面我就一步一步的教你實現。用到的知識點總結:1.Canvas和pint的使用,我們用它畫點,線,字2.View的基本用法其實做這個東西還
設計思路:1.畫柱狀圖2.畫豎線3.畫頂部橫線4.畫文字1.畫柱狀圖畫柱狀圖的方法很簡單,就是使用canvas.drawRect(float left, float to