2014-02-18 2 views
6

Ich versuche, das Cast-Symbol auf dem ActionBar hinzuzufügen, um die Hilfsmethode des CastCompanionLibrary mit:Hinzufügen von Guss Taste ActionBar die CastCompanionLibrary mit

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    getMenuInflater().inflate(R.menu.main, menu); 
    mDataCastManager.addMediaRouterButton(menu, R.id.media_route_menu_item); // This one 
    return true; 
} 

ich dies als meine menu.xml haben, wie durch die PDF angegeben, das ist im Lieferumfang der Begleitbibliothek enthalten:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/media_route_menu_item" 
     android:title="@string/media_route_menu_title" 
     app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider" 
     app:showAsAction="always"/> 
</menu> 

In der ActionBar wird jedoch nichts angezeigt. Es werden keine Fehler angezeigt, nichts ist sichtbar. Wenn ich einen anderen Menüeintrag hinzufüge, nur um zu sehen, ob alles mit meinem Menü richtig eingerichtet ist, erscheint dieses Element gut - es ist nur dieser Cast-Action-Menüpunkt, der nicht angezeigt wird.

Ich habe versucht, die "App" Präfixe zu "Android" zu ändern, aber dann bekomme ich eine NullPointerException irgendwo tief in der Bibliothek, und ich habe versucht, den Menüpunkt ein anderes, sichtbares Symbol. Nichts hilft.

In AndroidStudio zeigt die Menüvorschau einen Menüeintrag mit dem Titel "Play on ..." an. Es scheint also so zu sein.

Was mache ich falsch?

+0

Gibt es irgendwelche verfügbaren Routen neu starten? Ich habe 'MediaRouteActionProvider' noch nicht benutzt (es ist auf meiner kurzen Liste ...), daher kenne ich sein Verhalten nicht. Es kann jedoch sein, dass es nur angezeigt wird, wenn eine Route erkannt wurde, und bis zu diesem Zeitpunkt verschwunden ist. – CommonsWare

+0

Das gleiche Problem erschien. Ich habe alles nach dem Handbuch gemacht, aber Cast Menü erscheint nie. Selbst in der einfachsten Anwendung. Aber alles funktioniert in Extras \ google \ google_play_services \ samples \ cast \ demoastplayer Beispiel.Kein Glück, die Ursache herauszufinden? – I4004

+0

Endlich habe ich meinen Fall gelöst. Der Schuldige war meine Bewerbungsnummer. Aus irgendeinem Grund lehnt mein Chromecast es ab. Ich konnte das Cast-Symbol mithilfe von CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID anzeigen. Offensichtlich ist es falsch, aber mein Ziel war ein Proof of Concept. – I4004

Antwort

2

Sie müssen Ihren Chromecast als Testgerät registrieren, damit Sie das Chromecast-Gerät von Android erkennen können.

Überprüfen Sie die vollständige SDK guide
Überprüfen Sie den Entwickler console Registrierung. Sie müssen sich registrieren Sie sich hier in der Konsole entwickeln Chrome, sonst ist es nicht nachweisbar

Update: Wenn nichts funktioniert, können Sie versuchen, Ihre Anwendung in der Chrome dev Konsole als letztes Mittel zu veröffentlichen.

Wie von einem der Chromecast-Entwickler erwähnt, versuchen Sie, vom Browser aus auf http://<chromecast-ip>:9222 zuzugreifen und sehen, ob Sie in der Lage sind, etwas zu sehen.

+2

Bitte geben Sie nicht den falschen Hinweis "Veröffentlichen Sie Ihre App in der chromecast dev-Konsole", es gibt absolut keine Notwendigkeit, Ihre App zu veröffentlichen, um das in Ihren Entwicklungsgeräten zu sehen; Während der Entwicklung empfehlen wir, sie unveröffentlicht zu lassen. Wenn Sie das Problem nicht beheben können, ohne Ihre App zu veröffentlichen, müssen Sie ein Problem beheben. "Veröffentlichen" wird das Problem nur verbergen. –

+0

Einverstanden! meine Antwort geändert. – Zeus

+0

Danke - ich muss vielleicht ein paar Dinge dann in der Entwicklerkonsole zwicken.Mein Chromecast wurde auf die weiße Liste gesetzt und alles funktionierte vor der öffentlichen Veröffentlichung, ich portiere jetzt einfach alles um die neue Begleitbibliothek zu verwenden, da sie so viel behandelt und tut für dich. Ich werde mir meine Einstellungen ansehen, wenn ich kann und berichte. – Scott

0

CastCompanionLibrary und MediaRouteActionProvider sind für AppCompat ActionBar und nicht für Sherlock ActionBar geschrieben. Es wird dringend empfohlen, Ihr Projekt nach AppCompat zu verschieben, da Sherlock ActionBar nicht mehr unterstützt wird. Daher ist die Umstellung auf AppCompat im Allgemeinen ein guter Schritt für Ihr Projekt. diese Bewegung zu machen ist nicht schwierig (siehe z.B. article)

+0

Ich benutze bereits AppCompat ActionBar, eigentlich ist es das nicht. – Scott

+0

Sorry, aus irgendeinem Grund dachte ich, du benutzt Sherlock. Jetzt zurück zu Ihrem Problem, stellen Sie sicher, dass Sie Ihre App auf der Entwicklerkonsole registriert haben. Wenn dies der Fall ist und Ihr chromecast-Gerät auf die weiße Liste gesetzt wurde (dh Sie können auf http: // : 9222) zugreifen, sollte es für Sie funktionieren (vorausgesetzt, Ihr Chromecast-Gerät befindet sich im gleichen Wifi-Netzwerk) –

1

Manchmal treten diese Arten von Fehlern auf, weil proguard den Namen des Objekts und/oder der Funktionen ändert.

Eine mögliche Lösung ist diese auf Ihre progaurd Konfigurationsdateien hinzuzufügen:

-dontwarn android.support.v7.** 
-keep class android.support.v7.internal.** { *; } 
-keep interface android.support.v7.internal.** { *; } 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 

Ich hatte eigentlich genau diesen Fehler auf der genauen Linie und ich habe nicht meine proguard richtig für die Support-Bibliothek konfiguriert haben.

+0

Das hat mein Problem behoben, danke! – brwngrldev

1

In meinem Fall nach Geräteregistrierung habe ich vergessen chromecast Gerät

Verwandte Themen