Android Validator 1.0 Released

Android Validator 1.0 Released

Android-Validator

Form Validator Library for Android

Presentation

Form Validator Library for Android is based on Zend_Validator coded in PHP. This library is intended to simplify and streamline the code to validate a form Android. For the moment, the form can just handle the EditText. Other elements will emerge in future versions.

License

Warning

With Android 4.2, the error display has undergone a display bug. Sometimes, the error fields do not appear in the display. I hope that Google will repair this problem quickly due to Android in itself and not the library.

Use

Form Validator Library is composed of 3 members :

  • Form : Contains all beings validates to treat. This is the Form that manages the display of error messages in the various elements.
  • Validate : Contains all the validators to be treated for a given element.
  • Validator : Can define a validation rule.

Validator

The validator is basic class for this library. It contains specific validation rules. To instanciate validator, you just have to do this (EmailValidator for example):

new EmailValidator(context);

For some validators, functions can change the validation rules. The validator currently contains three basic validation rules:

  • EmailValidator : Ensures that the field does contain a email address. You can also define a regex to check for a particular domain name with the function setDomainName(DomainRegexp). Example for gmail.com domain : setDomainName("gmail\\.com").
  • NotEmptyValidator : Ensures that the field is not empty.
  • UrlValidator : Ensures that the field is a valid url.
  • AlnumValidator : Ensure that the feld has Alnum characters.
  • HexValidator : Ensure that the field has Hex characters.
  • RegExpPattern : Ensure that the field does match setted Pattern.
  • Custom Validator : You can create your own Validator. To do this, you can just create class extends AbstractValidator :

    public class CustomValidator extends AbstractValidator
    {
        // Your custom error message
        private int mErrorMessage = R.string.validator_custom; 
    
        public CustomValidator(Context c) {
            super(c);
        }
    
        @Override
        public boolean isValid(Object value) {
            // Your validation Test is here.
            // Retour true if it's correct, false if it's incorrect
            return true;
        }
    
        @Override
        public String getMessage() {
            return mContext.getString(mErrorMessage);
        }
    }
    

Validate

The pure Validate class is a FIFO validator. It’s test a list of AbstractValidator for specific EditText. For some special cases, Validate is not enough. This is why there are specific validates. This is why there are two individuals with a Validate operation different from that base :

  • ConfirmValidate : Can check whether a value is identical between the two fields. Can be used to confirm the entry of a password.
  • OrTwoRequiredValidate : If one of the two target fields has a value, then it is valid. Can be used if a user must give his phone or fax.
  • Validate : The base Validate. It creates his validators stack.

Basicly, Validate can only handle a single EditText. If you want to manage several at the same time, see if ConfirmValidate or OrTwoRequiredValidate match your problem. If this is not the case, you may need to create your own Validate. To instantiate a Validate, you just have to do this:

Validate emailField = new Validate(email);

And to add Validator stack, for example to add a required Email field, you have to do this:

emailField.addValidator(new NotEmptyValidator(mContext));
emailField.addValidator(new EmailValidator(mContext));

Form

The Form class is the class teacher of the whole Library. It manages the processing of each Validate, Validator and displays the error on the EditText automatically. The Form class stores a Validate stack and then you just have to run the validation with the validate() function. To instanciate Form and add Validates, you have to do this :

Form mForm = new Form();
mForm.addValidates(emailField);
mForm.addValidates(confirmFields);
mForm.addValidates(urlField);

// ...

// Launch Validation
if(mForm.validate()){
    // success statement
}else{
    // error statement like toast, crouton, ...
}

Changelog

  • 0.1 : Create library
  • 0.2 : Add ConfirmValidate and OrTwoRequiredValidate
  • 0.3 : Extends EmailValidator with setDomainName()
  • 0.4 : Replace Validator by AbstractValidator
  • 0.5 : Fix bug in UrlValidator
  • 1.0 : Add AlnumValidator, HexValidator, RegExpValidator, ValidatorException. Fix Validate class.
Migrer sur IntelliJ ses projets Android

Migrer sur IntelliJ ses projets Android

Juste avant vos fêtes de Noël, je vous propose un petit article tout simple vous présentant l’IDE alternatif IntelliJ. Nous allons voir ses fonctions principales et comment migrer votre développement dessus. Bien entendu, cet IDE est disponible gratuitement au téléchargement si vous optez pour la version Community Edition. Heureusement pour nous, elle suffit amplement au développement Android mais, si vous voulez aller plus loin dans le développement JAVA en utilisant certains frameworks, vous devriez certainement opter pour la version Ultimate.

Présentation

IntelliJ est un IDE java développé par la société JetBrains. Cet IDE est, comme Eclipse, Netbean, … codé en JAVA et disponible sur toutes les plateformes (Windows, Mac et Linux). Comparé aux autres IDE, IntelliJ est pensé pour développer QUE des applications JAVA et Android (bon ok, Android c’est aussi du JAVA mais passons). Depuis sa dernière version  en date, la 12.0, IntelliJ se dote d’un thème Dark et d’une meilleure compatibilité avec le développement Android. Il intègre un outil de création de vues aussi complet que celui fourni par l’ADT dans Eclipse. De plus, cet éditeur comprend la compatibilité avec la plupart des frameworks JAVA ainsi qu’une compatibilité avec ANT.

Enfin un IDE qui ne flash pas quand on développe dans une cave.

Enfin un IDE qui ne flash pas quand on développe dans une cave.

Personnellement, cet IDE semple beaucoup plus léger qu’Eclipse et consort. De plus, sur de gros projets Android, nous n’avons plus d’OOM lors de la compilation (arrivée plusieurs fois sur Eclipse si je laisse le .ini de base). Bref, si vous devez choisir un IDE, je vous conseillerai de tester celui-ci avant votre choix définitif (et qui sait, peut-être qu’un nouvel IDE mettra la barre encore plus haut dans un futur proche). Si vous voulez des renseignements supplémentaires, au lieu de bêtement copier/coller la présentation du site via Google Trad, je vous conseille de vous rendre ICI.

Importation de mes anciens projets

Maintenant, nous allons nous attaquer à ce que vous allez certainement faire si vous voulez continuer vos projets en cours sur cet IDE. Pour cela, vous avez plusieurs possibilités :

  • Ouvrir directement le répertoire du projet sur votre PC
  • Checkout depuis différents dépôts de version : Git/GitHub/SVN/Mercurial/CVS

Après avoir importé votre projet, vous devez indiquer quel SDK est utilisé pour votre projet. Pour cela, vous devez aller dans les paramètres du projet disponibles directement dans la barre d’actions.

Le bouton est entouré en rouge

Le bouton est entouré en rouge

Ensuite allez dans la partie Project puis sélectionnez votre SDK. De base, vous devriez en avoir aucun. Il va faloir les rajouter. Cliquez donc sur le bouton New et ajoutez d’abord le JDK puis ensuite rajoutez le ou les SDK Android dont vous avez besoin.

Quand vous avez votre SDK, sélectionnez le.

Quand vous avez votre SDK, sélectionnez le.

Il vous fautra aller ensuite dans la partie Module puis rajouter le module Android à votre projet. Si vous oubliez cette partie le projet ne compilera jamais car il manquera la partie gen, la classe R et toutes les libraries externes.

Voilà, notre module est ajouté

Voilà, notre module est ajouté

Si votre projet vient d’Eclipse, il se peut que vous ayez deux libraries vous notifiant une erreur. Il s’agit de libraries rajoutées automatiquement par ADT pour qu’Eclipse puisse parcourir le SDK. Supprimez les simplement puis validez. Normalement votre projet devrait compiler.

Maintenant il faut aussi faire une configuration pour lancer vos applications sur l’émulateur et/ou un appareil Android. Pour cela, cliquez sur la flèche à gauche de Play puis sur « Edit Configurations ». Une nouvelle fenêtre apparaît. Cliquez sur le « + » puis sur Android Application. Sélectionnez en Module votre projet puis ensuite réglez le reste comme bon vous semble. Appliquez et c’est bon. Maintenant vous pouvez lancer votre projet.

Simple non?

Simple non?

Vous avez autant de réglages que sur Eclipse

Vous avez autant de réglages que sur Eclipse

Conclusion

Vous savez maintenant continuer vos différents projets Android sur IntelliJ. Seul défaut, cet IDE ne gère qu’un seul projet par fenêtre. De plus, je n’ai pas encore essayé les Libraries Projets donc je ne peux pas dire si ça marche ou non. Espérons que Google fournisse enfin un outil pour convertir ses projects libraries avec ressources en JAR comme pour son SDK et les googleAPI.

