2

私のアプリは一連のスクリーンショットを取得しますが、多くのスクリーンショットを取得するのではなく、常にそれ自体を上書きする 1 つのスクリーンショットを取得します。撮影した日付で名前を付けたスクリーンショットを撮りたいです(それにより、それらが一意になり、問題が解決すると思います)。

そのために、私は次のことを行います。

$(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