Apps für Android programmieren leicht gemacht!
tablet identifizieren

Tablet identifizieren

Bevor wir anfangen zu programmieren muss ich euch erst einmal derbe enttäuschen.
Es gibt nicht den einen Masterplan, wie man ganz einfach ein Tablet, von einem Smartphone unterscheiden kann.
Zum Glück gibt es aber diverse Wege dies zu erahnen und durch die Kombination dieser mehreren Wege kann man sich sogar sehr sicher sein.
Nun denn, fangen wir an und befassen uns eingehend mit dem Für und Wieder.

 

Weg 1:

Unser erster Weg wäre zu prüfen, ob das Gerät einen Simkartenslot besitzt.
Leider besitzen viele Tablets ebenfalls einen solchen Simslot, um mobil ins Internet gehen zu können, aber eben nicht alle.
Bei Smartphones sieht das da schon ganz anders aus, hier haben eigentlich alle einen Simkartenslot. Ob überhaupt ein Simkartenslot vorhanden ist, haben wir bereits in diesem Artikel angesprochen gehabt.

public boolean besitztSimkartenslot(){
    TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

    return (telMgr.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE);
}

Diese Funktion liefert ein true zurück, wenn das Gerät einen Simkartenslot besitzt.
Liefert die Funktion also ein false zurück ist die Wahrscheinlichkeit, dass es sich um ein Tablet handelt relativ groß.

 

Weg 2:

Da der Weg 1 nicht zu 100% ausschließen kann, dass es sich nicht vielleicht um ein Tablet mit mobilem Internet handelt wollen wir ein alternativen Weg aufzeigen.
Dieses mal versuchen wir einfach zu prüfen, wie groß der Bildschirm des Gerätes ist. Ich möchte gleich erwähnen, dass wir hier nicht ausschließen können, vielleicht an ein Phablet (also ein sehr großes Smartphone) geraten zu sein.
Wir erstellen einfach eine neue „strings.xml“ Datei, die von Android nur dann genutzt wird, wenn es sich um einen großen Bildschirm handelt.

Dazu gehen wir in Android Studio in die linke Dateiliste, klicken auf „res“, danach mit einem Rechtsklick auf „values“ und wählen „New > values resource file“ aus.
Es sollte sich nun ein Fenster öffnen. Im Feld „File name“ schreiben wir „strings.xml“ und im Feld „Directory name“ schreiben wir „values-large“.
Diesen Vorgang wiederholen wir noch einmal mit dem Directory name „values-xlarge“.
Nun haben wir 2 strings.xml Dateien erstellt, dessen Inhalt von Android genutzt wird, wenn es sich um 7″ und 10″ Geräte handelt.
Wir finden diese Dateien nun in dem Ordner „res > values > Strings“.
Hier sollten drei Dateien zu finden sein („strings.xml“, „strings.xml (large)“, „strings.xml (xlarge)“).

In die Dateien „strings.xml (large)“ und „strings.xml (xlarge)“ fügen wir nun folgendes ein:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="tablet">true</bool>
</resources>

Die Datei „strings.xml“ sollte so oder so ähnlich aussehen:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    [... Alle Tags die dort schon standen ... ]
    <bool name="tablet">false</bool>
</resources>

 

Nun benötigen wir lediglich noch eine Funktion, die das ausließt was Android uns abhängig von der Displaygröße anbietet.

public boolean grosserDisplay(){
    return getResources().getBoolean(R.bool.tablet);
}

 

Weg 3:

Als letzten Weg würde mir noch einfallen zu prüfen, ob eine IMEI-Nummer existiert. Diese ist existenziell, um telefonieren zu können.
Keine IMEI-Nummer bedeutet also, dass es auch keine Telefonfunktion gibt.
Über diesen Schritt können wir ausschließen, dass bei dem Auslesen des Simkartenslots ein Fehler aufgetreten ist.

public boolean hatIMEI(){
    TelephonyManager manager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
    return (null != manager.getDeviceId());
}

Die Funktion liefert ein true zurück, wenn eine IMEI-Nummer existiert.

 

Fazit:

Wir haben nun drei verschiedene Wege geklärt, wie man ein Tbalet identifizieren kann oder zumindest ausschließen kann, dass es sich um ein Smartphone handelt.
Wie ihr nun die einzelnen Wege mit einander kombiniert ist letztendlich euch überlassen. Eine 100%ige Sicherheit kann man so leider nicht erreichen, aber 99% sollten vorerst auch reichen. Zur Not fragt man den Nutzer einfach einmal, um welches Gerät es sich dennoch handelt 😉

 

Kleine Information am Rande, für den Weg 1 und 3 benötigt ihr die entsprechende Berechtigung. In diesem Artikel zu finden.

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld