PhoneGap - Detect Gerätetyp in Phonegap

Ich baue eine Anwendung in Phonegap für die drei verschiedenen Plattformen: Android, iOS und Blackberry. Dabei muss ich den Gerätetyp erkennen, damit ich die Höhe und Breite meiner App auf verschiedenen Plattformen und für verschiedene Geräte wie Android Phone, Android Tablet, iPhone, iPad und Blackberry verwalten kann ...

48
hinzugefügt bearbeitet
Ansichten: 1
Möchten Sie die Modellgröße wirklich ermitteln, um die Größe des Bildschirms zu bestimmen? Ja wirklich ??
hinzugefügt der Autor Martijn Scheffer, Quelle

9 Antworten

Neu in Phonegap und am einfachsten ist, dass Sie die device.platform verwenden können:

// Depending on the device, a few examples are:
//   - "Android"
//   - "BlackBerry"
//   - "iOS"
//   - "webOS"
//   - "WinCE"
//   - "Tizen"
//   - "browser"
var devicePlatform = device.platform;
92
hinzugefügt
Derzeit, nur cordova plugin hinzufügen cordova-plugin-device
hinzugefügt der Autor Victor Sergienko, Quelle
Ich bekomme "Kein Provider für Gerät!" Error. Irgendwelche Ideen?
hinzugefügt der Autor Marc-André Therrien, Quelle
Wenn Sie feststellen, dass "Gerät" nicht definiert ist, verwenden Sie wahrscheinlich eine neuere Version von Phonegap/Cordova, was bedeutet, dass Sie das Plugin installieren müssen. Dies kann hier gefunden werden, git-wip-us. apache.org/repos/asf/cordova-plugin-device.git und installiert durch $ phonegap lokales Plugin hinzufügen https://git-wip-us.apache.org/repos/asf/cordova- plugin-devic & zwnj; zipit oder cordova plugin hinzufügen https://git-wip-us.apache.org/r
hinzugefügt der Autor Ian Jamieson, Quelle

Wenn Sie den Gerätetyp vor onDeviceReady erhalten möchten, können Sie so vorgehen.

var deviceType = (navigator.userAgent.match(/iPad/i))  == "iPad" ? "iPad" : (navigator.userAgent.match(/iPhone/i))  == "iPhone" ? "iPhone" : (navigator.userAgent.match(/Android/i)) == "Android" ? "Android" : (navigator.userAgent.match(/BlackBerry/i)) == "BlackBerry" ? "BlackBerry" : "null";

