Olá turma!
Estou trabalhando com JSF 2 + Primefaces 3.0 + Primefaces mobile 0.9.1 (ou seja, as versões mais recentes).
Ao executar o login na aplicação, preciso descobrir se o acesso é originado de um desktop ou dispositivo móvel, para assim direcionar para páginas distintas, uma desenvolvida com PrimeUI e outra com PrimeMobile.
Não encontrei em pesquisas na web e neste forum algo para auxiliar.
Portanto, venho lhes pedir esta ajuda.
Vicente de Paula 
Segue a solução encontrada.
Classe que retornará true caso o user-agent mostre ser o cliente um dispositivo móvel:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.faces.context.FacesContext;
public class DetectarCliente {
private final static String MOBILE_DEVICE_DETECTION_PARAM = "primefaces.mobile.DEVICE_DETECTION";
public static boolean ClienteMovel(String userAgent) {
Pattern pattern = Pattern.compile("(iPhone|iPad|iPod|Android|BlackBerry|Opera Mobi|Opera Mini|IEMobile)");
Matcher matcher = pattern.matcher(userAgent);
return matcher.find();
}
}
E no Managed Bean, direciono para onde quero dentro do método de login:
String userAgent = FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap().get("User-Agent");
if (DetectarCliente.ClienteMovel(userAgent) == true) {
return "main_mobile";
} else {
return "main";
}
Vicente de Paula 