2016-07-31 14 views
6

Uygulamamda mükemmel bir şekilde çalışan özel bir yayın göndereni oluşturdum. Eklemem gereken tek özellik 'Oynat/Duraklat' ve 'Atla' seçeneklerini dinlemenin bir yoludur. düğmeler, ancak (bildiğim kadarıyla aramak mümkün oldum gibi) herhangi bir ipucu vermez ve Advanced Cast Features Docs gösterilen işlevselliği ekledikten sonra Google'ın dokümantasyon işe yaramadı:Döküm kontrol arabirimi aracılığıyla UIMediaController tıklamalarını yakalama

CastMediaOptions castMediaOptions = new CastMediaOptions.Builder() 
    .setMediaIntentReceiverClassName(CastIntentReceiver.class.getName()) 
    .build(); 

return new CastOptions.Builder() 
     .setReceiverApplicationId(context.getString(R.string.cast_id)) 
     .setCastMediaOptions(castMediaOptions) 
     .build(); 

Ben uzanan CastIntentReceiver var MediaIntentReceiver, CastOptionsProvider numaralı belgede ve bildiride belirtilmiştir.

public class CastIntentReceiver extends MediaIntentReceiver { 

    public static String TAG = "CastIntentReceiver"; 

    public CastIntentReceiver() { 
     Log.i(TAG, "CastIntentReceiver: Constructed!"); 
    } 
    ... 
    // The rest of the Override methods don't do anything 

} 

Günlüğü baskı çalışıyor çünkü alıcı, çalışıyor, ancak geçersiz kılma yöntemleri hiçbiri (Log baskı) denir. , MainActivity View tabanına eklenir CastManager (kontrolör) ve CastControls fragmanı (görünüm) (benzer

Tüm döküm fonksiyonları

iki ayrı sınıfta şunlardır: İşte

benim uygulanmasına ilişkin bazı ek detaylar YouTube'a). Bu iki sınıf arasında bir şeyler tetikleyen Arayüzler de vardır. CastManager yılında

, ben kurulum UIMediaController ve bağlama Görüntüleme:

View view = CastingBridge.CAST_CONTROLS_VIEW.findViewById(R.id.cast_drawer_controls); 

uiMediaController = new UIMediaController(activity); 
SeekBar seekBar = (SeekBar) view.findViewById(R.id.cast_control_seek_bar); 
TextView start = (TextView) view.findViewById(R.id.cast_control_time_start); 
TextView end = (TextView) view.findViewById(R.id.cast_control_time_end); 
ImageButton playPauseButton = (ImageButton) view.findViewById(R.id.cast_control_play_pause); 
ImageButton rewindButton = (ImageButton) view.findViewById(R.id.cast_control_rewind); 
ImageButton forwardButton = (ImageButton) view.findViewById(R.id.cast_control_forward); 
ImageButton stopButton = (ImageButton) view.findViewById(R.id.cast_control_stop); 
ProgressBar loadingSpinner = (ProgressBar) view.findViewById(R.id.cast_control_loading); 

gerektiği, ancak (yakalama) dokunmatik dinlememiz gerekir olarak tüm bu iş/olayları tıklayın önce de belirtildiği gibi, böylece Bir video duraklatıldığında veya durdurulduğunda, devam etmek için mevcut saat uzunluğunu kaydedebilirim.

Bu etkinlikleri dinlemek için MediaIntentReceiver'u nasıl uygularım? Tek tek Görünümlere tıklama dinleyicileri eklemeyi denedim, ancak beklendiği gibi, @Override onClick ilk amaçlanan işlevselliği kaldırır.

documentation, gereksinim duyduğum yöntemler gibi görünüyor, ancak bu nasıl başvuruyor?

Ben de UIMediaController için kullanılabilen tek dinleyici ekleme çalıştı: onStatusUpdated yöntem hiçbir argüman besleyen olarak

uiMediaController.setPostRemoteMediaClientListener(new RemoteMediaClient.Listener() { 
    @Override 
    public void onStatusUpdated() { 
     Log.i(TAG, "onStatusUpdated: Status Updated"); 
    } 
}); 

Ancak bu, hiçbir şey yapmaz.

Bu konuda bana ışık tutmama yardımcı olan var mı? Farklı şeyler denedim ve birkaç gün aradım, bu yüzden yardım isteme zamanı.

Teşekkürler!

cevap

3

Tanımladığınız alıcı (ve genel olarak MediaIntentReceiver), bildirim, kilit ekranı ve yayın iletişim kutusundaki eylemleri işlemek için kullanılır; Bu nedenle, özel bir yere sahip olmak, o yerlerden başlatıldığında davranışı etkiler. UIMediaController kullanıyorsanız, kullanıcı bu kontrollerle etkileşime girdiğinde bildirim almak için onSendingRemoteMediaRequest()'u kullanmanız gerekir.

+0

Cevabınız için teşekkür ederiz. Bunu hayata geçirdim ve gerçekten çalışıyor, ancak onStatusUpdated yöntemi hiçbir argüman içermiyor. Hangi düğmenin (kullanımdaki üç) gerçekten tıklandığını nasıl öğrenebilirim? – mwieczorek