私は根っからのアンドロイドデバイスで作業しています。私は画面をキャプチャし、後で使用するために結果をBitmap
に保存しようとしています。新しいイメージのパスに名前を付けると、コマンド/system/bin/screencap -p FILEPATH
を使用して画面をキャプチャしている私はここでやっているRuntime.getRuntime()。execの結果を直接取得する方法
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath();
path += "/img.png";
Process sh = Runtime.getRuntime().exec("su", null,null);
OutputStream os = sh.getOutputStream();
os.write(("/system/bin/screencap -p " + path).getBytes("ASCII"));
os.flush();
os.close();
sh.waitFor();
final Bitmap x = BitmapFactory.decodeFile(path);
。次に、そのファイルに保存されているイメージを読み込み、ビットマップで使用します。
私の現在のコードの問題は、それが遅い(リアルタイムアプリケーションには適していない)ということです。私は今それをより速くしようとしています。キャプチャした画像をファイルに保存してからプログラムからもう一度読むのではなく、Runtime.getRuntime().exec(...)
の結果から直接読みたいと思います。コマンドscreencapの説明で、この場合、結果はstdoutに出力されます。
私は私のコード
final Bitmap x = BitmapFactory.decodeByteArray(resultArrayByte, 0, resultArrayByte.length);
に直接それを使用するために、結果のバイト配列を読み取るために、いくつかのコードを試みたが、コードのどれも私と一緒に働いていません。
sh
の入出力ストリームを使用して出力結果をファイルに保存せずに結果のバイト配列を直接取得するにはどうしたらいいですか?
URLが変更された場合、リンクが切れた場合にターゲットページにあるものの概要を投稿して、誰かがタイトルで見つけられるようにするとよいでしょう。 – Daz