Prendi screenshot dello schermo corrente, NON l'attività corrente

Sto provando a fare una piccola applicazione Android che triggers una cattura dello screenshot della schermata di visualizzazione corrente quando viene visualizzata una notifica specifica. Ad esempio, sto su whatsapp e compare una notifica Whatsapp -> Che triggers una cattura di whatsapp.

Beh, il mio codice corrente rileva effettivamente le notifiche e triggers uno screenshot quando viene inviata una notifica, ma non il modo in cui voglio. Ottengo uno screenshot della mia MainActivity, anche se non è mostrato sullo schermo. Voglio solo esplorare quello che sta visualizzando sullo schermo. Sembra facile, ma non sono in grado di farlo!

  • Visualizzatore Android che salva dati e viste
  • Android NDK, due librerie statiche e un collegamento
  • Elenco impostazione dell'adattatore - Come posso non ripetere la risorsa di layout dell'elenco degli elenchi?
  • Android - OnClick all'interno della row di gridview
  • Ascoltatore di cambiamento di tempo / data
  • L'authorization USB ottenuta tramite android.hardware.usb non si applica a NDK
  • Lascio la mia attuale class NotificationReceiver, che non riesce perché cattura la MainActivity e non lo schermo:

    class NotificationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String temp = intent.getStringExtra("notification_event") + "\n" + txtView.getText(); txtView.setText(temp); if (intent.getStringExtra("notification_event").contains("bet")) { Log.i("Dentro", "dentro"); Date now = new Date(); android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now); try { // image naming and path to include sd card appending name you choose for file String mPath = Environment.getExternalStorageDirectory().toString() + "/" + now + ".jpg"; // create bitmap screen capture 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(); } catch (Throwable e) { // Several error may come out with file handling or OOM Log.i("Catch","Error dentro del if(contains)"); e.printStackTrace(); } }//fin if } } 

    Qualche idea di come posso procedere? Sono davvero bloccato. Aiuto sarebbe davvero apprezzato!

    One Solution collect form web for “Prendi screenshot dello schermo corrente, NON l'attività corrente”

    Dovresti utilizzare le API di proiezione multimediale in Android 5.0+ e impostare il tuo minSdkVersion a 21. Per motivi di privacy e sicurezza, le app non possono eseguire screenshot di altre applicazioni senza authorization esplicita dell'utente e questo è stato ansible solo con Android 5.0.

    Questa applicazione di esempio dimostra di catturare screenshot su richiesta.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.