編輯:關於Android編程
我手機的關於手機界面:

說明:
其中手機型號、Android版本、軟件版本通過系統Build類得到,處理器信息、內核版本通過讀取系統文件得到,基帶版本信息通過反射得到。
源碼:
package com.example.shen.phoneinfo;
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(phoneInfo, MODEL: + android.os.Build.MODEL);
Log.e(phoneInfo, CPUInfo:+getCPUInfo());
Log.e(phoneInfo, VERSION_RELEASE:+android.os.Build.VERSION.RELEASE);
Log.e(phoneInfo, VERSION_SDK:+android.os.Build.VERSION.SDK_INT + );
Log.e(phoneInfo, BaseBandVersion:+getBaseBandVersion());
Log.e(phoneInfo, KernelVersion:+getKernelVersion());
Log.e(phoneInfo, ID: + android.os.Build.ID);
}
/**
* 獲得處理器信息
* @return String
*/
public String getCPUInfo() {
try {
FileReader fileReader = new FileReader(/proc/cpuinfo);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String info;
while ((info = bufferedReader.readLine()) != null) {
String[] array = info.split(:);
if(array[0].trim().equals(Hardware)) {
return array[1];
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
*獲得基帶版本
* @return String
*/
public String getBaseBandVersion() {
String version = ;
try {
Class clazz= Class.forName(android.os.SystemProperties);
Object object = clazz.newInstance();
Method method = clazz.getMethod(get, new Class[]{String.class, String.class});
Object result = method.invoke(object, new Object[]{gsm.version.baseband, no message});
version = (String) result;
} catch (Exception e) {
}
return version;
}
/**
* 獲得內核版本
* @return String
*/
public String getKernelVersion() {
Process process = null;
String kernelVersion = ;
try {
process = Runtime.getRuntime().exec(cat /proc/version);
} catch (IOException e) {
e.printStackTrace();
}
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader, 8 * 1024);
String result = ;
String info;
try {
while ((info = bufferedReader.readLine()) != null) {
result += info;
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (result != ) {
String keyword = version ;
int index = result.indexOf(keyword);
info = result.substring(index + keyword.length());
index = info.indexOf( );
kernelVersion = info.substring(0, index);
}
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
return kernelVersion;
}
}
運行結果:

/proc/cpuinfo文件截圖

/proc/version文件截圖

手把手教你搞懂 Android 反編譯
我們知道,Android的程序打包後會生成一個APK文件,這個文件可以直接安裝到任何Android手機上,因此,反編譯就是對這個APK進行反編譯。Android的反編譯分
Android快速分析apk工具aapt的使用教程
前面walfred已經介紹了使用apktool對apk進行逆向編譯,通過apktool我們的確可以反編譯已經序列化後的AndroidManifest.xml和資源文件等等
手把手教你智能硬件開發(三) 控制LED燈
第3節 控制LED燈現在我們開始嘗試用代碼控制一個真正的直觀的硬件設備。第一個例子:讓Arduino開發板上的一個LED小燈周期性的打開、關閉。第二個例子:讓LED燈亮度
Android Studio(二)導入eclipse項目
一、導入單個Eclipse項目 1.在Eclipse中導出包含有gradle的項目,操作如下: 如果操作中出現finish按鈕是灰色的,將force overridin