Быстрая проверка с помощью od -c
показывает, что gnome-terminal генерирует эти значения:
Стрелка влево создает ESC
- [
- D
.
Управление -left-array генерирует ESC
- [
- 1
- ;
- 5
- D
В качестве примера посмотрите «Сборщик журналов». Вот соответствующий файл .
Ключ здесь:
ArrayList<String> commandLine = new ArrayList<String>();
commandLine.add("logcat");//$NON-NLS-1$
[...]
Process process = Runtime.getRuntime().exec(commandLine);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
это также зависит от того, что вы запускаете в терминале... если вы запускаете "cat" на файле, вы также можете сделать это так.
final private String MEM_FILE = "/proc/meminfo";
public Long readMem() {
String[] segs;
FileReader fstream;
try {
fstream = new FileReader(MEM_FILE);
} catch (FileNotFoundException e) {
Log.e("readMem", "Could not read " + MEM_FILE);
return false;
}
BufferedReader in = new BufferedReader(fstream, 500);
String line;
try {
while ((line = in.readLine()) != null) {
if (line.indexOf("MemTotal:") > 0) {
Log.e("MemTotal", line);
segs = line.trim().split("[ ]+");
memTotal = Long.parseLong(segs[1]);
}
if (line.indexOf("MemFree:") > 0) {
Log.e("MemFree", line);
segs = line.trim().split("[ ]+");
memFree = Long.parseLong(segs[1]);
}
}
updateMem(); //call function to update textviews or whatever
return true;
} catch (IOException e) {
Log.e("readMem", e.toString());
}
return false;
}
EDIT: Есть прекрасный пример для вас в проекте android labs под названием netmeter. Там есть класс под названием Top.java, который на самом деле делает именно то, что вы хотите, и он используется в TaskList.java для отображения. http://code.google.com/p/android-labs/source/browse/#svn/trunk/NetMeter/src/com/google/android/netmeter
Хорошо, вот что именно у меня сработало на случай, если кому-то понадобится в будущем... :)
Окружай в попытке поймать
try {
Process process = Runtime.getRuntime().exec("top -n 1 -d 1");
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
} catch (InterruptedException e) {
e.printStackTrace();
}