2014-11-25 4 views
7

Gibt es eine Möglichkeit, zu überprüfen, ob eine App auf Android TV oder Android Mobile läuft?Wie kann ich überprüfen, ob eine App auf einem Android-TV läuft?

Ich weiß, wie man den laufenden Build überprüft. Ich möchte einen bestimmten Dienst starten, wenn die App auf Android TV vs. Mobile ausgeführt wird. Hatte gehofft, die beiden unter derselben Bibliothek unterzubringen.

Antwort

2

Einige Optionen sind:

1) Abfrage des Systems für einen großen Bildschirm

2) Reflexion Verwenden TV spezifische Klassen

3) Verwenden Sie hasSystemFeature zu erkennen, das Fehlen von Touchscreen

zu erkennen

Mehr Infos

https://developer.android.com/training/tv/start/hardware.html

Und eine ähnliche Lösung für Google TV

Identify GoogleTv from Android app

+2

Das Android-Team empfohlen Check für Android TV auf diese Weise https://developer.android.com/training/tv/start/hardware.html – leafartist

12
private boolean isDirectToTV() { 
    return(getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEVISION) 
     || getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK)); 
} 

Diese true zurück, wenn das Gerät selbst ist die Werbung als mit entweder die android.hardware.type.television oder android.software.leanback Systemfunktionen. Android TV und Fire TV gehen richtig damit um; Ich habe es noch nicht in anderen Umgebungen ausprobiert.

+0

+1 dieser Ansatz lässt Sie können einfach Funktionen auf der entsprechenden Plattform einstecken, ich habe es gerade für die Now Playing Card auf AndroidTV verwendet. – sschrass

20

Von Handling TV Hardware in Android Docs:

public static final String TAG = "DeviceTypeRuntimeCheck"; 

    UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE); 
    if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { 
     Log.d(TAG, "Running on a TV Device") 
    } else { 
     Log.d(TAG, "Running on a non-TV Device") 
} 
+1

Dies ist genau das, was Google erwähnt. –