alert(deviceType);
54
hinzugefügt
Für Android können Sie navigator.userAgent.toLowerCase() verwenden. includes ("android")
hinzugefügt der Autor João Pimentel Ferreira, Quelle
navigator.userAgent.match (/ epad/i)) == "epad"? "epad" Ich habe diese Bedingung in den Code gesetzt, den du mir gibst ... Aber es geht nicht um ...
hinzugefügt der Autor Preet_Android, Quelle
Vielen Dank Herr .. Aber das Problem ist, dass es das Android Tablet/epad nicht erkennen kann. kannst du mir bitte helfen, wie ich das machen kann? Es zeigt den Epad-Typ als Android. Vielen Dank im Voraus.
hinzugefügt der Autor Preet_Android, Quelle
hinzugefügt der Autor Preet_Android, Quelle
Mozilla/5.0 (Linux; U; Android 4.0.3; de-us; Transformer TF101 Build/IML74k) AppleWebKit/534.30 (KHTML, wie Gecko) Version/4.0 Safari/534.30 Dieser Wert wird in der Warnung angezeigt.
hinzugefügt der Autor Preet_Android, Quelle
Sie müssen nur UserAgent Zeichenfolge für Android Tablet/epad protokollieren. Verwenden Sie console.log (navigator.userAgent); und überprüfen Sie, was es zurückgibt und setzen Sie Bedingung entsprechend Schnur.
hinzugefügt der Autor JDev, Quelle
In meinem Fall habe ich eine Operation ausgeführt, wenn deviceType "null" ist. deshalb habe ich null als string zugewiesen.
hinzugefügt der Autor JDev, Quelle
versuche zu alarmieren (navigator.userAgent) und zeig mir, was du für android epad hast.
hinzugefügt der Autor JDev, Quelle
vielleicht wäre es so "Mozilla/5.0 (Linux; U; Android 3.2.1; de-de; EPAD Build/HTK75) AppleWebKit/534.13 (KHTML wie Gecko) Version/4.0 Safari/534.13" für android epad so du kann wie navigator.userAgent.match (/ epad/i)) == "EPAD" verwenden
hinzugefügt der Autor JDev, Quelle
Warum sollten Sie deviceType auf die Zeichenfolge "null" setzen?
hinzugefügt der Autor briangonzalez, Quelle
Sindres Lösung ist eine viel sauberere Lösung. $ phonegap lokales Plugin hinzufügen https://git-wip-us.apache.org/repos/asf/cordova-plugin-devic‌ z. B.
hinzugefügt der Autor Ian Jamieson, Quelle
cordova.platformId 
// "android"
29
hinzugefügt
Dies ist perfekt. Kein Bedarf für ein Plugin.
hinzugefügt der Autor Jake, Quelle
Dies ist eine zuverlässigere Lösung als JDevs Antwort.
hinzugefügt der Autor Design by Adrian, Quelle
Kennen Sie eine Liste möglicher Werte? Ich möchte eine bestimmte Einstellung abhängig von der Plattform anwenden, aber ich weiß nicht, ob es "iOS" oder "iOS" oder "iPhone" oder "iSmugface" sein wird.
hinzugefügt der Autor Roel, Quelle
@ Roel Dies ist nur eine Vermutung, aber da cordova.platformVersion auf die Cordova-Plattform-Version nicht die Geräteversion bezieht, denke ich, dass cordova.platformId mit dem Ordnernamen unter Plattformen übereinstimmt. Also für iOS wäre es "ios"
hinzugefügt der Autor csga5000, Quelle

Sie können die Eigenschaft device.name verwenden, um detaillierte Informationen über das Gerät zu erhalten.

    function onDeviceReady() {
    var name=device.name ;
       }

oder um nur die Plattform zu erhalten, können Sie die Eigenschaft device.platform verwenden.

    function onDeviceReady() {
    var name=device.name ;
    var plat=device.platform;
       }
5
hinzugefügt
Vielen Dank ... Aber hier möchte ich Gerätetyp. Entweder ist es ein Android-Handy oder ein Android-Pad. Und das gleiche wie beim iPhone. Bedeutet es ein iPhone oder iPad. weil meine Bewerbung für die drei Plattformen ist. 1.Android 2. Blackberry und 3. iPhone/iPad.
hinzugefügt der Autor Preet_Android, Quelle

Verwenden Sie diesen Code als Ihre HTML-Datei

Geräteeigenschaften Beispiel

<script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8">