Bref, si vous ne savez pas quel IDE utiliser ou si vous en avez marre d’Eclipse, de ses bugs et de ses lenteurs légendaires, je vous conseille vivement d’essayer et d’adopter IntelliJ comme je viens de le faire. 

Fritte et moi nous vous souhaitons un Joyeux Noël

Refonte du design (Et Rebelote)

Refonte du design (Et Rebelote)

Comme vous devez le constater, le site a été entièrement refondu en essayant de tirer parti des guidelines Android. Vu qu’en ce moment il y a plus d’articles Android que d’articles PHP (même si certains sont en approche), il m’a semblé normal de le refondre tel quel. Je vais donc vous faire un petit tour des particularités de ce nouveau thème. Si certains d’entre vous sont intéressés par la suite, merci de me l’indiquer dans les commentaires.

Présentation Générale

Comme dit plus haut, le thème se base sur les guidelines Android et utilise donc la touche graphique du thème Holo.Light. Pourquoi le light et non le Dark? Juste une histoire de goût. Je le trouve plus sobre et classe que son contraire. Vous verrez que je joue beaucoup avec les 5 couleurs d’Android. A savoir le bleu, violet, vert, jaune/orange, rouge. J’en joue tellement que selon l’emplacement de votre widget, il optera directement pour une de ces couleurs. Idem au niveau du footer et du header.

Le Header

Le header est composé de 3 éléments. Une ActionBar repensée dans l’esprit d’Android. Au niveau de l’Overflow (les 3 points à droite) vous avez accès aux pages du site. A savoir Contact et A propos (sera mis à jour dans les prochains jours). Bien entendu, le header est responsive et changera de forme pour pouvoir fonctionner parfaitement sur smartphones et tablettes.

On se croirait sur tablette non?

On se croirait sur tablette non?

Ensuite arrive les icônes sociaux à droite. Ils sont au nombre de 6. Vous aurez donc droit, dans l’ordre, aux feeds, mon twitter, mon linkedin, mon Google+, ma bibliothèque GitHub et la liste de mes applications Android. Pourquoi n’y a t’il pas la possibilité de rajouter facebook? Je ne trouve pas facebook professionnel.

Ils sont pas beau?

Ils sont pas beau?

Pour finir, vous trouverez à gauche l’emplacement pour un Logo et un sous-titre pour votre site.

Les Widgets

Les widgets à droite ont pour base celui de GMail sur Android (et oui encore un énorme clin d’oeil). Il faut savoir que tous les widgets ne sont pas obligatoirement adaptés à ce thème. Je ne me suis concentré que sur ceux que j’utilisais et encore, avec ceci, j’ai dû en recréer deux pour qu’ils s’adaptent parfaitement. Il s’agit des commentaires récents et des Posts Populaires. Bien entendu, ils sont arrangés de telle façon à être disposées sur la sidebar ou dans le footer. 

Ah, il est en seconde position. D'où le vert

Ah, il est en seconde position. D’où le vert

Pour ce qui est du footer, j’ai joué sur la sobriété pour l’apparence des widgets. Malgré tout, on retrouve les mêmes bases entre les deux emplacements.

Sobre n'est-il pas?

Sobre n’est-il pas?

Article et Formulaires

Pour ce qui est des différents cadres pour séparer chaque article, pages, formulaires, bloc de commentaires, … je me suis inspiré des cartes dans Google Now. L’intégration avec les rajouts Jetpack est bien fonctionnelle et se marie très bien avec le thème.

Oh j'ai une card dans Google Now

Oh j’ai une card dans Google Now

Pour ce qui est des formulaires, vous avez certainement reconnus le design Android aussi ici. Pour le réaliser, ça n’a pas été simple. Surtout pour son intégration. D’ailleurs  si vous voulez le code à rentrer dans Contact-Form-7 pour qu’il s’intègre parfaitement au thème, n’hésitez surtout pas à me le demander.

Je suis sur une appli native?

Je suis sur une appli native?

Conclusion

Voilà pour la présentation du nouveau thème. Vous découvrirez d’autres particularités en navigant à travers le blog. Bien entendu, si vous êtes intéressés par ce thème pour le réutiliser, merci de l’indiquer dans les commentaires. Ce thème est bien entendu compatible IE mais dans ses version 9 et supérieures ainsi que tous les navigateurs utilisant le moteur de rendu Webkit. Firefox n’est pas en reste loin de là.

