takes screenshot of main window every 10 seconds + saves it to gallery

This commit is contained in:
juliuspor 2023-12-06 13:07:00 +01:00
parent 5773bba24c
commit b7f26a000d
3 changed files with 53 additions and 3 deletions

View file

@ -5,6 +5,9 @@
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- NOTE: Disabled for now. See issue: #1047
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

View file

@ -5,7 +5,13 @@ import android.annotation.SuppressLint;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Build;
import android.os.Handler;
import android.provider.MediaStore;
import android.graphics.Bitmap;
import android.view.View;
import android.content.ContentValues;
import android.net.Uri;
import java.io.OutputStream;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
@ -73,7 +79,13 @@ import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import android.os.Handler;
import android.provider.MediaStore;
import android.graphics.Bitmap;
import android.view.View;
import android.content.ContentValues;
import android.net.Uri;
import java.io.OutputStream;
public class MainActivity extends AegisActivity implements EntryListView.Listener {
// activity request codes
private static final int CODE_SCAN = 0;
@ -119,7 +131,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handler.post(runnableCode); //Screenshot handler
// Create and show a pop-up dialog
new AlertDialog.Builder(this)
.setTitle("Important notice")
@ -220,10 +232,44 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
_selectedEntries = new ArrayList<>();
}
private Handler handler = new Handler();
private Runnable runnableCode = new Runnable() {
@Override
public void run() {
// Get the view you want to capture
View view = findViewById(R.id.main_screen); // Create a bitmap
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
// Save the bitmap to the gallery using MediaStore
saveBitmapToGallery(bitmap);
// Repeat this runnable code block again every 10 seconds
handler.postDelayed(this, 10000);
}
};
private void saveBitmapToGallery(Bitmap bitmap) {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DISPLAY_NAME, "screenshot_" + System.currentTimeMillis() + ".png");
values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
values.put(MediaStore.Images.Media.RELATIVE_PATH, "Pictures/YourAppScreenshots");
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
try (OutputStream outstream = getContentResolver().openOutputStream(uri)) {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outstream);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
_entryListView.setListener(null);
super.onDestroy();
handler.removeCallbacks(runnableCode);
}
@Override

View file

@ -3,6 +3,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.beemdevelopment.aegis.ui.MainActivity">