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 :

[Android] Remote service et implementation avec localisation


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut [Android] Remote service et implementation avec localisation
    Bonjour à tous,

    Après lecture du tuto de ndruet
    et son implémentation de remote service j'ai quelque souci
    normalement les remote service dois faire sa tache en arrière plan sans s'arrêté
    ou du moins se relancer a certains moment
    ce que je n'arrive pas a réaliser
    dans un précédant post j'avais eu se souci avec mon service
    et j'avais créer un BroadcastReceiver qui résolvait mon souci
    mais ce n'est pas vraiment la chose a faire puisque le service se doit d'être géré par lui meme

    voici mon appel a mon service dans mon Activity:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Intent serviceIntent=new Intent(this,MyServiceTask.class);
    bindService(serviceIntent, mServiceConnection,Context.BIND_AUTO_CREATE);
    et j'ai également crée mon AIDL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    interface IMyRemoteService {
         String sayHello(String message);
    }
    Mon projet utilise la localisation qui toute définie et implémentée dans mon service.
    Je rappel que mon service s'arrête après 2min (Sans mon BroadcastReceiver actif) ce que je ne comprend pas.

    En tous cas merci pour vos réactions.

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    On pourrait voir le code du service ?
    (et sa déclaration dans le manifest)

    Parce que un service n'a pas pour vocation a tourner en permanence... Comme tout le reste il doit répondre à des événements. Il se peut que le système décide de tuer le service à tout moment.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut Demande de code nicroman
    Bonjour Nicroman,

    Merci pour ta réaction.

    voici la declaration de mon service dans mon manifest:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <service
    android:name="com.mon.package.MyService"
    android:exported="true"
    android:label="My service"
    android:process=":remote">
    </service>
    et ensuite mon service ou j'ai declarer un handler et vise versa coté client:
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    public class MyService extends Service implements LocationListener {
     
        private LocationManager lm;
     
        @Override
        public void onCreate() {
            super.onCreate();
            Log.i("addLocationListener", "function is RUNNING!");
            lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            Criteria c = new Criteria();
            c.setAccuracy(Criteria.ACCURACY_FINE);
     
     
            if (ActivityCompat.checkSelfPermission(getBaseContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getBaseContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 0, this, Looper.getMainLooper());
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 0, this, Looper.getMainLooper());
        }    
     
        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
            //return mBinder;
            return messenger.getBinder();
        }
     
        @Override
        public void onLocationChanged(Location location) {
            Toast.makeText(ctx, "Location changed", Toast.LENGTH_SHORT).show();
            //do something.. when the location has changed
        }
     
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
     
        }
     
        @Override
        public void onProviderEnabled(String provider) {
     
        }
     
        @Override
        public void onProviderDisabled(String provider) {
     
        }
     
        public class MyBinder extends Binder {
            MyService getService() {
                return MyService.this;
            }
        }
     
        @Override
        public void onStart(Intent intent, int startId) {
     
            super.onStart(intent, startId);
        }
     
     
        public static boolean locationFounded() {
            return locationFounded;
        }
     
        public void setLocationFounded(boolean lf) {
            locationFounded = lf;
        }
     
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
            return super.onStartCommand(intent, flags, startId);
        }
     
        @Override
        public void onDestroy() {
            super.onDestroy();
            Toast.makeText(this, "Service Stoped", Toast.LENGTH_SHORT).show();
        }
     
         private Handler handler = new Handler(){
     
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what)
                {
                    case MSG_GET_COUNT:
                        try{
                            messenger.send(msg);
     
                        }catch (RemoteException e)
                        {
                            Log.i("Messenger What","Test Messenger What");
                        }
                    break;
     
                    default:
                        super.handleMessage(msg);
                }
            }
        };
     
        private Messenger messenger = new Messenger(handler);

  4. #4
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut service ne s'arrête pas. Mais ma localisation s'arrête
    Suite a mon poste et mon souci avec mon service.

    L'implementation d'un BoradcastReceiver et le lancement d'un évènement AlarmManager.
    Mon AlarmManager est bien récurant j'ai le test avec un Log info.
    Mais la localisation et plus précisément la méthode s'arrête après 7 minutes.
    Je suppose que le service est killer par android.
    Je fais bien un appel de mon service et le stoppe aussi quant le résultat est trouvé.
    La encore ma méthode est systématiquement appelée après l'arrêt de la localisation.
    Ma méthode s'arrêté elle aussi.
    Ma question est la suivante : dois-je faire le traitement de mon service dans .
    Ce que je ne fait pas car mon service implémente l'interface .
    Voici: mon BroadCastReceiver:

    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
     
    public class AlarmReceiver extends WakefulBroadcastReceiver {
     
        private Messenger messenger;
     
        @Override
        public void onReceive(final Context context, Intent intent) {
     
            Intent myIntent = new Intent(context, AlarmReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);
            AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.MINUTE,1);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                    60000, pendingIntent);
     
            new Thread(new Runnable() {
                @Override
                public void run() {
                    Intent background = new Intent(context, MyServiceTask.class);
                    context.startService(background);
                }
            }).run();
        }
    }
    J'espère trouver un solution..
    Voila Merci pour vos réactions.

  5. #5
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut Intervalle création d'événements pour la localisation
    ReBonjour à tous,

    A combien puis je débuté l'intervalle de l'événement. Afin que Android ne ferme pas le processus de localisation dans mon service..?
    Afin de vraiment tester tous cela ?

    Merci pour vos réactions.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2011, 09h49
  2. Remote Service avec le Task Manager
    Par Sake_reflex dans le forum Android
    Réponses: 23
    Dernier message: 11/08/2011, 13h40
  3. gwt-ext : remplir un grid avec un remote service!
    Par touille dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 01/07/2008, 15h05
  4. Comment gérer des services par programmation avec Delphi ?
    Par isachat666 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 18/12/2005, 18h54
  5. [Axis]dépoiement web service sur tomcat avec axis
    Par lili2704 dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 02/02/2005, 13h44

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