Voilà à quoi cela devrait ressembler sur votre smartphone

Voilà à quoi cela devrait ressembler sur votre smartphone

Comme indiqué, le site est Responsive. Qu’est-ce que cette bête? Et bien simplement que le site se réadapte automatiquement selon la taille de l’écran. Vous aurez donc le même site avec le même design que vous soyez sur mobile, tablette, ordi, télé, … Pour se faire, j’ai utilisé l’un des nombreux « frameworks » CSS/Html5 existant à savoir le framework Foundation.

Sur ce, je vous souhaite une très bonne journée à tous.

Envoyer un mail sans application tierce.

Envoyer un mail sans application tierce.

Bonjour à tous, Aujourd’hui nous allons nous attaquer à l’envoi de mail sans passer par une application tierce. Tout cela sera réalisé avec la librairie JavaMail.

Dans quel cas utiliser cette méthode ?

Plutôt que d’utiliser des applications beaucoup plus optimisées, moi je l’utilise au travail, pour envoyer les crash de mes applications en background (caché de mon utilisateur). Vous allez me dire, il y a bien ACRA, mais il demande une interaction utilisateur, et parfois les personnes ne prennent pas le temps de faire « send report »… 

Il est possible de recevoir/envoyer des mails, ajouter des pièces jointes etc. Très complète comme librairie. Mais je ne vais vous présenter que l’envoi via une petite application très rapide.

Bien entendu, c’est un tuto, beaucoup de tests (adresse mail, etc), de gestion de spam de clique « envoyé » ne sont pas présents.

Nous allons nous pencher légèrement sur la classe Mail, elle défini en gros toutes les options et les paramètres de l’envoi de mail.

public class Mail extends javax.mail.Authenticator {

    private String _user;
    private String _pass;
    private String[] _to;
    private String _from;
    private String _port;
    private String _sport;
    private String _host;
    private String _subject;
    private String _body;
    private boolean _auth;
    private boolean _debuggable;
    private Multipart _multipart;

    public Mail() {
        _host = "smtp.gmail.com";
        _port = "25";
        _sport = "465";
        _subject = "";
        _body = "";
        _debuggable = false;
        _auth = true;
        _multipart = new MimeMultipart();

        MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
        mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
        mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
        mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
        mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
        mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
        CommandMap.setDefaultCommandMap(mc);
    }

    public Mail(String user, String pass) {
        this();
        _user = user;
        _pass = pass;
    }

    public boolean send() throws Exception {
        Properties props = _setProperties();
        if (!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) {
            Session session = Session.getInstance(props, this);
            Transport transport = session.getTransport("smtp");
            if (!transport.isConnected()) {
                /** ouvre la connexion si elle ne l'est pas faite ! */
                transport.connect(_user, _pass);
            }
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(_from));
            InternetAddress[] addressTo = new InternetAddress[_to.length];
            for (int i = 0; i < _to.length; i++) {
                addressTo[i] = new InternetAddress(_to[i]);
            }
            msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);
            msg.setSubject(_subject);
            msg.setSentDate(new Date());
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText(_body);
            _multipart.addBodyPart(messageBodyPart);
            msg.setContent(_multipart);
            //   Transport.send(msg);
            transport.sendMessage(msg, msg.getAllRecipients());
            System.out.println("envoyé");
            return true;
        } else {
            return false;
        }
    }

    public void addAttachment(String filename) throws Exception {
        BodyPart messageBodyPart = new MimeBodyPart();
        FileDataSource source = new FileDataSource(filename);
        messageBodyPart.setDataHandler(new DataHandler(source));
        messageBodyPart.setFileName(filename);

        _multipart.addBodyPart(messageBodyPart);
    }

    @Override
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(_user, _pass);
    }

    private Properties _setProperties() {
        Properties props = new Properties();
        props.put("mail.smtp.host", _host);
        if (_debuggable) {
            props.put("mail.debug", "true");
        }
        if (_auth) {
            props.put("mail.smtp.auth", "true");
        }
        props.put("mail.smtp.port", _port);
        props.put("mail.smtp.socketFactory.port", _sport);
        props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        return props;
    }
//getter and setter
}

