当前位置: 首页 > article >正文

获取Android手机CPU类型 ARM、ARMV7、NEON

1 查看手机CPU信息

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


2 获取cpu的是arm指令集,armv7指令集、还是neon指令集

	/*** * [获取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;}


http://www.lryc.cn/news/2416095.html

相关文章:

  • 触摸屏介绍—电阻触摸屏+电容触摸屏
  • 模仿淘宝htmlcss源码_仿淘宝商城源码html
  • 解锁数据新世界!一网打尽最全数据统计宝藏网站
  • mysql的批量更新的语法_MySQL中的Sqlalchemy批量更新非常有效
  • 中兴盒子ZTE-B860AV1.1T、AV2.1-通刷-线刷固件
  • 国内十大源码下载类知名网站总体简评
  • Mac版R语言(四):pacman包——在R语言工程中一次性下载安装、导入多个包的方法
  • c语言通过easyx窗口实现小球打砖块的游戏
  • Office2003打开office2007文件的补丁
  • PAS启动:制台登录不了,用curl在服务器端测试没有反应,后台日志报错:Threads are going to be renewed over time to
  • http://www.baidu.com/cb.php?,存在劫持风险的第三方JS地址
  • 总结24个Python接单赚钱的平台,兼职月入5000+
  • 网页特效----HTML中树的实现方法
  • 不同网段怎么ping通_【知识积累】两个不同网段的路由器,如何互通?
  • ubuntu11.04国内源
  • 数模学习:模糊综合评价(上)
  • 最新推荐:【凯立德 移动导航系统】【V4.0 破解版】3D高清地图
  • 番茄被捏碎 微软将失去更多市场份额
  • 如何查看谷歌地图,教你几招
  • IE8浏览器提示网页上有错误,怎么解决?
  • mysql idataparameter_[转]另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]
  • 我的卓越亚马逊和当当购书经历
  • bios升级工具_雨林木风U盘启动盘装系统制作工具再次升级。。。
  • Linux 之 信号量
  • webservice 安全和加密的方法
  • 【程序员侠】李飞往事之键盘侠刘一刀
  • 败家MM
  • C语言设计模式
  • C语言10个经典小程序——小白必备!
  • 探索一种C++二进制模块的热更新机制