擷取Android手機CPU類型 ARM、ARMV7、NEON

來源:互聯網
上載者:User

1 查看手機CPU資訊

cmd——adb shell——cd /proc------cat cpuinfo


2 擷取cpu的是arm指令集,armv7指令集、還是neon指令集<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">/** * * [擷取cpu類型和架構] * * @return * 三個參數類型的數組,第一個參數標識是不是ARM架構,第二個參數標識是V6還是V7架構,第三個參數標識是不是neon指令集 */public static Object[] getCpuArchitecture() {if ((Integer) mArmArchitecture[1] != -1) {return mArmArchitecture;}try {InputStream is = new FileInputStream("/proc/cpuinfo");InputStreamReader ir = new InputStreamReader(is);BufferedReader br = new BufferedReader(ir);try {String nameProcessor = "Processor";String nameFeatures = "Features";String nameModel = "model name";String nameCpuFamily = "cpu family";while (true) {String line = br.readLine();String[] pair = null;if (line == null) {break;}pair = line.split(":");if (pair.length != 2)continue;String key = pair[0].trim();String val = pair[1].trim();if (key.compareTo(nameProcessor) == 0) {String n = "";for (int i = val.indexOf("ARMv") + 4; i < val.length(); i++) {String temp = val.charAt(i) + "";if (temp.matches("\\d")) {n += temp;} else {break;}}mArmArchitecture[0] = "ARM";mArmArchitecture[1] = Integer.parseInt(n);continue;}if (key.compareToIgnoreCase(nameFeatures) == 0) {if (val.contains("neon")) {mArmArchitecture[2] = "neon";}continue;}if (key.compareToIgnoreCase(nameModel) == 0) {if (val.contains("Intel")) {mArmArchitecture[0] = "INTEL";mArmArchitecture[2] = "atom";}continue;}if (key.compareToIgnoreCase(nameCpuFamily) == 0) {mArmArchitecture[1] = Integer.parseInt(val);continue;}}} finally {br.close();ir.close();is.close();}} catch (Exception e) {e.printStackTrace();}return mArmArchitecture;}
調用的該函數的樣本方法

/* * 擷取FFpeg解碼庫的名稱(如果是外掛程式,會涉及到一個向下相容的問題,例如:如果當前cpu是V7neo,而又沒有neon的解碼庫,必須要做向下相容出來 * ,如果有V7的庫就載入V7的庫,有V6的庫就載入V6的) */public static String getFFmpegLibName(Context context) {if (LIB_FFMPEG_NAME != null) {return LIB_FFMPEG_NAME;}Object[] arch = getCpuArchitecture();String libDir = getNativeLibraryDir(context);String libSysDir = "/system/lib";if ("ARM".equals(arch[0])) {try {String ffmpeg = String.format("ffmpeg-%d%s", (Integer) arch[1], (String) arch[2]);if (isFileExist(libDir + "/lib" + ffmpeg + ".so") || isFileExist(libSysDir + "/lib" + ffmpeg + ".so")) {return ffmpeg;} else {boolean isV7NeonCpu = "neon".equals(arch[2]);boolean isV7 = ((Integer) arch[1]) == 7 && "".equals(arch[2]);boolean isV6 = ((Integer) arch[1]) == 6;if (isV7NeonCpu) {if (isFileExist(libDir + "/libffmpeg-7neon.so")|| isFileExist(libSysDir + "/libffmpeg-7neon.so")) {LIB_FFMPEG_NAME = "ffmpeg-7neon";return "ffmpeg-7neon";} else if (isFileExist(libDir + "/libffmpeg-7.so")|| isFileExist(libSysDir + "/libffmpeg-7.so")) {LIB_FFMPEG_NAME = "ffmpeg-7";return "ffmpeg-7";} else if (isFileExist(libDir + "/libffmpeg-6.so")|| isFileExist(libSysDir + "/libffmpeg-6.so")) {LIB_FFMPEG_NAME = "ffmpeg-6";return "ffmpeg-6";}} else if (isV7) {if (isFileExist(libDir + "/libffmpeg-7.so") || isFileExist(libSysDir + "/libffmpeg-7.so")) {LIB_FFMPEG_NAME = "ffmpeg-7";return "ffmpeg-7";} else if (isFileExist(libDir + "/libffmpeg-6.so")|| isFileExist(libSysDir + "/libffmpeg-6.so")) {LIB_FFMPEG_NAME = "ffmpeg-6";return "ffmpeg-6";}} else if (isV6) {if (isFileExist(libDir + "/libffmpeg-6.so") || isFileExist(libSysDir + "/libffmpeg-6.so")) {LIB_FFMPEG_NAME = "ffmpeg-6";return "ffmpeg-6";}}}} catch (Exception e) {e.printStackTrace();}} else if ("INTEL".equals(arch[0])) {if (isFileExist(libDir + "/libffmpeg-x86atom.so") || isFileExist(libSysDir + "/libffmpeg-x86atom.so")) {LIB_FFMPEG_NAME = "ffmpeg-x86atom";return "ffmpeg-x86atom";}}LIB_FFMPEG_NAME = null;return null;}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.