Uygulamam her 200 milisaniye için arka planda yüklendiğinde ve çalıştırıldığında programlı olarak Android cihazının veya emülatörün ekran görüntülerine ihtiyacım var ve görüntüleri bilgisayarıma kaydediyorum. Bu kodu aşağıdaki kodu kullanarak uyguladım ve yalnızca başvurum ön planda olduğunda çalışıyor. Uygulamam da arka planda olduğunda ekran görüntüsü almak istiyorum.Android - Programlı olarak ekran görüntüsü nasıl alınır
public static Bitmap takeScreenshot(Activity activity, int ResourceID) {
Random r = new Random();
int iterator=r.nextInt();
String mPath = Environment.getExternalStorageDirectory().toString() + "/screenshots/";
View v1 = activity.getWindow().getDecorView().findViewById(ResourceID);
v1.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
v1.layout(0, 0, v1.getMeasuredWidth(), v1.getMeasuredHeight());
v1.setDrawingCacheEnabled(true);
final Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
Bitmap resultBitmap = Bitmap.createScaledBitmap(bitmap, 640, 480, false);
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
imageFile.mkdirs();
imageFile = new File(imageFile+"/"+iterator+"_screenshot.png");
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
resultBitmap.compress(CompressFormat.PNG, 100, bos);
byte[] bitmapdata = bos.toByteArray();
//write the bytes in file
FileOutputStream fos = new FileOutputStream(imageFile);
fos.write(bitmapdata);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
Nasıl programlı Devices -> DDMS
yılında Screencapture Refresh ve kaydet düğmelerinin işlevleri uygulayabilirsiniz: Aşağıda benim kodudur? Bunu başarabilir miyim?
için iznini ekleyin. Bunu yaptığınız uygulamalar ciddi güvenlik endişeleri doğurur. –
** Bu telefon köklü (* kitkat *) ** dışında yapamazsınız. “Ciddi güvenlik endişeleri” ile ilgili olarak, başka yerlerde daha ciddi güvenlik endişeleri olduğunu düşünüyorum. Uygulama ekran görüntüsünü almak için izin isteyebilirse, büyük bir sorun değil. –
Bu bir ekran görüntüsü değil ... Bu her 200 ms'de bir ekran görüntüsü. Aslında 5 FPS videosu. Bu, telefonda yapılan her şeyi kolayca yakalayabilir. Kendi kullanımımla (bir uygulamanın videosunu yapmak) yapmaya karşı savunmamakla birlikte, 3. taraf bir uygulamada ekran görüntüsü almak için izin vermek, aşağı inmek için uzun bir tavşan deliği olacaktır. –