PhoneGap - Detecta o tipo de dispositivo no phonegap

Estou construindo uma aplicação em phonegap para as três plataformas diferentes: Android, iOS e Blackberry. Ao fazer isso, tenho que detectar o tipo de dispositivo para que eu possa gerenciar a altura e a largura do meu aplicativo em diferentes plataformas e para diferentes dispositivos como o Android Phone, o Android Tablet, o iPhone, o iPad e o Blackberry ...

48
adicionado editado
Visualizações: 1
Você realmente quer detectar o tamanho do modelo para determinar o tamanho da tela? realmente ??
adicionado o autor Martijn Scheffer, fonte

9 Respostas

Novo no Phonegap, e o mais simples, é que você pode usar o device.platform:

// Depending on the device, a few examples are:
//   - "Android"
//   - "BlackBerry"
//   - "iOS"
//   - "webOS"
//   - "WinCE"
//   - "Tizen"
//   - "browser"
var devicePlatform = device.platform;
92
adicionado
Atualmente, apenas plugin cordova add cordova-plugin-device
adicionado o autor Victor Sergienko, fonte
Estou recebendo "Nenhum provedor para dispositivo!" erro. Alguma ideia?
adicionado o autor Marc-André Therrien, fonte
Se você está achando que o "dispositivo" está indefinido, então provavelmente você está usando uma versão mais nova do Phonegap/Cordova, o que significa que você precisa instalar o plugin. Isso pode ser encontrado aqui, git-wip-us. apache.org/repos/asf/cordova-plugin-device.git e instalado por $ phonegap plugin local add https://git-wip-us.apache.org/repos/asf/cordova- plugin-devic & zwnj ;, por exemplo, ou plugin cordova add https://git-wip-us.apache.org/repos/asf/
adicionado o autor Ian Jamieson, fonte

Se você quiser obter o tipo de dispositivo antes de onDeviceReady, você pode obter assim.

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
adicionado
para android você pode usar navigator.userAgent.toLowerCase (). includes ("android")
adicionado o autor João Pimentel Ferreira, fonte
navigator.userAgent.match (/ epad/i)) == "epad"? "Epad" Eu coloquei essa condição no código que você me fornece ... Mas não é trabalho ...
adicionado o autor Preet_Android, fonte
Muito obrigado senhor .. Mas o problema é que ele não consegue detectar o tablet Android/epad. Então você pode por favor me ajudar como eu posso fazer isso. Mostra o tipo epad como o andróide. Muito obrigado antecipadamente.
adicionado o autor Preet_Android, fonte
adicionado o autor Preet_Android, fonte
Mozila/5.0 (Linux; U; Android 4.0.3; en-us; Transformerr TF101 Build/IML74k) AppleWebKit/534.30 (KHTML, como o Gecko) Versão/4.0 Safari/534.30 Este valor é mostrado no alerta.
adicionado o autor Preet_Android, fonte
você só precisa registrar a string userAgent para Android tablet/epad. use console.log (navigator.userAgent); e verifique o que retorna e coloque a condição de acordo com a string.
adicionado o autor JDev, fonte
no meu caso eu fiz alguma operação se deviceType for "null". é por isso que eu atribuo null como string.
adicionado o autor JDev, fonte
tente alertar (navigator.userAgent) e mostre-me o que você tem para o Android epad.
adicionado o autor JDev, fonte
pode ser que seria assim "Mozilla/5.0 (Linux; U; Android 3.2.1; de-de; EPAD Build/HTK75) AppleWebKit/534.13 (KHTML como Gecko) Versão/4.0 Safari/534.13" para android epad assim você pode usar como navigator.userAgent.match (/ epad/i)) == "EPAD"
adicionado o autor JDev, fonte
Por que você iria querer definir deviceType para a string "null" ?
adicionado o autor briangonzalez, fonte
A solução de Sindre é muito mais limpa. $ phonegap plugin local add https://git-wip-us.apache.org/repos/asf/cordova-plugin-devic&zwnj ;, por exemplo
adicionado o autor Ian Jamieson, fonte
cordova.platformId 
// "android"
29
adicionado
Isto é perfeito. Não há necessidade de um plugin.
adicionado o autor Jake, fonte
Esta é uma solução mais confiável do que a resposta da JDev.
adicionado o autor Design by Adrian, fonte
Você conhece uma lista de valores possíveis? Eu quero aplicar uma determinada configuração, dependendo da plataforma, mas eu não sei se será "ios" ou "iOS" ou "iPhone" ou "iSmugface".
adicionado o autor Roel, fonte
@Roel Isso é apenas um palpite, mas como cordova.platformVersion se refere à versão da plataforma cordova e não à versão do dispositivo, acho que cordova.platformId é consistente com o nome da pasta nas plataformas. Então, para ios, seria "ios"
adicionado o autor csga5000, fonte

