;(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

Ansioso com o sensor de digital na tela do iPhone 13? Melhor não se animar

Arte imaginando como será o iPhone 13 de 2021 - EverythingApplePro
Arte imaginando como será o iPhone 13 de 2021 Imagem: EverythingApplePro

Nicole D'Almeida

Colaboração para Tilt, em São Paulo

23/08/2021 16h42

Rumores de que a Apple está trabalhando em um iPhone com sensor biométrico diretamente na tela para desbloquear o celular apareceram no início deste ano. Algo que seria extremamente útil nesse momento em que parece que a máscara facial chegou para ficar com a pandemia de covid-19. Porém, é possível que a empresa não adote o recurso no iPhone 13 (nome ainda não confirmado), que deve ser lançado no próximo mês.

De acordo com Mark Gurman, da Bloomberg, que costuma antecipar novidades do mundo da tecnologia, o Touch ID na tela estava sendo testado nos novos modelos. Entretanto, o recurso de desbloqueio não foi aprovado para estrear neste ano, afirmou em seu último boletim informativo Power On.

Gurman foi ainda mais longe em sua análise, dizendo que o sensor de digital provavelmente nunca chegará aos modelos principais do iPhone, já que o foco da Apple está no Face ID, sistema inteligente de reconhecimento facial.

Reconhecimento facial na tela?

É uma aposta do repórter. Ele acredita que a Apple deva implementar, a longo prazo, o Face ID no próprio display, seguindo a seguinte ideia: Face ID atual nos iPhones mais baratos, como o iPhone SE, e o sensor de reconhecimento facial embutido na tela dos celulares principais, como o iPhone 14 e o iPhone 14 Pro.

Enquanto essas novidades não se confirmam, os fãs da Apple devem se contentar com as melhorias realizadas para o uso do celular da empresa com máscaras: capacidade de desbloquear o aparelho com o Apple Watch e a solicitação de senha mais rapidamente quando uma máscara é detectada pelo sensor.

Outros rumores

Outros rumores que andam circulando no mercado de smartphones indicam que a Apple deva lançar quatro novos modelos de iPhone, sendo dois "Pro" e dois aparelhos mais baratos. Espera-se que haja melhorias na câmera, um processador A15 mais rápido, um novo chip 5G da Qualcomm, entalhe em um tamanho menor, além de uma maior vida útil da bateria.

Acredita-se também que a Apple deva introduzir taxas de atualização de tela de 120 Hz (para imagens mais fluidas na tela) para a linha iPhone 13 Pro, trazendo a tecnologia ProMotion do iPad Pro para o iPhone pela primeira vez. Nela, o display faz um ajuste automático dessa taxa de atualização.

Melhorias notáveis na câmera também estão entre os rumores. Segundo relatório divulgado pela Bloomberg, será possível gravar vídeos ProRes, projetados para editores de vídeo profissionais, resultando em arquivos grandes com opções de resolução HD e 4K, e em modo retrato.

Além disso, há a possibilidade de um sistema de filtros que visa melhorar a aparência e as cores das fotos usando inteligência artificial.

Vale lembrar que todas essas mudanças são apenas rumores. Devemos aguardar o lançamento oficial para sabermos se algumas delas se concretizaram.

A próxima linha do iPhone, possivelmente chamada de iPhone 13, deve ser anunciada em um evento virtual em setembro. A Apple também pode lançar um novo iPad, Apple Watch Series 7 e AirPods de 3ª geração.