Fornecer o nome e a descrição do filtro
O getTitle
e getDescription
métodos retornam o nome e a descrição do filtro, respectivamente. O código a seguir ilustra a implementação mais simples:
public String getDescription() {
return "An example device group filter";
}
public String getTitle() {
return "myFilter";
}
A codificação rígida do texto de nome e descrição é suficiente para ambientes de criação unidilingues. Considere a externalização das cadeias de caracteres para uso em várias línguas ou a ativação da alteração de cadeias de caracteres sem recompilar o código-fonte.
Avaliação Em Relação Aos Critérios De Filtro
O matches
retornos da função true
se os recursos do dispositivo atenderem a todos os critérios de filtro. Avalie as informações fornecidas nos argumentos do método para determinar se o dispositivo pertence ao grupo. Os seguintes valores são fornecidos como argumentos:
- Um objeto DeviceGroup
- O nome do agente do usuário
- Um objeto de mapa que contém os recursos do dispositivo. As chaves Map são os nomes de recursos WURFL™ e os valores são os valores correspondentes do banco de dados WURFL™.
O com.day.cq.wcm.mobile.api.devicespecs.DeviceSpecsConstants A interface contém um subconjunto dos nomes de recursos WURFL™ em campos estáticos. Use essas constantes de campo como chaves ao recuperar valores do Mapa de recursos do dispositivo.
Por exemplo, o exemplo de código a seguir determina se o dispositivo suporta CSS:
boolean cssSupport = true;
cssSupport = NumberUtils.toInt(capabilities.get(DeviceSpecsConstants.DSPEC_XHTML_SUPPORT_LEVEL)) > 1;
O org.apache.commons.lang.math
O pacote fornece NumberUtils
classe .
Exemplo De Filtro Para Tamanho De Tela
O exemplo de implementação de DeviceGroupFilter a seguir determina se o tamanho físico do dispositivo atende aos requisitos mínimos. Este filtro destina-se a adicionar granularidade ao grupo de dispositivos de toque. O tamanho dos botões na interface do usuário do aplicativo deve ser o mesmo, independentemente do tamanho físico da tela. O tamanho de outros itens, como texto, pode variar. O filtro permite a seleção dinâmica de um CSS específico que controla o tamanho dos elementos da interface do usuário.
Esse filtro aplica critérios de tamanho à variável physical_screen_height
e physical_screen_width
Nomes de propriedades WURFL™.
package com.adobe.example.myapp;
import java.util.Map;
import com.day.cq.wcm.mobile.api.device.DeviceGroup;
import com.day.cq.wcm.mobile.api.device.DeviceGroupFilter;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
@Component(metatype = false)
@Service
@SuppressWarnings("unused")
public class ScreenSizeLarge implements DeviceGroupFilter {
private int len=400;
private int wid=200;
public String getDescription() {
return "Requires the physical size of the screen to have minimum dimensions " + len + "x" + wid+".";
}
public String getTitle() {
return "Screen Size Large ("+len + "x" + wid+")";
}
public boolean matches(DeviceGroup deviceGroup, String userAgent,
Map<String, String> deviceCapabilities) {
boolean longEnough=true;
boolean wideEnough=false;
int dimension1=NumberUtils.toInt(deviceCapabilities.get("physical_screen_height"));
int dimension2=NumberUtils.toInt(deviceCapabilities.get("physical_screen_width"));
if(dimension1>dimension2){
longEnough=dimension1>=len;
wideEnough=dimension2>=wid;
}else{
longEnough=dimension2>=len;
wideEnough=dimension1>=wid;
}
return longEnough && wideEnough;
}
}
O valor String retornado pelo método getTitle aparece na lista suspensa das propriedades do grupo de dispositivos.
Os valores de String retornados pelos métodos getTitle e getDescription estão incluídos na parte inferior da página de resumo do grupo de dispositivos.
O arquivo POM Maven
O seguinte código POM é útil se você usar o Maven para criar seus aplicativos. O POM faz referência a vários plug-ins e dependências necessários.
Plug-ins:
- Plug-in do Apache Maven Compiler: Compila classes Java do código-fonte.
- Plug-in do pacote Apache Felix Maven: Cria o pacote e o manifesto
- Plug-in SCR do Apache Felix Maven: Cria o arquivo de descritor de componente e configura o cabeçalho de manifesto service-component.
Dependências:
-
cq-wcm-mobile-api-5.5.2.jar
: Fornece as interfaces DeviceGroup e DeviceGroupFilter . -
org.apache.felix.scr.annotations.jar
: Fornece as anotações Componente e Serviço .
As interfaces DeviceGroup e DeviceGroupFilter estão incluídas no pacote de API móvel do Day Communique 5 WCM. As anotações Felix estão incluídas no pacote Apache Felix Declarative Services. Você pode obter esse arquivo JAR do repositório do Adobe público.
No momento da criação, 5.5.2 é a versão do pacote de API do WCM Mobile que está na versão mais recente do AEM. Use o Console da Web do Adobe (http://localhost:4502/system/console/bundles) para garantir que essa seja a versão do pacote implantada em seu ambiente.
POM: (O POM usará uma groupId e uma versão diferentes.)
<project xmlns="https://maven.apache.org/POM/4.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.adobe.example.myapp</groupId>
<artifactId>devicefilter</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>my app device filter</name>
<url>https://dev.day.com/docs/en/cq/current.html</url>
<packaging>bundle</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
<executions>
<execution>
<id>generate-scr-scrdescriptor</id>
<goals>
<goal>scr</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.3</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>com.adobe.example.myapp.*;version=${project.version}</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.day.cq.wcm</groupId>
<artifactId>cq-wcm-mobile-api</artifactId>
<version>5.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
<version>1.6.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
Adicione o perfil que a função Obter o plug-in Content Package Maven seção fornece ao arquivo de configurações maven para usar o repositório Adobe público.