// Wait for PhoneGap to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap is ready
//
function onDeviceReady() {
    var element = document.getElementById('deviceProperties');

    element.innerHTML = 'Device Name: '     + device.name     + '
' + 'Device PhoneGap: ' + device.phonegap + '
' + 'Device Platform: ' + device.platform + '
' + 'Device UUID: ' + device.uuid + '
' + 'Device Version: ' + device.version + '
'; } </script>

Geräteeigenschaften laden ...

Ich schlage vor, dass Sie dieses Gerät überprüfen Viel Glück Aamirkhan I.

3
hinzugefügt

Ich würde sicherlich nicht den Gerätetyp beim Auslegen einer Seite verwenden, das Layout sollte nur auf der Bildschirmgröße basieren

Sie können die Javascript-Eigenschaften verwenden:

width = window.innerWidth
height = window.innerHeight

oder benutze CSS:

.element{   
    height: 50vh;  //(height = 50 percent of screen)
}

Siehe vmin, vmax, vh, vw

2
hinzugefügt
Die Frage ist, wie man einen Gerätetyp erkennt. Du hast die Frage nicht beantwortet.
hinzugefügt der Autor Pier, Quelle
nicht wahr? ja, das tut er !, er will das Gerät erkennen, dann einen Tisch mit fest codierten Größen für jedes Modell!, das ist einfach falsch!, seine eigentliche Frage ist nicht, wie man das Modell erkennt, sondern wie man die Größe des Modells erkennt Bildschirm, so meine Antwort ist richtig, und jemand stimmt tatsächlich mit der Idee, ein Gerätemodell zu verwenden, um die Größe des Bildschirms zu bestimmen, ist nicht.
hinzugefügt der Autor Martijn Scheffer, Quelle
Die Frage ist, wie man den Gerätetyp auf INFER die Bildschirmgröße erkennt, das ist einfach falsch!, lies es nochmal! Wer diese Antwort ablehnt, ermutigt jemanden, Code zu schreiben, der nicht gut skalierbar ist und bricht. "Ich muss den Gerätetyp erkennen, damit ich die Höhe und Breite meiner App verwalten kann"! Ist das nicht klar?
hinzugefügt der Autor Martijn Scheffer, Quelle
Die Frage ist NICHT, dass er nur den Gerätetyp wissen möchte!
hinzugefügt der Autor Martijn Scheffer, Quelle
ja ich tat, die Frage ist, das Gerät zu erkennen, die Größe des Bildschirms !!, es ist total falsch. "Ich muss den Gerätetyp erkennen, damit ich die Höhe und Breite meiner App auf verschiedenen Plattformen verwalten kann" Ich sollte nicht abgewählt werden, lese seine Frage noch einmal, was er falsch machen will.
hinzugefügt der Autor Martijn Scheffer, Quelle
Gute Punkte, aber beantwortet nicht die Frage, die gestellt wurde.
hinzugefügt der Autor Priidu Neemre, Quelle

You can have a look at the following link: http://docs.phonegap.com/en/1.0.0/phonegap_device_device.md.html

Es gibt verschiedene Methoden, um Geräteinformationen aus Phonegap zu erhalten.

Eine andere Möglichkeit ist es, sich den Browsertyp anzusehen. (IE = WP7, Safari = iOS, ...)

Ich bin mir nicht sicher, ob Sie erkennen können, ob Sie auf einem Android-Telefon oder Tablet sind ... Auf jeden Fall sollten Ihre HTML-Anwendungen in der Lage sein, jede Bildschirmauflösung zu handhaben. Sie können auch unterschiedliche Auflösungen an den Telefonen haben!

1
hinzugefügt
function onDeviceReady()
{
// ***IMPORTANT: access device object only AFTER "deviceready" event    
document.getElementById("name").innerHTML = device.name;
document.getElementById("pgversion").innerHTML = device.cordova ? device.cordov:device.phonegap;
document.getElementById("platform").innerHTML = device.platform;
document.getElementById("uuid").innerHTML = device.uuid;
document.getElementById("version").innerHTML = device.version;

}

See Here for device.platform

0
hinzugefügt
device.platform return "Android" auf Android-Emulator.Aktuell überprüfe ich nicht auf echte Gerät, aber ich weiß, dass dies Ihnen ein fruchtbares Ergebnis geben wird.
hinzugefügt der Autor vikky, Quelle
Vielen Dank ... Aber hier möchte ich Gerätetyp. Entweder ist es ein Android-Handy oder ein Android-Pad. Und das gleiche wie beim iPhone. Bedeutet es ein iPhone oder iPad. weil meine Bewerbung für die drei Plattformen ist. 1.Android 2. Blackberry und 3. iPhone/iPad.
hinzugefügt der Autor Preet_Android, Quelle

Wenn Sie diese Informationen benötigen, weil Sie versuchen, den Bildschirm korrekt zu formatieren, sollten Sie CSS @ media-Abfragen verwenden, um das entsprechende Bildschirmlayout zu ermitteln und CSS entsprechend anzuwenden.

Verwenden Sie Google, um Informationen zu "Responsive Design mit CSS" zu finden.

0
hinzugefügt