所需環(huán)境:
1袱结、JDK
2、Android SDK
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class DDingAutoClock {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new Task(), 60 * 1000);
}
static class Task extends TimerTask {
public voidrun() {
String str = getCurrentTime();
if(str.equals("08:00")){
System.out.println("定時任務執(zhí)行");
//啟動叮叮
try {
execCommand("adb wait-for-device");
execCommand("adb shell am start -n com.alibaba.android.rimet/com.alibaba.android.rimet.biz.SplashActivity");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static StringgetCurrentTime(){
SimpleDateFormat formatter? =? new? SimpleDateFormat? ("HH:mm");
Date curDate? =? new? Date(System.currentTimeMillis());//獲取當前時間
String? str? =? formatter.format(curDate);
System.out.println(str);
returnstr;
}
public static void execCommand(Stringcommand) throws IOException {
// start the lscommandrunning
//String[] args =? new String[]{"sh","-c",command};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command);? ? ? ? //這句話就是shell與高級語言間的調用
//如果有參數(shù)的話可以用另外一個被重載的exec方法
//實際上這樣執(zhí)行時啟動了一個子進程,它沒有父進程的控制臺
//也就看不到輸出,所以我們需要用輸出流來得到shell執(zhí)行后的輸出
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
//readthe ls output
String line ="";
StringBuilder sb = new StringBuilder(line);
while((line = bufferedreader.readLine()) != null) {
//System.out.println(line);
sb.append(line);
sb.append("\n");
}
//使用exec執(zhí)行不會等執(zhí)行成功以后才返回,它會立即返回
//所以在某些情況下是很要命的(比如復制文件的時候)
//使用wairFor()可以等待命令執(zhí)行完成以后才返回
try {
if(proc.waitFor() != 0) {
System.out.println(proc.exitValue());
}
}
catch (InterruptedException e) {
System.err.println(e);
}
}
}