1. 程式人生 > 實用技巧 >android中設定裡面版本號的顯示

android中設定裡面版本號的顯示

os:android7.1

客戶需求:整個板子的軟體程式由系統軟體和mcu軟體組成,mcu軟體每次燒錄了新版本之後,需要也能顯示出來版本號。

解決方案:可以參照android的版本號,做一個拼接的顯示。

  因此要捋順android版本號的整個顯示流程。

1.在檔案 packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java 中:

  setStringSummary("build_number", Build.DISPLAY);

  指定了設定--關於裝置--版本號。

2.Build.DISPLAY即Build類中的 DISPLAY 變數,在檔案frameworks/base/core/java/android/os/Build.java 中:

  public static final String DISPLAY = getString("ro.build.display.id");

3.當 android 系統跑起來 之後,會讀取 /system/build.prop 檔案裡 對應的 字串;

  ro.build.display.id=xxxxxx;

4.ro.build.display.id在檔案build/tools/buildinfo.sh中:

  echo "ro.build.display.id=$BUILD_DISPLAY_ID"

  build/tools/buildinfo.sh 檔案 會把 內容 寫到/system/build.prop 檔案裡,供 java檔案 讀取.

5.通過讀寫檔案的方式,讀取版本號:

+   private static final String MUC_VERSION = "/sys/android_pic/mcu_version";

public
static String GetMcuVersion(String paramString) { + File localFile = new File(paramString); + String result = "wmc"; + Log.v("wmc", "mcu path=" + paramString);
+ if (!localFile.exists()) + System.out.println(paramString + " not exist!"); + + try { + FileInputStream fis = new FileInputStream(localFile); + BufferedReader br = new BufferedReader(new InputStreamReader(fis)); + result = br.readLine(); + //System.out.println("版本 = "+result); + br.close(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }

+ + return result; + }

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);

+ //wmc add
+ String mcuversion = GetMcuVersion(MUC_VERSION);
+ Log.d("wmc","mcuversion is:" + mcuversion);
+ ////
+
addPreferencesFromResource(R.xml.device_info_settings);

說明:MUC_VERSION是要讀取的檔案路徑,其是kernel底層實現的一個sysfs介面,該介面實現通過cpu與mcu的i2c通訊,讀取mcu發過過來的資料,上層應用再讀該檔案。底層怎樣實現這裡不做闡述。每次開啟系統設定-關於裝置時,DeviceInfoSettings.java都會onCreate一次,String mcuversion = GetMcuVersion(MUC_VERSION);都會讀取一次.

5.把讀取到的mcu版本號與系統版本號拼接顯示:

  通過前面的分析,可知版本號是setStringSummary("build_number", Build.DISPLAY);實現的。所以,可做個簡單的如下寫法:

  setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY+"&"+mcuversion);

參考:https://www.cnblogs.com/codeking100/p/10239224.html

  https://www.jb51.net/article/186258.htm