;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

'Rotatólia': motorista surpreende ageiros ao usar Waze com voz do filho

ageira grava trecho de orientações de filho no Waze para motorista do Uber - Reprodução
ageira grava trecho de orientações de filho no Waze para motorista do Uber Imagem: Reprodução

Renata Baptista

De Tilt, em São Paulo

29/07/2021 04h00

Podia ter sido um dia comum na volta para casa depois de uma consulta médica, mas o trajeto feito via Uber pela estudante de veterinária Camila Mayner, 18, encheu o coração dela de fofura: a voz das instruções do GPS era a do filho pequeno do motorista.

Na gravação usada no aplicativo Waze, o garotinho falava: "Vire à esquerda, papai". O que já era inusitado ficou ainda mais quando o pequeno deu as orientações para o pai pegar a "rotatólia".

O "fofurômetro" explodiu nessa hora, segundo Camila, que vive em de Timon, no Maranhão, cidade perto de Teresina (PI).

Camila Mayner - Reprodução - Reprodução
Camila Mayner
Imagem: Reprodução

"Achei muito lindo, toda vez que vinha uma instrução, ele ria, todo feliz", disse a Tilt.

Sobre o motorista, Camila só sabe que ele se chama José e que, com mais de 4 mil corridas na conta, mantém sua avaliação em cinco estrelas. A voz do filho pequeno talvez o ajude a manter a calma no trânsito, não é?

A viagem foi tão inusitada que o relato de Camila na internet viralizou. Ele foi compartilhado no perfil Uberdepre, que mistura histórias de humor ligadas às vivências dos motoristas de aplicativos. Até o momento, conta com 91,6 mil curtidas.

Camila conseguiu capturar alguns segundos da fofura:

Gostou da ideia de mudar a voz do Waze?

O popular aplicativo de navegação do Google dá diferentes opções para a navegação. Uma das mais recentes a entrar na lista foi a do economista e ex-BBB "Gil do Vigor". É possível dirigir com frases como: "Tudo pronto, Brasil! Vamos vigorar juntos"; "Oxe! Que trânsito lascado!"; e "Vou ficar indignado se você não pegar a primeira saída", entre outros bordões.

Uma outra opção é você fazer como o motorista que a Camila conheceu, e gravar a voz de alguém conhecido — ou a sua própria voz, caso não goste de receber ordens de mais ninguém. A funcionalidade está dentro do aplicativo.

Confira abaixo onde encontrá-la:

  1. Com o aplicativo aberto, toque em "Meu Waze" na parte inferior da tela;
  2. No menu que se abre à esquerda, toque no ícone de engrenagem para ir às configurações;
  3. Selecione "Voz e som";
  4. Clique em "Voz Waze";
  5. Vá para a opção "Gravar nova voz".

A partir daí, basta colocar seu talento de navegador de app de trânsito para fora. O processo pode parecer trabalhoso, mas na prática não é muito.

O Waze vai oferecer todos os possíveis comandos de direção para você gravar com a sua voz ("vire à direita", "saia à esquerda", "em um quilômetro", etc) e o tempo máximo que a gravação deve ter (geralmente até três segundos).

Não é necessário gravar todos os comandos se não quiser, apenas os que são utilizados com mais frequência. Depois de configurados, é só salvar e selecionar o seu conjunto de voz como voz principal do Waze.

Mas lembre-se: é importante falar com clareza os comandos, mesmo que você faça gracinhas na hora de falar. Esses serão os comandos que vão ajudar em sua navegação pelas ruas daqui para frente via o aplicativo.

É bom lembrar que nessa opção você não vai ouvir o nome das ruas no aplicativo — esse recurso só existe em uma das narrações em português.

E tem mais: se você gostou do resultado da narração, pode até compartilhá-la com familiares e amigos. Está aí uma boa ideia para mandar a voz do seu filho para o vovô ou para a madrinha. Eles certamente vão amar!