2013-11-02 14 views
5

Telefonun durum çubuğundaki tüm bildirimleri (yeni bir msj veya cevapsız arama gibi) gösteren bir uygulama üzerinde çalışıyorum. Araştırarak, bunu androidde yapmanın tek yolunun bir erişilebilirlik hizmeti oluşturduğunu öğrendim. Bu yüzden erişilebilirlik hizmetimde AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED alarak aynı şeyi yaptım.
İşte benim onServiceConnected() yöntemidir: Bu çalışıyorandroid bir erişilebilirlik hizmeti için farklı geribildirim türleri Anlamı?

public void onServiceConnected(){ 
    if (isInit) { 
     return; 
    } 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
    info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED; 
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN; 
    setServiceInfo(info); 
    isInit = true; 
} 

ama tam olarak keşke değil. Aslında durum çubuğunda olmayan ve muhtemelen istemediğim arka plan uygulamaları tarafından oluşturulan birçok bildirimi gösteriyor. Ayrıca gerçek zamanlı değil. Uygulama açıkken yalnızca uygulamayı açtığımda değil, güncellendiğinde de güncellenir. Üstelik, servisi ayarları başlattığımda, telefonum (galaksi notu) her şeyi konuşmaya başlar. Bir hata veya kodda bir sorun olup olmadığından emin değil.
Tam olarak sorunun nerede olduğunu anlayamıyorum ama bence geri bildirim türü olabilir. Çok denedim ama her yerde servis için farklı geri bildirim türlerinin anlamını bulamadım.

FEEDBACK_AUDIBLE 
FEEDBACK_HAPTIC 
FEEDBACK_AUDIBLE 
FEEDBACK_VISUAL 
FEEDBACK_GENERIC 

Birisi lütfen bu geri bildirim türleri neyin ima ettiğini söyler misiniz? Geri bildirim türünü değiştirirsem farklı bildirimler alır mıyım? Ve eğer yanlış yöne gideceğimi düşünüyorsanız, lütfen bana bu sorunları çözmek için neler yapabileceğime yönlendirin. Lemme bazı temel bilgileri vermeyi unuttuysam biliyorum.

Her türlü yardım gerçekten takdir edilecektir.

cevap

1

Tüm sorularınızın yanıtları yok ama size bir konuda yardımcı olabilirim. Bahsettiğiniz gibi, yalnızca durum çubuğu bildirimlerini ve başkalarının da tost ve diğerleri gibi olmasını istemediniz. Bu amaçla, aşağıdaki kodu servisinizde deneyebilirsiniz.

info.notificationTimeout=100; 

senin için çalıştığını umut:

public void onAccessibilityEvent(AccessibilityEvent event) { 
    final int eventType = event.getEventType(); 
    if (eventType == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) { 
     Parcelable parcelable = event.getParcelableData(); 

     if(parcelable instanceof Notification){ 
      // statusbar notification 
      List<CharSequence> messages = event.getText(); 
      if (messages.size() > 0) { 
       // here you can do whatever you want with the notification. 
       //Log.d(tag, "Saved event"); 
      } 
     } 
    } 
} 

Ayrıca böyle onServiceConnected Gözlerinde farklı bir zaman aşımı ayarlayın.

+0

Durum çubuğundaki bildirimleri getirmeme yardımcı oldu. Cevap verdiğiniz için teşekkürler. Şu anda karşılaştığım en büyük sorun, daha önce bahsettiğim gibi konuşan telefonum. Bence androidde bir böcek. Bana yardım edersen gerçekten minnettar olurum. – Anjani

+0

Erişilebilirlik ayarlarında TalkBack Erişilebilirlik hizmetini açtınız mı? – tommed

+0

kodunuz yardımcı oldu ancak burada bir sorunla karşı karşıyayım. bu kod bile bunu çözmedi. Karşılaştığım şey, bildirim durum çubuğunda bir bildirim geldiğinde olmasıdır. "OnaccessibilityEvent (AccessibilityEvent)" yöntemim iki kez çağrılıyor ve birçok cihazda kontrol ettim. iki kere çağrılır. Bu yüzden, onAccessibilityEvent (AccessibilityEvent) 'de yaptığım her şey, bunun için iki kez tekrarlanır. Birisi bunu çözmeme yardım edebilir mi? –

İlgili konular