2
내 앱은 일련의 스크린 샷을 가져 오지만 그 중 많은 양을 얻는 대신 항상 모든 스크린 샷을 덮어 씁니다. 찍은 날짜로 명명 된 스크린 샷을 얻고 싶습니다 (고유하게 만들어 문제를 해결할 것입니다).촬영 한 날짜별로 이름을 지정하여 촬영 한 스크린 샷의 이름을 자동으로 지정하는 방법은 무엇입니까?
$(date +%m.%d.%Y-%H:%M)
전체 라인 :이 들어
나는 다음을 수행
os.write(("/system/bin/screencap -p /sdcard/fly/$(date +%m.%d.%Y-%H:%M).png").getBytes("ASCII"));
을하지만 파일이 표시되지 않습니다.
시도했지만 /sdcard/fly/screenshot%d.png
파일은 "screenshot % d"코드와 똑같은 이름으로 지정되었습니다.
파일을 찍은 날짜에 따라 파일의 이름을 올바르게 지정하려면 어떻게해야합니까?
전체 코드 : 당신이 쉘에서 실행할하지 않는 경우
package ru.startandroid.develop.p0921servicesimple;
import java.io.IOException;
import java.io.OutputStream;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service {
final String LOG_TAG = "myLogs";
public void onCreate() {
super.onCreate();
Log.d(LOG_TAG, "onCreate");
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(LOG_TAG, "onStartCommand");
someTask();
return super.onStartCommand(intent, flags, startId);
}
public void onDestroy() {
super.onDestroy();
Log.d(LOG_TAG, "onDestroy");
}
public IBinder onBind(Intent intent) {
Log.d(LOG_TAG, "onBind");
return null;
}
void someTask() {
new Thread(new Runnable() {
public void run() {
for (int i = 1; i <= 25; i++) {
Log.d(LOG_TAG, "i = " + i);
try {
Process sh = Runtime.getRuntime().exec("su", null);
OutputStream os = sh.getOutputStream();
os.write(("/system/bin/screencap -p /sdcard/fly/bob.png").getBytes("ASCII"));
os.flush();
os.close();
sh.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
}
}
정답은 http://stackoverflow.com/a/8182190/2177105입니다. 감사! – user2177105