Ensuite elle réalise déjà pas mal de test, sur les paramètres obligatoires d’un mail, et renverra faux à l’envoi. Donc elle réalisé déjà le gros de votre travail si vous oubliez des champs… Transport a deux méthodes send. Une send et une autre sendMessage. Il y a une grosse différence entres les deux.

Tout d’abord send() est une static, et dans l’API il est dit « unlike this method »… En plus, juste avant l’appel de l’envoi, nous instancions Transport, pour tester si l’utilisateur (user dans l’app) est bien connecté, si non, il le ferra. Donc autant utiliser la meilleure méthode qui n’appellera pas le saveChanges et donc ira plus vite à l’envoi.

Encore une idée d’apparence de formulaire 😀

Ensuite, pour en revenir à l’application tuto, nous réalisons qu’il est très facile d’utilisation la création de mail. N’oubliez pas qu’elle doit être envoyé dans un Thread a part. Sinon l’application freezera jusqu’à ce que l’envoi soit réalisé.

public class TutoSendMail extends Activity implements OnClickListener{

    public Mail m;

    private EditText mailEdit;
    private EditText pwdEdit;
    private EditText toEdit;
    private EditText subjectEdit;
    private Button sendMail;

    private String user;
    private String pwd;
    private String to;
    private String subject;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.tutosendmail_view);

        mailEdit = (EditText) findViewById(R.id.editMail);
        pwdEdit  = (EditText) findViewById(R.id.editMdp);
        toEdit = (EditText) findViewById(R.id.editTo);
        subjectEdit = (EditText) findViewById(R.id.editSubject);
        sendMail = (Button) findViewById(R.id.buttonSend);
        /** surtout pas oublier d'assigner le onclick au bouton */
        sendMail.setOnClickListener(this);
    }

    /**
     * AsyncTask pour envoyer le mail
     * @author fritte
     *
     */
    private class SendMail extends AsyncTask<Void, Void, String[]> {
        private boolean envoye;

        @Override
        protected String[] doInBackground(Void... params) {

            /** user et pwd de qui envoie */
            m = new Mail(user, pwd);
            /** a qui j'envoie */
            String[] toArr = {
                to
            };
            m.set_to(toArr);
            /** le 'from' de qui vient le mail */
            m.set_from(user);
            /** le sujet */
            m.set_subject("Test envoi mail via javamail");
            /** et le message */
            m.set_body(subject);
            try {
                /** l'envoi */
                if (m.send()) {
                    envoye = true;
                } else {
                    envoye = false;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String[] result) {
            super.onPostExecute(result);
            if (envoye) {
                Crouton.makeText(TutoSendMail.this, getString(R.string.envoye), Style.CONFIRM).show();
            } else {
                Crouton.makeText(TutoSendMail.this, getString(R.string.pasenvoye), Style.ALERT).show();
            }
        }
    }

    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.buttonSend:
                if (testIfNull()) {
                    /** on pourrait même lancer une progressDialogue dans l'action barre, comme pour le refresh G+ etc */
                    new SendMail().execute();
                }
                break;
        }
    }

    /**
     * on peut tester aussi avec un regex les mails s'ils sont correct etc...
     * @return
     */
    private boolean testIfNull() {
        boolean OK;
        if (mailEdit.getText().toString().length() > 0
            && pwdEdit.getText().toString().length() > 0
            && toEdit.getText().toString().length() > 0
            && subjectEdit.getText().toString().length() > 0) {

            user = mailEdit.getText().toString();
            pwd = pwdEdit.getText().toString();
            to = toEdit.getText().toString();
            subject = subjectEdit.getText().toString();
            OK = true;
        } else {
            OK = false;
            Crouton.makeText(TutoSendMail.this, getString(R.string.erreur_champs_vides), Style.ALERT).show();
        }
        return OK;
    }
}

Si vous avez des questions, n’hésitez pas. Voici le lien vers le code source de l’application avec le tutorial d’avant, Crouton et Toast  https://code.google.com/p/fritte-tuto-master/

Nexus 4 Review (et un de plus)
Rien à redire devant un téléphone aussi bien réussi

Nexus 4 Review (et un de plus)

