IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Widget et récupération data SQL


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Par défaut Widget et récupération data SQL
    Bonjour à tous !

    Je me permet de solliciter votre aide sur l'une de mes applications Android.

    Le topo de l'application :
    Je dispose d'une base SQL sur un serveur web qui contient des données sur la température extérieur, l'humidité extérieur ainsi que la qualité de l'air extérieur. Des données y sont stockées toutes les 20 min automatiquement en fonction de relevés.
    L'application Android récupère ces données et affiche différents graphiques.
    L'appel à cette base de donnée s'effectue aujourd'hui dans la classe MainActicity et est 100% opérationnel.

    Je souhaite aujourd'hui créer un widget sur l'écran principal de mon téléphone pour afficher la dernière valeur enregistrée dans la base de donnée.
    Et je sèche complétement. Je suis en réalité un novice sur Android.

    Le code du widget aujourd'hui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    /**
     * Implementation of App Widget functionality.
     */
    public class NewAppWidget extends AppWidgetProvider
    {
     
     
     
     
        static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                    int appWidgetId)
        {
     
            Intent intent = new Intent(context, MainActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
     
     
            String T_Ext_Value2 = "26";
            String H_Ext_Value2 = "53";
            String A_Ext_Value2 = "212";
            String Timer2 = "2019-07-06 14:13:20";
     
            // Construct the RemoteViews object
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
            views.setTextViewText(R.id.appwidget_Text, T_Ext_Value2);
            views.setTextViewText(R.id.appwidget_Hext, H_Ext_Value2);
            views.setTextViewText(R.id.appwidget_Aext, A_Ext_Value2);
            views.setTextViewText(R.id.appwidget_Timestamp, Timer2);
            views.setOnClickPendingIntent(R.id.appwidget_button, pendingIntent);
     
     
     
            // Instruct the widget manager to update the widget
            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
     
        @Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
        {
            // There may be multiple widgets active, so update all of them
            for (int appWidgetId : appWidgetIds)
            {
                updateAppWidget(context, appWidgetManager, appWidgetId);
            }
        }
     
        @Override
        public void onEnabled(Context context)
        {
            // Enter relevant functionality for when the first widget is created
        }
     
        @Override
        public void onDisabled(Context context)
        {
            // Enter relevant functionality for when the last widget is disabled
        }
    }
    Ce qui donne sur mon écran de téléphone :

    Nom : widget.JPG
Affichages : 117
Taille : 25,3 Ko

    Avec des valeurs en dur --> OK
    Mon problème c'est pour afficher les valeurs réelles contenues dans la base de données.

    Je sèche sur la méthode :
    - Est-ce que le widget doit appeler directement la base de donnée ?
    - Est-ce que le widget doit appeler une fonction utilisé dans la class MainActivity pour récupérer les data ?
    - Est-ce que c'est à la class MainActivity de transmettre les data au widget ? Dans ce cas quid de la MAJ des données ?

    Bref je suis un peu perdu.

    Quelle est la bonne méthode ?

    Merci d'avance,

    Evo

  2. #2
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    De mémoire, si ton widget n'a pas une page de configuration spécifique, la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
    


    sera appelée toutes les xxxxx millisecondes. Variable que tu as du définir dans le fichier de déclaration du widget.
    Réalises tes appels à la base de données à l'intérieur de cette fonction car ton application peut très bien être fermée et ta mainActivity non existante.

    Rien ne t'empêche alors de modifier la déclaration de ta fonction statique homonyme pour lui passer les paramètres que tu dois mettre à jour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId, monObjetMeteo data)
        {
     ...
            // Construct the RemoteViews object
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
            views.setTextViewText(R.id.appwidget_Text, data.Temperature);
            views.setTextViewText(R.id.appwidget_Hext, data.Humidite);
    ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Récupération statement SQL
    Par defcon_suny dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/09/2008, 09h34
  2. [AJAX] récupération data xml depuis AJAX
    Par jpclutier dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/05/2008, 14h13
  3. récupération requête SQL excel
    Par noname_971 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/02/2007, 11h44
  4. [SQL 2005] SSIS : export datas sql-access-excel
    Par Pmatt dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/02/2007, 13h26
  5. Import XML Data(SQl Server)
    Par Soulama dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/02/2007, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo