Android系统信息获取 之十三:Linux内核版本信息获取


Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Linux版本是什么,而是通过工具或者使用代码的方法去获取我们使用的Android源码或者我们的Android手机目前使用的Linux版本。

首先,使用adb工具我们能够很快获取Android手机(Android模拟器)的Linux内核版本。

adb工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核:

USER-NAME@MACHINE-NAME:~/Android$ adb shell

这时候如果是第一次运行 adb shell命令,会看到以下输出,不用管它,再运行一次adb shell命令就可以了。

切换到proc目录:

root@android:/ # cd procroot@android:/proc # cat versionLinux version 3.0.8 (user@machine) (gcc version 4.4.3 (GCC) ) #1 SMP PREEMPT Mon Mar 3 11:32:08 CST 2014

机器名user@machine;日期Mon Mar 3 11:32:08 CST 2014;Linux内核版本为Linux ersion 3.0.8

其次,在一些应用中我们有可能需要获取Linux内核的版本信息,基于adb命令行的的获取方式,我们知道Linux版本信息是通过Linux命令获取的,那么该过程我们当然可以通过代码来实现它。


/*** * 获取Android Linux内核版本信息 */public void getLinuxKernalInfo() {Process process = null;String mLinuxKernal = null;try {process = Runtime.getRuntime().exec("cat /proc/version");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// get the output lineInputStream outs = process.getInputStream();InputStreamReader isrout = new InputStreamReader(outs);BufferedReader brout = new BufferedReader(isrout, 8 * 1024);String result = "";String line;// get the whole standard output stringtry {while ((line = brout.readLine()) != null) {result += line;// result += "\n";}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}if (result != "") {String Keyword = "version ";int index = result.indexOf(Keyword);Log.v(TAG, "----"+result);line = result.substring(index + Keyword.length());index = line.indexOf(" ");// tv01.setText(line.substring(0,index));mLinuxKernal = line.substring(0, index);Log.d(TAG, "----Linux Kernal is : " + mLinuxKernal);}}

除了上面的方法以外还可以通过给processbuilder传入一个String数组,String数组有两个String,前一个代表liunx系统的命令,后面一个代表要执行该命令的文件然后就是获得该命令执行后所返回的字符串信息以流的形式再传回来得到 result。

这个方法和上面的大同小异,只是使用的方法略微不同。

具体如下:


public String getLinuxKernalInfoEx() {String result = "";String line;String[] cmd = new String[] { "/system/bin/cat", "/proc/version" };String workdirectory = "/system/bin/";try {ProcessBuilder bulider = new ProcessBuilder(cmd);bulider.directory(new File(workdirectory));bulider.redirectErrorStream(true);Process process = bulider.start();InputStream in = process.getInputStream();InputStreamReader isrout = new InputStreamReader(in);BufferedReader brout = new BufferedReader(isrout, 8 * 1024);while ((line = brout.readLine()) != null) {result += line;// result += "\n";}in.close();} catch (Exception e) {e.printStackTrace();}Log.i(TAG,"----Linux Kernal is :"+result);return result;}

在开发中可酌情使用。

----------------------------------

欢迎浏览、技术交流 请尊重劳动成果 转载请注明出处,谢谢!

http://blog.csdn.net/netwalk/article/details/20928221



更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
  3. android“设置”里的版本号
  4. android 获取唯一标识
  5. Android(安卓)version and Linux Kernel version
  6. android拍照与读取相册
  7. opengrok setup on ubuntu for android source code browser
  8. Android(安卓)热点开关状态的判断和获取热点ssid
  9. Android软键盘适配问题

随机推荐

  1. android之点击事件ImageView切换
  2. android 游戏开发-libgdx(一)
  3. android 线程方式打印log到sd卡
  4. android开机启动代码
  5. android 入门 Gallery
  6. Android(安卓)断点续传
  7. android 手电筒demo
  8. android Thread和Runnable的区别
  9. android 古怪问题解决集合
  10. Android动态改变TextView字体颜色