Rileva uno screenshot Android

Programmi negli ultimi anni per Android e mi chiedo qualcosa: Come rilevare quando l'utente prende uno screenshot? Voglio che quando l'utente prenda uno screenshot, passiamo all'attività successiva. Ho provato il metodo di intercettazione di un evento, ma c'è un problema: quando il dispositivo entra nel sonno, ad esempio, un evento viene intercettato. Avete una soluzione per intercettare solo l'evento dello screenshot o ignorare altri events?

Grazie per l'aiuto !

  • Mostra millisecondi con Android Chronometer
  • Parte 1 persistent foreGround Android che inizia da UI, funziona anche in modalità sleep, anche inizia con il riavvio del telefono
  • come trasformare gradualmente la barra d'azione trasparente in un colore solido mentre l'utente scorre in giù
  • come disabilitare ViewPager swiping utilizzando android-support-v4.jar in android
  • Vuoi visualizzare i dati in lingua regionale indiana (Telugu, Hindi, Tamil e Malayalam) da RSSFeed in android?
  • Webview di Android - La pagina web dovrebbe adattarsi allo schermo del dispositivo
  • Come risolvere java.lang.OutOfMemoryError: il limite di overhead GC ha superato l'errore nello studio android
  • Riciclare i sensori da un dispositivo android rotto usando adb
  • achartengine - l'aggiunta di ImageButton esterni per lo zoom in vista accanto al grafico causa un comportmento strano UI
  • registrare / salvare l'audio da intenti di riconoscimento vocale
  • Come get commenti attraverso l'analisi di Youtube Data API v3 / JSOUP?
  • Come posso colbind a Android con ADB over TCP?
  • 2 Solutions collect form web for “Rileva uno screenshot Android”

    Non c'è intento di trasmissione diretta per dirvi che è stato eseguito uno screenshot. Alcune persone qui discutono possibili opzioni per farlo (come è fatto su Snapchat). Una ansible opzione sarebbe quella di utilizzare FileObserver .

    Ecco il mio hack per ricevere la notifica quando viene eseguito uno screenshot.

     public void detectScreenShotService(final Activity activity){ final Handler h = new Handler(); final int delay = 3000; //milliseconds final ActivityManager am=(ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE); h.postDelayed(new Runnable(){ public void run(){ List<ActivityManager.RunningServiceInfo> rs=am.getRunningServices(200); for(ActivityManager.RunningServiceInfo ar:rs){ if(ar.process.equals("com.android.systemui:screenshot")){ Toast.makeText(activity,"Screenshot captured!!",Toast.LENGTH_LONG).show(); } } h.postDelayed(this, delay); } }, delay); } 

    Testato su Oneplus 2 e Moto E.

    Aggiornare:

    Questo finalmente non funzionava per me e ho finito utilizzando un ContentObserver sul tipo di schermata di voci.

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