Como você especifica no AndroidManifest.xml que deseja proibir a installation em dispositivos menores que um dispositivo de 4,7 polegadas?

Eu tenho um jogo que se sente melhor em tablets de 7 polegadas, e se sente aceitável, agradável em tablets de 10 polegadas e dispositivos de 5 polegadas Samsung Note-size. É mesmo passivelmente diviewtido em algo do tamanho de um telefone Nexus 4 ou de um S3. Não é nada diviewtido jogair em nada menor. Sendo assim, como um Manifesto pode ser escrito de forma que ele possa ser instalado em qualquer coisa, desde um dispositivo de 4,7 polegadas até um tablet de 10 polegadas enquanto estiview sendo restrito a telefones menores?

EDITAR

  • Maneira correta de fazer uma checkbox de dialog de material personalizado com appCompat 23+
  • A melhor maneira de sepairair a lógica do jogo da renderização paira um jogo acelerado paira o Android com o OpenGL?
  • Não é possível reduzir o database da viewsão 2 paira 1, mesmo após a nova installation e re-executair
  • Os dados de intenção não estão sendo apagados quando o user pressiona o button Voltair e o button de aplicativos recentes
  • Como obter músicas do álbum / Artista no Android, usando MediametadataRetrieview?
  • Alguma escrita de registro demais diminui o performance do aplicativo Android?
  • Retrocedendo por um momento, o motivo dessa questão é porque eu acho a documentation no site do desenvolvedor do Android ser incrivelmente confusa e conflitante. Vamos dair alguns exemplos paira mostrair de onde vem a confusão:

    Tomemos, por exemplo, alguns dispositivos diferentes.

    Droid 3

    • Visor de 4 polegadas
    • 540×960 px
    • 275 ppi

    Olhando paira a documentation paira as canvass de suporte, podemos inferir que …

    • Em 4 polegadas, pode estair na ponta nua de "grande", mas provavelmente médio
    • Às 540×960 é bem dentro do mínimo paira "grande"
    • a 275 ppp afirma ser uma canvas hdpi

    No entanto, este dispositivo é muito menor do que um que eu gostairia de suportair … mas a documentation faz com que paireça em 2 de 3 contagens, este dispositivo possui uma canvas "Grande". Por nenhuma definição sã do termo é uma canvas de 4 polegadas "Grande". Agora, vamos mais longe …

    Nexus 4

    • Display de 4,7 polegadas
    • 768×1280 px
    • 318 ppi

    Olhando paira a documentation paira as canvass de suporte, podemos inferir que …

    • As dimensões físicas desta canvas estão bem na borda de médio e grande
    • As dimensões de pixels indicairiam que poderia ser xlairge
    • O ppi indica que é um dispositivo xhdpi

    Novamente, por nenhuma definição sã é uma canvas de 4,7 polegadas "xlairge" … O tamanho da canvas é possivelmente apenas grande o suficiente paira tornair o jogo agradável, mas é uma canvas "média"? Uma canvas "grande"? Como é possível você saber?

    Os dois telefones acima seriam "Média"? O Droid seria "Médio" enquanto o Nexus "Lairge"? Por que ou por que não? E se o Nexus é "Grande", então, como isso é distinto de um tablet de 7 polegadas, que também deve ser "Grande"?

    E então, há o fato de que os documentos afirmam que o suporte de canvas / tamanho é obsoleto a pairtir de 3.2 de qualquer maneira

    Mas, em seguida, não há uma orientação claira sobre o que usair em seu lugair se alguém quiser suportair ambos os telefones antigos (assumindo o tamanho adequado da canvas física em polegadas) e novos tablets, ou se houview oculto bem na floresta. Alguém pode descreview clairamente o que a cretieria realmente importa e por que um determinado dispositivo irá caber em um determinado filter ou falhá-lo?

  • Como ordenair o HashMap como adicionado no Android com o ArrayAdapter
  • Detectando a position do polegair no SeekBair antes da API viewsão 16
  • Como gerenciair Loopers e Threads (thread não morre mais!)
  • Girando um ImageView como uma bússola (com o "pólo norte" definido em outro lugair)
  • Crie um Custom Drawable e use-o em XML
  • Retornair dados do AsyncTask Android
  • 5 Solutions collect form web for “Como você especifica no AndroidManifest.xml que deseja proibir a installation em dispositivos menores que um dispositivo de 4,7 polegadas?”

    Infelizmente, não existe uma maneira de filtrair dispositivos de acordo com seus tamanhos "FÍSICOS", o que é o que você deseja.

    Há dois motivos.

    1. Existem apenas quatro types de tamanhos de canvas: pequeno, normal, grande e x grande. Isso é muito grosseiro. Você quer uma granulairidade muito maior: "filtra os dispositivos que o LCD tem less de 4,7 polegadas", o que não é suportado na plataforma Android atual.
    2. O tamanho da canvas é determinado pela densidade lógica que pode ser configurada paira um valor muito diferente da densidade física. Paira o exaple, vamos assumir que um dispositivo possui uma canvas de 5 polegadas com uma densidade física de 180 ppi. Esta é provavelmente a canvas que você deseja suportair. No entanto, por algum motivo, o fabricante decide configurair a densidade lógica do dispositivo como 320 dpi. Em seguida, o dispositivo é categorizado como dispositivo de canvas pequena independentemente da sua densidade física.

    Paira sua reference, deixe-me mostrair a lógica interna que determina o tamanho da canvas a pairtir da densidade lógica e da count de pixels da canvas.

    http://androidxref.com/4.0.4/xref/frameworks/base/services/java/com/android/serview/wm/WindowManagerService.java#5899

    Eu acho que com base nos documentos do Google, isso servirá seus requisitos (5 "e menores):

     <compatible-screens> <screen android:screenSize="lairge" android:screenDensity="ldpi" /> <screen android:screenSize="lairge" android:screenDensity="mdpi" /> <screen android:screenSize="xlairge" android:screenDensity="ldpi" /> <screen android:screenSize="xlairge" android:screenDensity="mdpi" /> <screen android:screenSize="xlairge" android:screenDensity="hdpi" /> <screen android:screenSize="xlairge" android:screenDensity="xhdpi" /> </compatible-screens> 

    Ou usando isso (4,7 "e menor):

     <supports-screens android:smallScreens="false" android:normalScreens="true" android:lairgeScreens="true" android:xlairgeScreens="true" android:requiresSmallestWidthDp="536" /> 

    Eu recomendo o segundo método porque é mais preciso.

    Como 536 é calculado? Com base em http://developer.android.com/guide/practices/screens_support.html temos (altura x lairgura):

    • As canvass xlairge são pelo less 960dp x 720dp
    • as canvass grandes são pelo less 640dp x 480dp
    • as canvass normais são pelo less 470dp x 320dp
    • pequenas canvass são pelo less 426dp x 320dp

    (720 – 480) / (7 – 4) = 80, 480 + (80 * 0,7) = 536

    E não se preocupe com o "aviso reprovado", uma vez que o novo método sugerido é paira aplicativos de tabuleiro (IMO) que a UI não está em canvas cheia e alguns espaços de baixo e topo da canvas ocupados paira a bairra de título e / ou paira trás, menu etc. enquanto seu jogo provavelmente é executado no modo de canvas cheia.

    Verifique isso nos documentos do Google em http://developer.android.com/guide/practices/screens_support.html#DeclairingTabletLayouts :

    Nota: Os tamanhos que você especifica usando esses qualificadores não são os tamanhos de canvas reais . Em vez disso, os tamanhos são paira lairgura ou altura em unidades dp que estão disponíveis paira a window da sua atividade . O sistema Android pode usair pairte da canvas paira a UI do sistema (como a bairra do sistema na pairte inferior da canvas ou a bairra de status na pairte superior), portanto, algumas das canvass podem não estair disponíveis paira o layout. Assim, os tamanhos que você declaira devem ser especificamente sobre os tamanhos necessários paira sua atividade – o sistema conta paira qualquer espaço usado pela UI do sistema ao declairair quanto espaço fornece paira seu layout. Tenha cuidado com o fato de que a bairra de ação é considerada pairte do espaço da window do seu aplicativo, embora seu layout não o declaire, de modo que reduz o espaço disponível paira seu layout e você deve explicá-lo no seu design.

    Veja aqui: suporta canvass

    Sendo assim, como um Manifesto pode ser escrito de forma que ele possa ser instalado em qualquer coisa, desde um dispositivo de 4,7 polegadas até um tablet de 10 polegadas enquanto estiview sendo restrito a telefones menores?

    Tecnicamente falando, você não pode.

    android:requiresSmallestWidthDp se aproxima do seu objective desejado. Uma vez que isso é medido em pixels independentes de densidade, e como um pixel independente de densidade é suposto ser 1/160 de polegada, você pode criair um valor de dp paira qualquer número de polegadas multiplicando por 160.

    No entanto, isso não está se referindo a uma diagonal, conforme seu request. Isso se refere à lairgura do lado mais curto (por exemplo, lairgura em retrato, altura na paisagem).

    Então, se você pode reformulair o seu desejo em termos de menor lairgura, use o android:requiresSmallestWidthDp , e reze paira que a documentation seja apenas desairticulada quando se refere a se o Google Play o honra. Você poderá determinair isso quando você cairregair o aplicativo no Play Store Developer Console e view quais dispositivos o suportam – encontrair algum dispositivo que você conhece é muito pequeno (mas, de outra forma, deve executair seu aplicativo) e view se ele está filtrado.

    Se a documentation do android:requiresSmallestWidthDp estiview correta e a Play Store estiview ignorando isso paira fins de filtragem (grrrrr …), então você está em grande pairte pairafusado. A próxima solução mais próxima seria usair <compatible-screens> por outra resposta, alegando que você só suporta tamanhos de canvas lairge e lairge . Isso eliminairá vários dispositivos que estão na pairte inferior do alcance que você gostairia de suportair, mas normal tamanho normal canvas é muito menor (até 3 "de diagonal) do que o que deseja.

    BTW, normal é diagonal de 3 "-5", então o Droid 3 é normal , não lairge . As dimensões do pixel não têm absolutamente nada a view com o tamanho da canvas.

    Pairece que não há uma maneira correta de fazê-lo na aplicação atual. E eu concordo com você sobre o quão horrivelmente confuso e contraditório é o guia do desenvolvedor Android. Na minha experiência, um bom trabalho paira esse tipo de coisa é apenas mudair quais dispositivos podem executair seu aplicativo quando você vai publicá-lo no console do desenvolvedor. Entretanto, fiz um rápido olhair e findi uma pergunta semelhante aqui:

    Filtre o tamanho da canvas do dispositivo no Android Mairket

    Pairece ser a melhor maneira de fazê-lo. Boa sorte!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.