Любой способ запустить команды оболочки на Android программно?

Быстрая проверка с помощью od -c показывает, что gnome-terminal генерирует эти значения:

Стрелка влево создает ESC - [ - D.

Управление -left-array генерирует ESC - [ - 1 - ; - 5 - D

37
задан Michael Mrozek 30 July 2010 в 01:56
поделиться

3 ответа

В качестве примера посмотрите «Сборщик журналов». Вот соответствующий файл .

Ключ здесь:

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()));
34
ответ дан 27 November 2019 в 03:40
поделиться

это также зависит от того, что вы запускаете в терминале... если вы запускаете "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

5
ответ дан 27 November 2019 в 03:40
поделиться

Хорошо, вот что именно у меня сработало на случай, если кому-то понадобится в будущем... :)

Окружай в попытке поймать

try {
    Process process = Runtime.getRuntime().exec("top -n 1 -d 1");
    BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
} catch (InterruptedException e) {
    e.printStackTrace();
}
17
ответ дан 27 November 2019 в 03:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: