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

1 回答 1

0
  1. 当您不在 shell 中运行它们时,Shell 指令将不起作用。这只是字符串exec
  2. 在 Java 中生成文件名怎么样?date +%m.%d.%Y-%H:%M肯定有很简单的方法可以得到与写出相同的字符串。
于 2013-05-25T22:51:27.300 回答