Aujourd’hui, et après une semaine en sa possession, je vais vous faire mon retour sur le Nexus 4. Un retour assez bref car avec toutes les Reviews qui traînent entre le prototype, la version finale, la version qui est en rupture, celle livrée dans 3 semaines, celle en forme de pizza, … Il y a de quoi faire. Donc, je vais vous présenter le Nexus 4 en apparence, avec le packaging fait par google, ensuite je vais vous parler de l’expérience Android qui va avec car, comparé aux téléphones, la game nexus donne une expérience pure d’Android (aucune surcouche pourrie made in Samsung, Orange et consort). Je terminerai pas vous parler de la partie multimédia de ce superbe appareil avant de conclure.

Packaging et Apparence

Pour ma part, quand j’ai reçu le Nexus 4, j’ai été impressionné par la taille du colis. Sur le coup, j’ai cru qu’ils avaient confondu avec une Nexus 10. J’en viens à penser que les excuses de retard et d’épuisement viennent du fait que Google n’avait pas prévu assez de colis. Bref, après avoir bataillé pour enlever le papier à bulle, je suis tombé sur cette magnifique boîte :

Bon, elle est abîmée à cause de ma sortie du papier bulle. Ne vous en faites pas.

Comme d’habitude, la boîte contient un câble USB/micro USB, adaptateur secteur, écouteurs et bien entendu, un Nexus 4. Le Nexus 4 quand à lui est de très très bonne qualité. Pour ma part, je dirais même qu’il s’agit de la meilleure qualité de téléphone que j’ai pu voir jusqu’à maintenant (même l’Iphone 5 ne nui arrive pas à la cheville). Au premier coup d’oeil, on peut se dire qu’il fait bien gros et qu’on aura du mal à le tenir. Je vous rassure, ayant utilisé toutes les tailles de téléphones Android jusqu’ici, je le trouve vraiment pratique à tenir avec même une meilleure prise en main qu’un Galaxy S2 par exemple. J’ai même testé la différence entre lui et un S3 et c’est sans appel : le Nexus 4 a une bien meilleure prise en main que son homologue.

Oh mon dieu, mais c’est énorme!

A noter aussi (et tout le monde le met dans sa review) le dos holographique du Nexus 4 qui, malgré ce que je pensais, n’est pas si voyant et qui donne un effet encore plus « classe » à notre smartphone. Ce dos, qui se trouve être aussi en verre, peut vous sembler fragile et, après un semaine d’utilisation, je n’ai aucune rayure, trace, … En fait, si vous ne le savez pas, depuis l’Iphone 4, le dos est aussi en verre et personne a crié « oh mon dieu, mais c’est fragile » mais plus tôt « oh mon dieu c’est trop classe ». Pour le Nexus 4, je serais d’avis de crier aussi la seconde phrase.

Enfin réussi à prendre une photo avec le dos holographique

Petit effet qui a son charme et qui, je trouve, donne un vrai plus au confort d’utilisation, c’est le petit arrondi qu’il y a sur les côté droit et gauche de l’écran. Les tranches de l’appareil sont carrées mais douces au toucher avec un petit style d' »allu brossé » sur le dessus. Les boutons, ayant le même style pour régler le son et déverouiller l’écran sont eux placés comme la plupart des nouveaux smartphones (enfin une norme de placement?). Le micro USB est très bien placé (comme les autres nexus) en bas de l’appareil pour permettre, dans un futur proche, la compatibilité avec toutes les stations d’accueil micro USB. Pour ce qui est de la prise Jack en haut, certains ont criés au scandal car depuis le Nexus S, il est placé en bas. Moi je trouve ça plus pratique car, si vous mettez votre téléphone sur une station de charge micro USB, vous n’avez plus accès au jack et donc, vous ne pouvez pas brancher vos écouteurs. Là, vous pouvez concilier les deux facilement.

Rien à redire devant un téléphone aussi bien réussi

Pour ce qui est du poids, je l’ai trouvé quasi aussi lourd que le Galaxy S3. Pourtant, le S3 me semble beaucoup plus cheap que le Nexus S que ce soit au touché ou à la main. Pour vous donner une idée, malgrès une taille d’écran plus grande, le Nexus 4 se trouve être plus petit de quelques milimètres que le S3 pour une épaisseur équivalente.

Expérience Android

Comme dit au cours de l’introduction, le Nexus 4 utilise le design de base d’Android. Vous aurez donc l’utilisation la plus pure du système avec un total respect des guidelines dans les applications de base. Il faut savoir que normalement, depuis android 4.0, la touche dite menu n’existe plus. Une autre touche, permettant elle d’avoir accès à votre historique d’applications lancées, a fait son apparition. Ces 3 touches de base (avec la touche retour) suffisent à naviguer au sein d’Android (pas comme le gros bouton home physique de chez Samsung).

