1.获取cpu信息:cpu信息存在于/proc/cpuinfo文件下,adb shell 进去后用 cat /proc/cpuinfo 可以查看
private String getCpuInfo() {
FileReader fr = null;
BufferedReader br = null;
String text=null;
StringBuilder sb=new StringBuilder();
try {
fr = new FileReader("/proc/cpuinfo");
br = new BufferedReader(fr);
text = br.readLine();
sb.append(text);
while (text!=null) {
text = br.readLine();
sb.append("\r\n");
sb.append(text);
}
//String[] array = text.split(":\\s+", 2);
return sb.toString();
//return array[1];
} catch (FileNotFoundException e) {
Log.d("you", "getCpuInfo FileNotFoundException e:"+e.getMessage() );
} catch (IOException e) {
Log.d("you", "getCpuInfo IOException e:"+e.getMessage() );
} finally {
try {
fr.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Log.d("you", "getCpuInfo return space" );
return "";
}
2.获取gpu信息 Android的GPU信息需要通过OpenGL来获取
实现一个GLSurfaceView.Renderer 将renderer设置给GLSurfaceView 在Activity中this.setContentView(glView);
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.app.Activity;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.util.Log;
public class DemoActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GLSurfaceView glView = new DemoGLSurfaceView(this);
this.setContentView(glView);
}
@Override
protected void onResume() {
super.onResume();
}
public class DemoGLSurfaceView extends GLSurfaceView {
DemoRenderer mRenderer;
public DemoGLSurfaceView(Context context) {
super(context);
setEGLConfigChooser(8, 8, 8, 8, 0, 0);
mRenderer = new DemoRenderer();
setRenderer(mRenderer);
}
}
public class DemoRenderer implements GLSurfaceView.Renderer {
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
Log.d("SystemInfo",
"GL_RENDERER = " + gl.glGetString(GL10.GL_RENDERER));
Log.d("SystemInfo", "GL_VENDOR = " + gl.glGetString(GL10.GL_VENDOR));
Log.d("SystemInfo",
"GL_VERSION = " + gl.glGetString(GL10.GL_VERSION));
Log.i("SystemInfo",
"GL_EXTENSIONS = " + gl.glGetString(GL10.GL_EXTENSIONS));
}
public void onDrawFrame(GL10 arg0) {
}
public void onSurfaceChanged(GL10 arg0, int arg1, int arg2) {
}
}
}
在实际中可以通过在布局中添加一个GLSurfaceView,当获取到信息后将其移除。
3.获取mac地址:分为有线和wifi
private String loadFileAsString(String filePath) throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader(filePath));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
}
reader.close();
return fileData.toString();
}
/*
* Get MacAddress
*/
private String getMacAddress(String name){//name可能传入eth0 eth1 eth2............
try {
return loadFileAsString("/sys/class/net/"+name+ "/address")
.toUpperCase().substring(0, 17);
} catch (IOException e) {
e.printStackTrace();
return null;
}catch (Exception e) {
return null;
}
}
private String getMacFromWifi(){
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
int state = wifi.getWifiState();//如果不成功可能尝试去打开wifi再来获取
if(state == WifiManager.WIFI_STATE_ENABLED ||state == WifiManager.WIFI_STATE_ENABLING ){
WifiInfo info = wifi.getConnectionInfo();
if(info==null){
return null;
}
return info.getMacAddress();
}
return null;
}
wifi也可以获取有线的方式(读取文件的方式)获取,wifi mac地址的文件是:/sys/class/net/wlan0/address