CMAltimeter et background

Bonjour à  vous,


 


Voilà , j'essaye simplement de remplir un tableau avec l'heure et la pression donnée par le CM.


Cela fonctionne tant que l'app est en premier plan, mais tout se complique en background puisque l'acquisition s'arrête.


 


J'ai pas mal cherché sur ce qui pouvait se faire.


 


La question que je me pose : dans les différents background mode (audio, voip, fetch, location  etc...) je ne vois pas de mode permettant la lecture avec le Core Motion ?


 


Je souhaiterais simplement acquérir une valeur de la pression, par ex une fois par 10 mn, et l'inscrire dans un tableau, c'est tout. 


 


Avez-vous des idées ?


 


Merci d'avance pour vos lumière


Réponses

  • AliGatorAliGator Membre, Modérateur
    CMAltimeter garde un historique des donnés (pendant 7j je crois)


    La façon de faire n'est donc pas de garder ton application lancée en arrière plan (ça serait trop consommateur pour ta batterie) mais plutôt de remplir ton tableau quand tu reviens au premier plan, avec les données que tu as loupées récupérées via l'historique du CMAltimeter.
  • Bonjour AliGator,


     


    Oui, j'avais pensé à  cette solution puisque je croyais que le M8 de l'iPhone 6 gardait tout cela (pour le HealthKit) mais je n'ai rien trouvé concernant attitude relative (ou la pression du lieu). Je n'ai peut-être pas cherché au bon endroit...


     


    C'est sût que ce serait l'idéal.  Il y a des fonctions du genre : queryPedometerDataFromDate(...) mais rien d'équivalent pour l'altitude (ou la pression) d'où ma question....


  • AliGatorAliGator Membre, Modérateur
    Tu peux toujours aller chercher ces informations dans HealthKit, qui lui te permet d'accéder à  l'historique. C'est d'ailleurs à  mon avis la meilleure façon de faire si tu veux travailler avec des historiques de données, 'autant qu'il fournit, en + de l'API pour accéder aux valeurs passées, tout un tas de méthodes pour faire des statistiques sur ces données.

    Utiliser CMAltimeter directement c'est à  mon avis + adapté pour quand tu veux utiliser ces données en temps réel et pas pour un historique en background.
  • J'avais regardé le HealthKit sans rien trouver. D'ailleurs même les historiques du pedometre n'ont pas l'air de s'y trouver.


     


    Je crois que je vais laisser tomber mon idée pour le moment, le pseudo-multitache de iOS est vraiment déroutant.


    CMAltimeter fonctionne très bien en live, mais est, semble-t-il, utilisé "en à  point" avec l'accéléromètre dans le HK pour compter le nombre d'étages montés !


    C'est dommage, pour tracer le profil d'une rando avec les dénivelés c'eût été très bien. A priori on devrait pouvoir faire cela avec le GPS en tache de fond, ça, ça semble être permis, mais trop goinfre en batterie (background mode = location)


  • AliGatorAliGator Membre, Modérateur
    J'utilise personnellement HealthKit dans une application pour récupérer l'historique du podomètre, et ça marche très bien. J'ai pas essayé avec l'altimètre, mais avec le Podomètre ça marche très bien et je récupère l'historique du nombre de pas de façon très précise : soit par tranches de X minutes ou jours, soit carrément chaque entrée... et ce sur les 7 derniers jours. Ca ne pose aucun souci.

    HealthKit Framework Reference
  • J'ai déjà  lui cette doc du HK en long en large et en travers sans rien voir sur l'altitude. Ni même d'ailleurs sur le podomètre.


    Si tu pouvais me mettre sur la voie ce serait sympa 


    Je ne pense pas qu'il y ait besoin de créer son propre SampleType  et de le faire remplir ... ben je ne sais pas comment.

    Pour le podomètre est-ce dans le HKWorkout ? Là  il y a beaucoup de choses qui m'échappent ...


  • AliGatorAliGator Membre, Modérateur
    décembre 2014 modifié #8
    Si tu regarde tout le gros bloc d'explications qu'il y a au début, il y a un paragraphe "Accessing HealthKit Data". ils y expliquent qu'il y a divers moyens d'accéder aux données HealthKit, ou plus exactement qu'il y a plusieurs types de requêtes possibles suivant ce que tu veux faire :
    • accéder aux données brutes,
    • ou accéder à  des statistiques sur les données,
    • ou à  des statistiques de données corrélées entre plusieurs éléments (comme par exemple voir la pression systolique et diastolique de ton pouls comme une seule donnée)
    • ou utiliser des requêtes ancrées faites exprès pour récupérer, à  chaque fois que tu exécutes la requête, uniquement les dernières données depuis la dernière fois que tu as requête (très pratique justement pour quand tu veux récupérer les données que tu as loupées depuis ta dernière mise en arrière-plan),
    • ...
    Chaque type de HKQuery a une page de documentation (dont le lien est fourni dans ce gros paragraphe d'explication au début) et qui explique comment l'utiliser avec des exemples.
    Par exemple, le Listing 1 dans cette documentation de HKStatisticsQuery te montre comment récupérer le nombre de joules consommées pour la journée d'aujourd'hui.
    Evidemment, au lieu d'utiliser la quantité "HKQuantityTypeIdentifierDietaryEnergyConsumed" correspondant à  l'énergie consommée, il suffit d'utiliser la quantité "HKQuantityTypeIdentifierStepCount" pour avoir les informations du podomètre à  la place. Et de choisir d'autres valeurs de startDate et endDate pour avoir des stats sur des périodes plus larges.

    Personnellement dans mon application qui récupère les données du podomètre, je récupère le nombre de pas fait par tranche de 6h, sur un historique remontant jusqu'à  7j. Donc j'utilise non pas un HKStatisticsQuery (qui ne me remonterait qu'une seuls valeur statistique, genre le nombre moyen ou total de pas sur les 7j) mais une HKStatisticsCollectionQuery qui me permet d'avoir non pas une statistique, mais de découper les statistiques de nombre de pas par période de 6h. Ce qui fait que finalement mon code pour avoir le nombre total de pas effectués, avec une valeur pour chaque tranche de 6h, ressemble très fortement au code donné comme exemple dans le Listing 1 de la doc de HKStatisticsCollectionQuery, je l'ai même à  peine changé pour correspondre à  mes besoins ! (J'ai surtout mis un "quantitySamplePredicate" pour limiter la période sur laquelle il calcule les statistiques car je n'ai pas besoin des stats de toutes les valeurs depuis le tout début du journal HealthKit, mais juste les stats des X derniers jours)

    ---

    Bon, après, je n'ai pas regardé s'il y avait un type pour l'altimètre dans HealthKit ; à  défaut je sais, vu qu'on le voit dans l'appli santé, qu'il y a moyen d'avoir le nombre d'étages montés, c'est pas la même chose mais ça peut mettre sur la voie.

    Après je dis pas que HealthKit est la solution pour ton problème. Mais ça peut être une voie à  creuser, d'autant que tu sembles avoir loupé des informations en cherchant dans la doc donc ça fait peut-être + que ce que tu ne pensais jusqu'à  présent ?
  • Bonjour AliGator,


     


    Grand merci pour cette description détaillée.


    J'ai testé tout ça : c'est à  dire le StepCount, et le FlightsClimbed.


     


    Alors ça fonctionne, je retrouve ce qui est affiché dans l'application Santé.


    Malheureusement pas d'altitude  :'(  Le nombre d'étages pourrait être un début (avec un certain coef pour passer en mètres) mais pas de descente, il y a juste les montées.


     


    C'est bien dommage car l'environnement HK est sympa : graphes, statistiques etc ..  mais pas d'altitude ...


     


    Voilà , je n'avance pas, je ne vois pas de solution. Il n'y a pas de background mode pour lire l'altitude ou alors lire l'altitude avec le GPS (ça c'est possible) ce qui est une mauvaise solution pour moi (trop consommatrice et peu précise)


     


    Il y a peut-être un truc non documenté car trop jeune. A mon avis, l'altitude relative se trouve certainement stockée dans le M8.


     


    En tout cas, un grand merci pour ton aide 


     


    je continue mes recherches ... la solution : laisser l'app en premier plan, mais bof, ça coince l'iPhone


Connectez-vous ou Inscrivez-vous pour répondre.