요구 사항: Android 기기 이더넷 포트의 노란색과 녹색 표시등이 정상인지 테스트하세요.
ThreadUtils.runOnSubThread(새로운 Runnable() {
@우세하다
공개 무효 실행() {
Log.d("coco","테스트 네트워크 1000m 시작.");
LinuxCommandRunner.exec("su");
LinuxCommandRunner.exec("ethtool -s eth0 속도 1000 이중 전이중");
Log.d("coco","테스트 네트워크 1000m 끝.");
}
});
ThreadUtils는 스레드 풀 도구이므로 새 스레드를 직접 사용할 수도 있습니다.
LinuxCommandRunner는 Linux 명령을 실행하기 위한 도구 클래스입니다.
ThreadUtils.java
패키지 com.xxxxx.xxxxx;
import android.os.Handler;
import android.os.Looper;
import java.util.concurrent.Executor;
java.util.concurrent.Executors 가져오기;
공개 클래스 ThreadUtils {
private static final Handler sHandler = new Handler(Looper.getMainLooper());
개인 정적 최종 실행자 sExecutor = Executors.newSingleThreadExecutor();
공개 정적 무효 runOnSubThread(실행 가능 실행 가능){
sExecutor.execute(실행 가능);
}
공개 정적 무효 runOnUIThread(실행 가능 실행 가능){
sHandler.post(실행 가능);
}
공개 정적 무효 종료(){
sExecutor.shutdown();
}
}
LinuxCommandRunner.java
패키지 com.rockchip.devicetest.utils;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
공개 클래스 LinuxCommandRunner {
private static final String TAG = LinuxCommandRunner.class.getSimpleName();
공개 정적 문자열 runCommand(String[] args) {
//실행할 리눅스 명령어
String linuxCommand = "timeout 0.5s top";
노력하다 {
//리눅스 명령어 실행
프로세스 프로세스 = Runtime.getRuntime().exec(linuxCommand);
// Linux 명령의 출력을 읽습니다.
BufferedReader 리더 = new BufferedReader(new InputStreamReader(process.getInputStream()));
스트링라인;
StringBuilder 출력 = new StringBuilder();
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
}
//실행 결과 출력
Log.d(TAG,output.toString());
// 실행 결과 확인
int exitCode = process.waitFor();
if (exitCode == 0) {
Log.d(TAG,"Linux 명령이 성공적으로 실행되었습니다.");
} 또 다른 {
Log.d(TAG,"Linux 명령 실행 실패");
}
return 출력.toString();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
null을 반환;
}
공개 정적 무효 exec(문자열 명령){
노력하다 {
Runtime.getRuntime().exec(new String[]{"sh","-c",command});
} 잡기(IOException e) {
e.printStackTrace();
}
}
}