2015-04-09 40 views
7

Son yıllarda Android'e program yapıyorum ve bir şey merak ediyorum: Kullanıcı bir ekran görüntüsünü aldığında nasıl algılanır? Kullanıcı bir ekran görüntüsü aldığında, bir sonraki etkinliğe geçiyoruz. Bir olayı kesme yöntemini denedim ancak bir sorun var: aygıt uykuya girdiğinde, örneğin bir olay engellenir. Sadece ekran görüntüsünü yakalamak veya başka bir olayı görmezden gelmek için bir çözümünüz var mı?Ekran görüntüsünü belirleme Android

Yardımlarınız için teşekkür ederiz!

cevap

12

Ekran görüntüsünün alındığını size bildiren doğrudan bir Yayın Amaç yoktur. Bazı kullanıcılar here olası seçenekleri tartışırlar (Snapchat'da yapıldığı gibi). Tek bir seçenek FileObserver kullanmak olabilir.

+1

Bir olayın yakalanması için bu yöntemi denedim ancak bir sorun var: aygıt uykuya girdiğinde, örneğin bir olay engellenir. Sadece ekran görüntüsünü yakalamak veya başka bir olayı görmezden gelmek için bir çözümünüz var mı? – Nachding

+2

Intents hakkında düşünüyorsunuz. Hepsinin bir listesi var [burada] (http://developer.android.com/reference/android/content/Intent.html#ACTION_PICK) Ancak maalesef ekran görüntüsü algılaması için bir tane yok. Reddit bağlantısında belirtilen [FileObserver] (http://developer.android.com/reference/android/os/FileObserver.html) bölümüne bakmalısınız. Çalıştığını garanti edemiyorum, ancak buradaki fikir, ekran görüntülerinin kaydedildiği klasörü gözlemlemek olurdu. – EscapeArtist

7

Ekran görüntüsü alındığında bildirim almam keskindir.

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); 

} 

OnePlus 2 üzerinde test ve Moto E.

Güncelleme:

Bu nihayet benim için işe yaramadı ve ben girişlerinin ekran tipine bir ContentObserver kullanarak sona erdi.

+1

ur kodu çalışır ancak ekran görüntüsünün yolunu nasıl alırsınız? – Varma460

+0

Teorik olarak, yapabileceğiniz şey, ekran görüntüsü klasörüne bir izleyici ayarlamasıdır ve bu olay her tetiklendiğinde, dosyaların listesini alırsınız ve ekran görüntüsünüzün dosyası olması gereken en son oluşturulan dosyayı görürsünüz. –

+0

Bu kodu nereye koyarsınız @UditShah – MizAkita

İlgili konular