Plus aucun bouton physique

Si vous ne le savez ps, le Nexus 4 est installé avec la dernière version en date d’Android. A savoir la version 4.2 Jelly Bean. Cette version n’a pas trop de nouveautés par rapport à la version précédente si ce n’est ce que je vais vous indiquer dans la suite du sujet. Nous allons faire un tour bref des nouveautés avec l’interface pure  d’Android 4.2.

Voici un de mes bureau. Celui-ci, c’est le social.

Tout d’abord, nous allons voir la Home et le launcher. Si vous êtes un habitué d’Android, vous n’êtes pas sans savoir que, comparé à ses concurents, on a accès à un Bureau et à la liste des applications séparéments. Ce bureau peut, comme le bureau Windows, avoir certains raccourcis d’application. Il peut aussi avoir des widgets et, cerise sur le gâteau, vous pouvez définir un fond d’écran. Autant sur Iphone, vous pouvez personnaliser la coque avec un bumper, autant avec Android vous pouvez personnaliser votre écran. A savoir que l’écran définit pour le bureau sera le même que celui de votre lockscreen. De base, le « Home » contient 5 bureaux. Dans la version basique d’Android, il n’est pas possible de changer le nombre de bureau, leur placement ou l’animation de transition entre les bureaux.

On est passé de 4 items par ligne à 5 items avec la 4.2

Pour ce qui est de la liste des applications, dans les anciennes versions, elles étaient disposées en 4×5 à l’écran. Depuis la 4.2, Google a un peu tassé le tout avec du 5×5 (ah, on me dit dans l’oreillette que seul ne nexus 4 est touché par cette modification). Personnellement, je ne suis pas trop fan de ce tassage car certaines applications ont leur nom qui colle avec la suivante ce qui peut donner un effet de mal finit. L’onglet Widget ne change pas du tout par rapport à l’ancienne version. Vous sélectionnez votre widget et vous le faites glisser sur le bureau à l’emplacement voulu. Idem pour l’icône d’accès au market qui n’a pas changé depuis la 4.0.

Enfin des raccourcis de paramètres

L’une des nouveautés de la 4.2, qui a été découverte avec le Nexus 4, c’est le fait d’avoir accès à des raccourcis de réglages directement dans la barre de notification. Pour y accéder, vous avez deux possibilités. Soit vous accédez à la barre de notification standard et vous cliquez sur le bouton vous affichant les raccourcis, soit vous faites glisser la barre de notification avec deux doigts et vous y êtes directement. Ces raccourcis ont été, au début, identifier comme des boutons ON:OFF de réglages comme ce que font les Samsung et autres téléphones sous Cyanogen. Malheureusement il s’agit juste de réglages vers des endroits des paramètres. Enfin sauf pour le bouton du mode avion qui fait bien office d’interrupteur. Ce que je trouve dommage aussi, c’est de ne pas pouvoir enrichir cet écran avec de nouveaux raccourcis et/ou interrupteurs. A voir avec une mise à jour si Google va améliorer ça.

Voici un vrai Lockscreen

Ensuite, l’autre grosse nouveauté, est le fait d’avoir des widgets sur le lockscreen. De base, deux widgets sont disponibles : l’horloge et l’appareil photo. Lors du déverrouillage de l’écran, vous n’avez plus accès directement à l’appareil Photo, il faudra passer au nouveau widget disponible à droite de l’horloge (en tout cas de base). De base, vous avez la possibilité de rajouter les widgets suivants : Gmail, Agenda, Horloge et SMS.

Voici le nouveau raccourcis vers l’appareil photo

Vous remarquerez un petit cercle en lieu et place de nos trois boutons de navigation sur l’écran de verrouillage. Il s’agit simplement d’un raccourcis pour lancer GoogleNow au déverrouillage du téléphone.

Nous irons vor les autres nouveautés qui, elles concernent le multimiédia, dans la partie suivante.

Multimédia

Niveau multimédia, le Nexus 4 a de quoi faire. Il permet de lire facilement la plupart des formats vidéos disponibles sur le marché. Si ça ne marche pasz, optez pour une application dédiée à la lecture vidéo comme MxPlayer qui, selon moi, est le meilleur des lecteurs vidéos disponible sur Android. Outre ceci, sachez que Le Nexus 4 a d’installé par défaut les services Googles disponibles en France (store, musique, vidéo, livre), le grand absent étant magazine pour le moment en France.

