要件: Android デバイスのイーサネット ポートの黄色と緑色のライトが正常かどうかをテストします。
ThreadUtils.runOnSubThread(new Runnable() {
@オーバーライド
public void run() {
Log.d("ココ","テストネットワーク 1000m 開始。");
LinuxCommandRunner.exec("su");
LinuxCommandRunner.exec("ethtool -s eth0 速度 1000 二重完全");
Log.d("ココ","テストネットワーク 1000m 終了。");
}
});
ThreadUtils はスレッド プール ツールであり、新しい Thread を直接使用することもできます。
LinuxCommandRunner は、Linux 命令を実行するためのツール クラスです。
ThreadUtils.java
パッケージcom.xxxxx.xxxxx;
android.os.Handlerをインポートします。
android.os.Looperをインポートします。
インポート java.util.concurrent.Executor;
java.util.concurrent.Executorsをインポートします。
パブリック クラス ThreadUtils {
プライベート静的最終ハンドラー sHandler = new Handler(Looper.getMainLooper());
プライベート静的最終エグゼキュータ sExecutor = Executors.newSingleThreadExecutor();
public static void runOnSubThread(Runnable runnable){
sExecutor.execute(実行可能);
}
public static void runOnUIThread(Runnable runnable){
sHandler.post(実行可能);
}
public static void shutdown(){
sExecutor.shutdown();
}
}
LinuxCommandRunner.java
パッケージ com.rockchip.devicetest.utils;
android.util.Log をインポートします。
java.io.BufferedReaderをインポートします。
インポート java.io.IOException;
インポートjava.io.InputStreamReader;
パブリック クラス LinuxCommandRunner {
プライベート静的最終文字列 TAG = LinuxCommandRunner.class.getSimpleName();
public static String runCommand(String[] args) {
//実行するLinuxコマンド
文字列 linuxCommand = "タイムアウト 0.5 秒";
試す {
// Linux 命令を実行する
プロセス process = Runtime.getRuntime().exec(linuxCommand);
// Linux コマンドの出力を読み取ります。
BufferedReader リーダー = new BufferedReader(new InputStreamReader(process.getInputStream()));
文字列行;
StringBuilder 出力 = new StringBuilder();
while ((line = Reader.readLine()) != null) {
出力.append(line).append("\n");
}
//実行結果を出力する
Log.d(TAG,output.toString());
// 実行結果を確認する
int exitCode = process.waitFor();
if (exitCode == 0) {
Log.d(TAG,"Linux コマンドが正常に実行されました");
} それ以外 {
Log.d(TAG,"Linux コマンドの実行に失敗しました");
}
出力を返します。toString();
catch (IOException | InterruptedException e) {
e.printStackTrace();
}
null を返します。
}
public static void exec(文字列コマンド){
試す {
Runtime.getRuntime().exec(new String[]{"sh","-c",command});
} キャッチ (IOException e) {
e.printStackTrace();
}
}
}