você pode usar a propriedade device.name para obter informações detalhadas sobre o dispositivo.

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

ou para obter apenas a plataforma, você pode usar a propriedade device.platform.

    function onDeviceReady() {
    var name=device.name ;
    var plat=device.platform;
       }
5
adicionado
Muito obrigado ... Mas aqui eu quero o tipo de dispositivo. Ou é um telefone android oo um pad android. E mesmo no cas do iPhone. Significa que é um iPhone ou iPad. porque meu aplicativo é para as três plataformas. 1.Android 2. Blackberry e 3. iPhone/iPad.
adicionado o autor Preet_Android, fonte

use este código como ur file html

Exemplo de propriedades do dispositivo

<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>

Carregando as propriedades do dispositivo ...

eu sugiro que você verifique isso no dispositivo Melhor da sorte Aamirkhan I.

3
adicionado

Eu certamente não usaria o tipo de dispositivo ao colocar uma página, o layout deve ser baseado apenas no tamanho da tela

você pode usar as propriedades do javascript:

width = window.innerWidth
height = window.innerHeight

ou use CSS:

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

veja vmin, vmax, vh, vw

2
adicionado
A questão é como detectar um tipo de dispositivo. Você não respondeu a pergunta.
adicionado o autor Pier, fonte
Hã ? sim ele faz !, ele quer detectar o dispositivo, então tem uma tabela com tamanhos codificados para cada modelo !, isso é simplesmente errado !, sua verdadeira questão não é como detectar o modelo, mas como detectar o tamanho do tela, então minha resposta está correta, e qualquer um realmente concordando com a idéia de usar um modelo de dispositivo para determinar o tamanho da tela não é.
adicionado o autor Martijn Scheffer, fonte
A questão é como detectar o tipo de dispositivo para INFER o tamanho da tela, isso é apenas errado!, leia de novo! Qualquer pessoa que desista dessa resposta incentiva alguém a escrever um código que não será bem escalonado e será quebrado. "Eu tenho que detectar o tipo de dispositivo para que eu possa gerenciar a altura e a largura do meu aplicativo"! não está claro?
adicionado o autor Martijn Scheffer, fonte
a questão não é que ele só quer saber o tipo de dispositivo!
adicionado o autor Martijn Scheffer, fonte
sim eu fiz, a questão é detectar o dispositivo para saber o tamanho da tela !!, é totalmente errado. "Tenho que detectar o tipo de dispositivo para que eu possa gerenciar a altura e largura do meu aplicativo em diferentes plataformas" Eu não deveria ser votado para baixo, leia sua pergunta novamente, o que ele quer fazer é errado.
adicionado o autor Martijn Scheffer, fonte
Bons pontos, mas não responde a pergunta que foi feita.
adicionado o autor Priidu Neemre, fonte

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

Existem vários métodos para obter informações sobre o dispositivo a partir do phonegap.

Uma outra opção é dar uma olhada no tipo de navegador. (IE = WP7, Safari = iOS, ...)

Não tenho certeza se você será capaz de detectar se está em um smartphone ou tablet Android ... De qualquer forma, seus aplicativos html devem ser capazes de lidar com qualquer resolução de tela. Você pode ter diferentes resoluções nos telefones também!

1
adicionado
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
adicionado
device.platform return "Android" no emulador android.Na verdade eu não verificar no dispositivo real, mas eu sei que isso lhe dará resultado frutífero.
adicionado o autor vikky, fonte
Muito obrigado ... Mas aqui eu quero o tipo de dispositivo. Ou é um telefone android oo um pad android. E mesmo no cas do iPhone. Significa que é um iPhone ou iPad. porque meu aplicativo é para as três plataformas. 1.Android 2. Blackberry e 3. iPhone/iPad.
adicionado o autor Preet_Android, fonte

Se você precisar dessas informações porque está tentando formatar a tela corretamente, deverá usar as consultas CSS @media para determinar o layout de tela apropriado e aplicar o CSS adequadamente.

Use o Google para encontrar informações sobre "design responsivo com CSS"

0
adicionado