Google Musique, c’est vraiment LE service qu’il manquait sur la plateforme Android

Malgrés l’espace interne ne pouvant être étendu par une carte SD, vous avez de quoi faire (sauf si vous mettez un blueray RIP dans votre mémoire interne). Même en musique (16Go permet de stocker facilement une bonne vingtaine d’albums). De plus, grâce à Play Musique, vous pourrez mettre toute votre musique personnelle dans le Cloud (20000 titres disponibles) et mettre celles que vous voulez en cache sur votre smartphone. De plus, j’ai l’impression que l’application compresse le musiques mises en cache.

Maintenant, on accède au réglage en restant appuyé sur l’écran

La plus grosse nouveauté au sein de l’expérience multimédia avec cette version, c’est l’appareil photo qui a été complètement revu et corrigé. Vous pouvez maintenant accéder aux réglages de l’appareil photo par un simple appui Long sur l’écran puis glisser sur le réglage souhaité. Le mode Panorama a été amélioré avec la possibilité de le faire autant verticalement qu’horizontalement. Le mode vidéo permet aussi de réaliser des vidéos en Timelapse avec un temps prédéfini entre chaque prise. Vous pouvez aussi prendre des photos tout en continuant de filmer. Un nouveau mode a fait son apparition, il s’agit de photosphere qui va vous permettre de réaliser facilement, des photos à 360° où vous pourrez bouger à la façon de streetView. Le seul défaut, c’est que le zoom n’est plus possible avec un seul doigts. Seul le zoom/dézoom avec le geste de pincement permet de le réaliser.

Maintenant, on peut encore plus personnaliser nos photos qu’Instagram

La galerie aussi a eu une petite refonte. De plus, vous pouvez personnaliser la plupart de vos photos, qu’elles soient sur l’appareil ou sur picasa, grâce au bouton prévu à cet effet en bas à gauche. Vous devriez avoir beaucoup plus d’options que ce très cher Instagram. Comme d’habitude, vous avez la possibilité de les partager très facilement grâce à l’icône de partage en haut à droite et vous avez un raccourcis pour pouvoir lancer l’appareil photo.

JetPack Joyride est un classique du jeu mobile

Pour ce qui est des jeux, Le nexus 4 n’est pas en reste et m’a permis de jouer à bon nombre de jeux sans lag ni plantage. Par contre, passé un certain temps,  vous ressentirez de la chaleur dans le dos du smartphone. Ceci est un petit défaut sur le choix du verre comme coque car il n’est pas adapté pour la dissipation thermique.

Je finirai en disant que pour tout ce qui est multimédia en déplacement, le Nexus 4 vous satisfera amplement. De plus, son écran permet un bon confort que ce soit pour les yeux, ou pour le placement des mains.

Conclusion

Je ne vous conseille que grandement de passer au nexus4 si vous avez un smartphone de plus de 2 ans ou si vous êtes un développeur Android. Pour les autres, tout dépend de vos choix. Bien que le nexus 4 a tout pour plaire sur le papier et en utilisation, il y a quand même certains points qui font baisser sa note finale.

Pour commencer, la chauffe du téléphone dès qu’on l’utilise un peu trop. Si vous lancez une application gourmande en ressource, vous aurez votre téléphone qui chauffera assez rapidement. Enfin, après une semaine d’utilisation, le phénomène a tendance à arriver de moins en moins souvent. A vérifier avec le temps.

Ensuite, l’un des gros défaut est qu’il est mentionné sur le site de Google que le Nexus 4 peut se recharger sans fil. Malheureusement, le chargeur prévu à cet effet par Google, nommé Orb, n’est pas encore disponible et ne le serait pas avant début 2013. Dommage, d’après les différentes vidéos de test, il permettrait de tenir le téléphone dans n’importe quel sens et permettrai de tenir le rôle d’une station d’accueil intelligente. Intelligente car les chargeurs sans fil ne chargent plus le téléphone s’il n’en a pas besoin et donc permet de garder la batterie en vie plus longtemps.

Malgré ces deux points noirs, le nexus 4 est un produit innovant, très classe, et peu cher (à partir de 300€ sur le play store).