のアンドロイドでスクリーンショットを取って、私は現在、このコードを持っている:はプログラムだから、別のウィンドウ
private void takeScreenshot()
{
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try
{
String mPath = Environment.getExternalStorageDirectory().toString() + "/Screenshots/" + now + ".jpg";
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
Toast.makeText(getApplicationContext(), "Screenshot Saved", Toast.LENGTH_SHORT).show();
MediaScannerConnection.scanFile(this,
new String[]{imageFile.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
//openScreenshot(imageFile);
} catch (Throwable e) {
// Several error may come out with file handling or OOM
e.printStackTrace();
}
}
このコードは、アプリ内の他の場所で生成された通知を押し、上と呼ばれています。コードはスクリーンショットを撮るだけで、実際に見ている場所に関係なくアプリケーションウィンドウをスクリーンショットしています。だから、私は別のウィンドウのスクリーンショットを取って、通知を通じてこの関数を呼び出したいと思っています。これは可能ですか?
P.S.私も、私はこのhttps://www.youtube.com/watch?v=_FLnTOqTorQ
私はそれを試したことはありませんが、セキュリティ上の大きなリスクになるため、これが可能であることは間違いありません。アプリケーションがバックグラウンドサービスを介してスクリーンショットを作成し、ルートアクセスなしでサーバーに送信できる場合、スパイニージソフトウェアを作成するのは簡単です。 – Altoyyr