Cette série de didacticiels en deux parties présente les principes de base de l'utilisation de services Web RESTful à l'aide du SDK Android. En cours de route, vous apprendrez comment effectuer des recherches sur l'API publique de Twitter.!
Il va sans dire que l’accès à Internet est l’un des principaux atouts que vous pouvez exploiter sur les appareils Android. De nombreux sites et réseaux sociaux populaires utilisent des services Web pour fournir un accès à leurs données, souvent à l'aide de modèles architecturaux tels que REST (Representational State Transfer). Twitter est l'un de ces services, avec diverses API permettant d'accéder aux tweets et aux calendriers. Dans cette série en deux parties, nous allons utiliser l'API de recherche Twitter pour récupérer des tweets récents sur un terme de recherche choisi par l'utilisateur..
Dans cette première partie, nous allons capturer l'entrée de l'utilisateur et construire l'URL à utiliser dans une requête HTTP à l'URL de recherche Twitter pour les tweets sur le terme d'entrée. Dans la deuxième partie, nous allons récupérer les résultats, qui seront formatés en JSON. Nous analyserons le flux tweet JSON renvoyé et l'afficherons dans une interface visuelle simple..
Cette série de tutoriels sur Android Twitter Search se compose de deux parties:
Créez un nouveau projet dans Eclipse: choisissez Fichier> Nouveau> Projet, puis sélectionnez Projet d'application Android et cliquez sur Suivant. Entrez les noms de votre application, projet et package choisis. Vous pouvez laisser les niveaux d'API minimum et cible par défaut sélectionnés. Sélectionnez vos options de configuration choisies. Dans l'écran Créer une activité, sélectionnez Activité vide. Dans l'écran suivant, entrez "TwitterSearchActivity" comme nom de l'activité et laissez Eclipse générer le fichier de mise en page pour vous ("activity_twitter_search" par défaut)..
En cliquant sur Terminer, Eclipse devrait ouvrir votre nouveau fichier de présentation.
Ouvrez le fichier Manifest de votre nouveau projet et sélectionnez l'onglet "AndroidManifest.xml" pour modifier le code. Ajoutez l'élément suivant n'importe où dans l'élément Manifest, mais en dehors de tous les autres éléments:
Cela est nécessaire pour toute application accédant à des ressources Internet..
Construisons maintenant les éléments de l'interface utilisateur. Ouvrez à nouveau votre fichier de présentation d'activité principal et sélectionnez l'onglet XML pour modifier le code directement. En fonction de votre configuration Eclipse, vous devriez avoir quelque chose comme le plan suivant:
Si vous avez quelque chose de différent dans votre fichier de mise en page, remplacez-le par ce code pour commencer.
Nous pouvons laisser la disposition relative telle quelle, mais remplacer la vue texte existante par une autre légèrement différente:
L'ID sert à disposer d'autres éléments relatifs à celui-ci. Les autres propriétés concernent un style et un positionnement simples. Ouvrez votre fichier "res / values / strings.xml" et ajoutez la chaîne à laquelle nous avons fait référence ci-dessus:
Entrez votre terme de recherche Twitter
Ceci est juste un texte informatif. De retour dans votre fichier de mise en page, après la vue Texte, ajoutez un texte de modification pour saisir le terme de recherche de l'utilisateur:
Nous positionnons l'élément par rapport à la vue texte que nous avons déjà ajoutée. La plupart des autres attributs sont pour le style; n'hésitez pas à les modifier comme vous le souhaitez. Ajoutez la chaîne mentionnée comme indice dans votre fichier "strings.xml":
Terme de recherche
Après l'édition du texte, ajoutez un bouton permettant à l'utilisateur d'exécuter sa recherche:
Ici, nous appliquons à nouveau les attributs de positionnement relatif et de style. Nous spécifions également une méthode à exécuter lorsque l'utilisateur clique sur le bouton à l'aide du bouton sur clic attribut - nous ajouterons cette méthode à la classe d'activité ultérieurement. Ajoutez la chaîne spécifiée à votre fichier de valeurs:
Chercher
Nous allons ensuite créer la zone dans laquelle les tweets récupérés seront affichés. Nous ne savons pas combien de temps cette section durera lorsqu'elle sera affichée à l'écran, ajoutons donc une vue de défilement afin que les utilisateurs puissent accéder à l'ensemble de celle-ci - après le bouton:
Dans la vue de défilement, ajoutez une dernière vue de texte:
Nous utiliserons l'attribut ID pour identifier cette vue de texte en Java lorsque nous afficherons les tweets récupérés. Outre les propriétés de présentation, nous spécifions également que le texte doit être gelé, afin qu'Android ne le supprime pas lors des changements d'orientation. Ajoutez la dernière chaîne à votre fichier de valeurs de chaînes:
---
C'est notre mise en page complète. Vous pouvez bien sûr modifier la mise en page si vous le souhaitez. Dans ces tutoriels, nous nous concentrons sur la pratique consistant à récupérer le flux de tweet sur le Web. Voici comment l'application apparaîtra lorsque vous l'exécuterez plus tard:
Ouvrez votre classe d'activité principale. La ligne d'ouverture de votre déclaration de classe doit apparaître comme suit:
Classe publique TwitterSearchActivity étend l'activité
Eclipse aurait également dû ajouter une valeur par défaut onCreate méthode et éventuellement aussi une méthode du menu options. Votre onCreate La méthode devrait définir le fichier de disposition principal sur lequel nous avons travaillé comme suit:
setContentView (R.layout.activity_twitter_search);
Si l'un des éléments mentionnés ne figure pas dans votre fichier de classe créé par Eclipse, veuillez vous reporter au dossier de téléchargement joint à ce didacticiel..
Ajoutez les instructions d'importation suivantes à votre classe, en remplaçant celles qu'Eclipse a déjà renseignées:
importer java.io.BufferedReader; importer java.io.InputStream; importer java.io.InputStreamReader; importer java.net.URLEncoder; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONObject; importer android.os.AsyncTask; importer android.os.Bundle; importer android.app.Activity; importer android.view.Menu; importer android.view.View; importer android.widget.EditText; importer android.widget.TextView;
Comme vous pouvez le constater, nous avons des importations pour la gestion des requêtes et des réponses HTTP, pour le traitement des données entrantes, pour l'analyse des données JSON et pour les composants Android généraux..
Dans la déclaration de votre classe, ajoutez une variable d'instance pour suivre l'évolution de la vue texte créée pour l'affichage des tweets récupérés:
TextView privé tweetDisplay;
À l'intérieur de votre onCreate méthode, après le code existant, récupère une référence à la vue texte en la stockant dans la variable:
tweetDisplay = (TextView) findViewById (R.id.tweet_txt);
Nous pouvons maintenant faire référence à cet élément d'interface utilisateur dans toute la classe. Nous le ferons lors de l'affichage du flux de tweet récupéré et également lors de l'affichage de messages d'erreur pour l'utilisateur en cas de problème..
Rappelez-vous que dans le fichier de mise en page, nous avons ajouté un sur clic attribuer au bouton, en spécifiant une méthode nommée "searchTwitter" - implémentons maintenant cette méthode. Ajoutez-le à votre classe après les méthodes existantes:
public void searchTwitter (Afficher la vue)
Parce que nous l'avons répertorié comme un sur clic attribut, la méthode recevra une référence à la vue sur laquelle vous avez cliqué. Nous n'avons pas réellement besoin du bouton sur lequel vous avez cliqué, mais plutôt de la vue Modifier le texte. Récupérons le texte saisi par l'utilisateur en le stockant sous forme de chaîne:
EditText searchTxt = (EditText) findViewById (R.id.search_edit); String searchTerm = searchTxt.getText (). ToString ();
Nous utilisons l'identifiant que nous avons donné au texte d'édition dans le fichier de mise en page pour l'identifier. Maintenant, avant de continuer, vérifions que l’utilisateur a entré un terme de recherche pour éviter tout traitement inutile:
if (searchTerm.length ()> 0) else tweetDisplay.setText ("Entrez une recherche!");
Si l'utilisateur n'a rien saisi, nous émettons simplement un message dans le fil d'actualités tweet auquel nous faisons référence dans toute la classe..
Le traitement que nous allons ajouter ensuite peut générer des exceptions, alors ajoutez essayer et capture des blocs à l'intérieur du si déclaration dans la méthode "searchTwitter":
try catch (Exception e) tweetDisplay.setText ("Whoops - Une erreur s'est produite!"); e.printStackTrace ();
Si une exception est levée, nous écrivons simplement un message d'erreur, comme lorsque nous n'avions pas saisi de terme de recherche..
Pour utiliser l'API de recherche Twitter, vous devez ajouter le terme de recherche à l'URL de base du service. Si l'utilisateur entre des caractères tels que des espaces, nous encoderons leur texte. À l'intérieur de essayer bloquer, ajouter ce qui suit:
String encodedSearch = URLEncoder.encode (searchTerm, "UTF-8");
Construisons maintenant l'URL de l'API de recherche Twitter. C'est le format général:
http://search.twitter.com/search.json?q=query
Le texte "requête" doit être remplacé par le texte que vous recherchez. Pour créer le texte de l'utilisateur dans cette URL, ajoutez ce qui suit:
String searchURL = "http://search.twitter.com/search.json?q="+encodedSearch;
Vous pouvez essayer d'extraire le flux tweet JSON dans votre navigateur Web en collant l'URL dans votre barre d'adresse et en utilisant le terme de recherche de votre choix, par exemple:
http://search.twitter.com/search.json?q=android
Votre navigateur doit afficher les résultats JSON, qui ne sont pas faciles à lire mais qui devraient vous donner une idée de ce que votre application recevra à l'exécution de la requête..
Nous sommes maintenant prêts à exécuter notre recherche sur Twitter. Dans le prochain tutoriel, nous allons créer une classe AsyncTask dans la classe principale Activity. Cette classe gérera l'extraction du flux de tweet à l'aide d'objets de requête et de réponse HTTP dans un thread en arrière-plan, puis l'affichage des résultats dans l'interface utilisateur. Nous utiliserons les bibliothèques de traitement JSON Java pour analyser le fil de tweet et le présenter dans la mise en page créée ci-dessus..