Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Entendendo seu usuário com Intel Context Sensing

Entendendo seu usuário com Intel Context Sensing

Palestra ministrada na edição 2015 do Intel Software Day (Salvador) e na edição #27 do Android Meetup em São Paulo

Avatar for Ubiratan Soares

Ubiratan Soares

June 12, 2015
Tweet

More Decks by Ubiratan Soares

Other Decks in Programming

Transcript

  1. MOTIVAÇÃO Em um cenário no qual o entendimento de cada

    usuário singular é cada vez mais importante, como obter dados de contexto e executar ações de forma automatizada ?
  2. INTEL CONTEXT SENSING Framework de alto nível no topo da

    API do Android para obtenção de dados contextuais do usuário, bem como aprendizado e ações com base nesse contexto
  3. CONTEXT HISTORY Dados armazenados localmente no aparelho, com possibilidade de

    sincronização na nuvem, que podem ser capturados pelos mais diversos meios e utilizados para aprendizado do usuário posteriormente
  4. CONTEXT STATES Dados obtidos em um determinado instante, e que

    apenas fazem sentido se consumidos em um curto período de tempo. Esses estados podem ser “sentidos" pela aplicação, que será notificada periodicamente sobre alterações nesse contexto
  5. BUILT-IN CONTEXT STATES Activity Recogition Audio Classification Pedometer Location Installed

    Applications Running Applications Battery Calendar Call Contacts Device Information Music Network Information Device Position Motion Detectors …
  6. CONTEXT STATE DETAILS Item Identifider ContextType.AUDIO State Information Audio Classification

    (Speech, Motion, Mechanical, Music) Probability Sensing Settings Mode (Fast, Every Minute, OnChange) Continuous Flag (Pause / Dont Pause on Sleep) Android Permissions android.permission.RECORD_AUDIO intel.aware.permission.ACCESS_AWARESERVICE Cloud Services Scopes context:device:sensor (to read from cloud services) context:post:device:sensor (to push to cloud services)
  7. MAIS SOBRE CONTEXT STATES Existem vários estados de contexto que

    são cloud-powered (ex. condições do tempo) É possível criar estados de contexto customizados e consumí-los Aparelhos Intel são capazes de agregar mais informação para determinados contextos
  8. RULES ENGINE Motor de regras para avaliar dados de acordo

    com o contexto, disparando ações de acordo com o resultado do avaliação
  9. “Quando eu estou dirigindo, e eu perdi uma ligação, enviar

    um SMS dizendo que eu ligo depois” Rules Engine
  10. RuleManager ruleManager = new RuleManager(); ruleManager.setOperationMode(RULE_OPERATION_MODE.FAST); List<IRuleAction> onTrueActionsList = new

    ArrayList<IRuleAction>(); onTrueActionsList.add(new IRuleAction() { public void execute(Context context) { Log.i("Info", "You made 30 steps!"); }}); String ruleName = "stepsAdvice"; String ruleDescription = "Advice me when I do 30 or more steps."; String condition = "Pedometer.steps >= 30"; Rule rule = new Rule(ruleName, ruleDescription, condition, onTrueActionsList, null); rule.activate();
  11. RULES LEARNER Motor de inferência para aprender novas regras a

    partir de estados de contexto : machine learning on-device
  12. RuleLearner ruleLearner = new RuleLearner( "My Learned Rule”, "When the

    WiFi status changes, is because [?] happens.", new FullLikelyHood( 0.33f, 10, Action.WifiChange, Arrays.asList("Place.type", “Date.partOfWeek")) ); ruleManager.setOperationMode(RULE_OPERATION_MODE.FAST);
  13. ruleLearner.start(); List<SuggestedRule> suggestedRules = ruleLearner.getSuggestedRules(); if (suggestedRules.size() == 0) {

    Log.i("APP", "No suggested rules yet..."); } else { for (SuggestedRule rule : suggestedRules) { StringBuilder sb = new StringBuilder(); sb.append("Action Value: " + rule.getActionValue()); for (Entry<String, String> e : rule.getConditionValues().entrySet()) { sb.append("\n> When: " + e.getKey() + " --> " + e.getValue()); } Log.i("APP", "Suggested Rule:\n" + sb.toString()); } } ruleLearner.stop();