如何通过在创建日期之前命名屏幕截图来自动命名屏幕截图?

时间:2013-03-19 18:30:45

标签: android unix date filenames

我的应用程序采用了一系列屏幕截图,但我没有获得大量屏幕截图,而是获得了一个一直覆盖自己的屏幕截图。我想获取按照拍摄日期命名的截图(它会使它们独一无二,并且会解决问题,我想)。

为此我做了以下事情:

$(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();
    }
}

1 个答案:

答案 0 :(得分:0)

  1. 如果不在shell中运行它们,Shell指令将不起作用。它只是exec的字符串。
  2. 如何在Java中生成文件名?可以轻松获得与date +%m.%d.%Y-%H:%M写出相同字符串的简单方法。