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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM