0
0

【Android/Java】Linuxコマンドを実行

Posted at

やりたいこと

端末の温度やIPアドレスなど、Androidフレームワークから取得するより、Linuxカーネル上から取得したほうが、簡単な場合がある。
AndroidからLinuxコマンドを実行するやり方を、備忘録として残しておく

Step1.Linuxコマンドの実行メソッド

Linuxコマンドを実行するメソッドを用意する

public void commandExecution(String command) {
    Process process = null;
    BufferedWriter writer = null;
    BufferedReader reader = null;
    StringBuilder result = new StringBuilder();

    try {
        String processInfo;
        writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
        reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        // コマンド実行
        String cmd = command + "\n";
        process = Runtime.getRuntime().exec(cmd);
        writer.write("exit \n");
        writer.flush();
        process.waitFor();

        // コマンド結果
        while ((processInfo = reader.readLine()) != null) {
            result.append(processInfo).append("\n");
        }
    } catch (Exception e) {
    } finally {
        try {
            if (null != writer) {
                writer.close();
            }
            if (null != reader) {
                reader.close();
            }
            if (null != process) {
                process.destroy();
            }
        } catch (Exception e) {
        }
    }
}

Step2.実行したいLinuxコマンドを設定

コマンドを設定しメソッドに渡すだけ

// 例)端末の温度
String command = "cat /sys/class/thermal/thermal_zone0/temp";

temp = commandExecution(command);
Log.d(TAG, "端末の温度:" + temp);

よく使いそうなコマンドメモ

※"|"は、全角で記載しているため、コピペする場合は半角に直してください

取得情報 コマンド 結果例 備考
端末の温度 cat /sys/class/thermal/thermal_zone0/temp 42000 左記例では摂氏42度
端末のIPアドレス(Wi-Fi) ip addr show wlan0 | awk '/inet / {print $2}' 192.168.1.100/24
端末のGetwayアドレス(Wi-Fi) ip route get 8.8.8.8 | awk '/via/ {print $3}' 192.168.1.1
端末のMacアドレス(Wi-Fi) ip addr show wlan0 | awk '/ether/ {print $2}' aa:bb:cc:dd:ee:ff

最後に

コマンドベースでできることが増えると、実装の幅も広がるきがした

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0