Notas da versão

Este registro de mudanças detalha os novos recursos e correções de bugs em cada versão do SDK do Navigation para Android.

18 de outubro de 2021: congelamento do suporte para as APIs de nível 23, 24 e 25

Em resposta a mudanças em nossas dependências internas, os níveis 23, 24 e 25 das APIs do Android (Android 6, 7.0 e 7.1) não terão suporte em novas versões dos SDKs de navegação e driver para Android a partir do terceiro trimestre de 2022.

Os SDKs do Navigation e do Driver para Android lançados a partir do terceiro trimestre de 2022 só vão oferecer suporte a dispositivos com o nível 26 da API do Android, no mínimo.

As versões do app criadas com a v4.x ou versões anteriores dos SDKs Navigation e Driver para Android vão continuar funcionando em dispositivos com o nível 25 da API do Android e versões anteriores.

Anúncio de descontinuação (21 de junho de 2021)

Este anúncio descreve as descontinuações dos SDKs do Navigation para Android e do Driver para Android a partir da data listada acima. Ele também foi enviado como um aviso de serviço obrigatório (MSA, na sigla em inglês) aos clientes afetados.

Descontinuação do SDK do Navigation para Android e do Driver para Android v1.x

O SDK Nav/Driver v1 foi lançado em 2018. Com as versões v3 que serão lançadas em breve, é hora de descontinuar a v1 para evitar a insustentabilidade de oferecer suporte a muitas versões principais.

O tempo economizado por não precisar oferecer suporte a essa versão adicional nos permitirá oferecer melhor suporte à versão principal mais recente e criar mais recursos que são importantes para nossos clientes.

Portanto, o Nav/Driver SDK v1.x foi descontinuado e não vai ser mais mantido após 21 de junho de 2022.

Confira como funcionam as descontinuações nas versões do SDK.

Consulte as notas da versão v2/v3 do SDK do Navigation para Android para mais informações sobre a descontinuação do Android.

Versão 1.51.1 (1o de abril de 2022)

Estabilidade e correções de bugs

  • Corrige um hiperlink corrompido na caixa de diálogo dos Termos de Serviço.

  • Alguns clientes receberam um erro na caixa de diálogo dos Termos de Serviço quando a atividade do Android foi destruída. Agora, esse erro de caixa de diálogo não vai mais aparecer para os clientes quando uma atividade for destruída.

Versão 1.51 (18 de janeiro de 2022)

Mudanças na API

  • O nível mínimo da API do Android no SDK do Navigation foi alterado para 23 e o nível desejado da API para 30. Essa versão de destino está alinhada aos requisitos do Google Play.

  • Renderiza a polilinha que rastreia a divisa de navegação em cor "cinza" para indicar que o usuário já passou por aquela seção do trajeto.

Versão 1.50 (3 de novembro de 2021)

  • Variante Jetified da versão 1.22. Nenhuma mudança foi feita além do uso das bibliotecas do AndroidX.

Versão 1.22 (7 de outubro de 2021)

Estabilidade e correções de bugs

  • Correção de um bug da câmera em que a câmera parava de seguir o local do usuário depois que o stopNavigation era chamado.
  • Correção de um bug da câmera em que o botão "Centralizar" aparece depois de ativar o backup do app.
  • Correção de um possível problema de vazamento de memória.
  • Correção de um bug que gerava problemas de ANR
  • Impede uma falha originada na caixa de diálogo dos Termos de Serviço.

Suspensões de uso

  • Descontinuação de #setDestinations com token de rota para ser substituído por uma nova API que usa CustomRoutesOptions.

Novos recursos

  • Foi adicionado o recurso de retirada assistida, que adiciona um novo ícone à interface do rodapé de navegação.
  • Foi adicionado suporte a trajetos personalizados para veículos com duas rodas.

Versão 1.21.1 (13 de julho de 2021)

Estabilidade e correções de bugs

  • Correção de um IllegalStateException associado a uma verificação de pré-condições excessivamente restritiva no código de implementação
  • Correção de um NullPointerException em NavigationView.onDestroy()

Versão 1.21 (23 de junho de 2021)

Mudanças na API

  • Os listeners de velocidade agora têm suporte na navegação headless. Isso possibilita monitorar o excesso de velocidade sem renderizar primeiro uma View ou um Fragment do SDK do Navigation.

Estabilidade e correções de bugs

  • Melhoramos a robustez do carregamento de blocos de mapa no modo noturno nas primeiras instalações de apps.

Suspensões de uso

Os seguintes métodos foram descontinuados e substituídos por Navigator.setSpeedAlertOptions():

  • NavigationView.setSpeedAlertOptions()
  • SupportNavigationFragment.setSpeedAlertOptions()
  • NavigationFragment.setSpeedAlertOptions()

Versão 1.20.1 (14 de julho de 2021)

Estabilidade e correções de bugs

  • Correção de um IllegalStateException associado a uma verificação de pré-condições excessivamente restritiva no código de implementação
  • Correção de um NullPointerException em NavigationView.onDestroy()

Versão 1.20 (9 de março de 2021)

  • Foi adicionada uma nova dependência obrigatória. Adicione as seguintes dependências às listas de dependências do Gradle para evitar falhas na execução: api 'joda-time:joda-time:2.9.9'.

Estabilidade e correções de bugs

  • Correção de um problema em que os consumidores do SDK do Navigation que usam o Joda-Time encontravam conflitos com a versão ofuscada do jodatime, empacotada na nossa biblioteca
  • Correção de um problema em que o SDK do Navigation esconde acidentalmente notificações do app do consumidor que não pertencem a ele ao iniciar uma sessão de navegação.

Versão 1.19 (15 de dezembro de 2020)

Mudanças na API

  • Agora, o DriverSDK sempre envia dados de tráfego para o FleetEngine. Anteriormente, esse comportamento era determinado pela sinalização UpdateVehicleResponse, que agora é ignorada.

  • O construtor FleetEngine mudou. Foram adicionados wrappers para AuthTokenFactory e StatusListener

  • Foram adicionados dois novos métodos à API Navigator para permitir a configuração e a remoção de listeners para novas sessões de navegação.

  • Adição de um novo método à API Navigator para receber IDs de transação para a sessão de navegação em andamento. Essa API precisa ser usada quando uma nova sessão de navegação é iniciada e quando os IDs da transação mudam em uma sessão de navegação em andamento (por exemplo, quando a lista de trechos da jornada é atualizada).

Versão 1.18 (9 de outubro de 2020)

  • Incluímos o método setAbnormalTerminationReportingEnabled(boolean). Esse método permite que os usuários desativem o monitoramento de detecção de falhas.

  • Correção de um bug em que o registro de LocationListeners não podia ser cancelado no evento onLocationChange.

  • Foi corrigida uma falha do gRPC em que io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider não podia ser instanciado

Versão 1.17 (27 de agosto de 2020)

  • Agora você pode transmitir um token de rota para o NavSDK para recuperar a rota representada por esse token. O token de rota é associado a uma resposta de rota quando você chama a API Routes Preferred. A nova API é Navigator#setDestination(List<Waypoint> destinations, String routeToken).

  • Novas dependências obrigatórias foram adicionadas. Adicione as seguintes dependências às listas de dependências do Gradle para evitar falhas na execução:

    api 'com.google.android.datatransport:transport-api:2.2.0' api 'com.google.android.datatransport:transport-backend-cct:2.2.0' api 'com.google.android.datatransport:transport-runtime:2.2.0'

Versão 1.16 (10 de agosto de 2020)

Novos recursos

Estabilidade e correções de bugs

  • O método NavigationApi.cleanUp foi descontinuado devido a efeitos colaterais indesejados, como NullPointerExceptions, que levam a falhas.

  • Waypoint.fromLatLng() e Waypoint.fromPlaceId() foram descontinuados e substituídos por Waypoint.builder().

  • A classe AddressListener, contida em NavigationTransactionRecorder, foi descontinuada porque não é usada.

Versão 1.15 (23 de março de 2020)

Novos recursos

  • Fontes/cores/ícones personalizáveis para o cabeçalho da navegação.

  • Suporte à personalização da cor das faixas recomendadas na interface do cabeçalho de navegação.

  • Atualiza várias APIs para seguir o padrão "add-remove" para definir callbacks/listeners. Os métodos set* anteriores foram marcados como descontinuados e serão removidos em uma versão futura. Os métodos descontinuados são listados aqui:

    • SupportNavigationFragment.setOnNightModeChangedListener
    • SupportNavigationFragment.setOnRecenterButtonClickedListener
    • NavigationFragment.setOnNightModeChangedListener
    • NavigationFragment.setOnRecenterButtonClickedListener
    • NavigationView.setOnNightModeChangedListener
    • NavigationView.setOnRecenterButtonClickedListener
    • Navigator.setArrivalListener
    • Navigator.setRouteChangedListener
    • Navigator.setRemainingTimeOrDistanceChangedListener

Estabilidade e correções de bugs

  • Aumente a minSdkVersion do navsdk para 19.

  • Correção de um bug em que os nomes dos waypoints lat/lng não eram respeitados caso a geocodificação inversa do lado do servidor falhasse.

Versão 1.14 (2 de fevereiro de 2020)

Novos recursos

  • (Beta) O operador pode definir uma distância desejada para o trajeto na solicitação de rotas para influenciar qual das opções de trajeto será seguida pelo motorista. Esse recurso está na versão Beta. Se você tiver interesse, entre em contato com o representante de engenharia do cliente para saber mais.

  • Compile o SDK para a API 29.

Estabilidade e correções de bugs

  • Correção de um bug na caixa de diálogo dos Termos de Serviço que impedia a solicitação de "Aceitar" ser obrigatória para motoristas.

  • Modificação do comportamento de processamento de exceções nos componentes do NDK para evitar uma condição de falha.

Versão 1.13 (8 de novembro de 2019)

Novos recursos

  • Agora, os motoristas recebem alertas de velocidade quando ultrapassam o limite. É possível personalizar a aparência dos ícones de alerta de velocidade. Conforme detalhado nos Termos de Serviço do Google Maps Enterprise, o Google não oferece garantias quanto à qualidade de qualquer recurso, incluindo a precisão do recurso de alerta de velocidade. Os alertas de velocidade são destinados ao uso apenas para fins informativos.

  • Foi adicionada uma nova opção de trajeto (RoutingOptions), que permite mostrar trajetos alternativos durante a visualização do trajeto.

  • Foi adicionada uma nova perspectiva da câmera que mostra uma visualização de cima para baixo do trajeto, com a rota orientada para que o veículo sempre esteja voltado para frente. Para configurar essa perspectiva, chame NavFragment.getCamera().followMyLocation(Camera.Perspective.TOP_DOWN_HEADING_UP).

  • Foi adicionada uma nova API (resetFreeNav() em RoadSnappedLocationProvider) que você pode chamar para redefinir o serviço de navegação livre sempre que parar de receber atualizações de localização em um listener registrado, quando a navegação não está ativa.

Estabilidade e correções de bugs

  • Atualizamos o conteúdo da caixa de diálogo dos Termos de Serviço.

Versão 1.12 (7 de outubro de 2019)

Novos recursos

  • Agora você pode ocultar e mostrar um ou todos os trajetos alternativos durante a navegação.

  • Agora é possível especificar a estratégia de roteamento nas solicitações (rota mais curta/mais rápida).

  • Foi adicionada a capacidade de personalizar totalmente a caixa de diálogo de Termos e Condições (tamanho, cor etc. do texto).

Estabilidade e correções de bugs

  • Correção da classe duplicada no problema com.google.http-client

  • Atualização do app de demonstração para usar o novo SDK do Places e Jetified do app de demonstração.

  • Melhoramos o frame rate da câmera na visão geral da viagem.

Versão 1.11 (28 de junho de 2019)

Melhorias no desempenho

  • A latência de rede setDestination foi aprimorada.

Correções de bugs

  • Correção de uma inconsistência com o callback onArrival ao navegar por vários waypoints

  • Correção de um problema em que a chegada podia ser acionada prematuramente para waypoints não próximos da localização atual.

  • java.lang.IllegalStateException

    • Uma chamada para NavigationView.onDestroy não pode seguir uma chamada para NavigationView.onCreate.

Diversos

  • Atualizações das licenças de software de código aberto.

  • As frases de destaque de HEC da rota foram removidas para remover dados redundantes e simplificar a interface.

Versão 1.10.2 (11 de abril de 2019)

Estabilidade e correções de bugs

  • Correção de um bug que poderia fazer com que uma IllegalStateException fosse gerada durante uma transição de ciclo de vida do fragmento: onCreate() para onDestroy().

Versão 1.10 (11 de abril de 2019)

Recursos

  • Cabeçalho da caixa de diálogo de Termos e Condições personalizáveis: é possível personalizar o texto do título da caixa de diálogo de Termos e Condições usando showTermsAndConditionsDialog.

  • Marcador de waypoint Os caracteres alfanuméricos foram removidos dos marcadores de waypoint.

Versão 1.9 (11 de fevereiro de 2019)

Recursos

  • Cabeçalho secundário: você pode adicionar conteúdo personalizado abaixo do cabeçalho de navegação usando o recurso de controles personalizados. Consulte a posição SECONDARY_HEADER do método setCustomControl.

  • Novas dependências: adicione dependências para Cronet e Glide. Para saber mais, consulte Atualizar o script de build do Gradle no tópico "Configuração do projeto".

Problemas conhecidos

  • Se o app de demonstração falhar com java.lang.ClassNotFoundException: chancen't find class "com.example.navigationapidemo.SplashScreenActivity", você precisará atualizar a dependência das ferramentas de build do Gradle para a versão 3.3.1 ou mais recente. No arquivo build.gradle, verifique se buildscript corresponde ao exemplo abaixo:
buildscript {
    repositories {
        mavenCentral()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
    }
}

Versão 1.8.1 (22 de janeiro de 2019)

Estabilidade e correções de bugs

  • As falhas no modo táxi em determinados modos de câmera foram corrigidas.
  • Várias melhorias de estabilidade.

Versão 1.8 (21 de dezembro de 2018)

Recursos

  • Modo táxi (Beta): seu app pode usar as faixas e ruas dedicadas especificamente a táxis para fornecer rotas e horários estimados de chegada (HEC) para veículos identificados como táxis.

    No momento, as seguintes áreas geográficas são aceitas:

    • Brasil: Rio de Janeiro
    • Inglaterra: Birmingham, Coventry, área metropolitana de Londres, Manchester
    • Israel: Tel Aviv
    • Irlanda: Dublin
    • Rússia: Moscou
    • Escócia: Glasgow, Edimburgo
    • Espanha: Madri, Barcelona

Estabilidade e correções de bugs

  • Vazamentos de memória corrigidos
  • Tem desempenho aprimorado

Versão 1.7.3 (18 de setembro de 2018)

Correções de bugs

  • Agora, o NavigationView pode fazer a transição de onStart diretamente para onStop. Isso não vai mais gerar uma IllegalStateException

Versão 1.7.2 (16 de agosto de 2018)

Recursos

  • Agora você pode mostrar uma lista de rotas durante a navegação para mostrar as próximas curvas de uma viagem. A lista de rotas é fornecida pelo DirectionsListView.
  • Agora você pode recuperar o status do tráfego usando a classe TimeAndDistance com o método getSeverity.
  • Restrições de placas de veículos agora são aceitas.

Correções de bugs

  • Falhas ocasionais na caixa de diálogo dos Termos de Serviço (que se manifestam como IllegalStateExceptions) foram corrigidas.
  • Correção de uma NullPointerException com uma mensagem como "Try to write to field ... on a null object reference" para ser corrigida.
  • Os identificadores de recursos no R.txt (anteriormente todos 0x1) agora têm os valores corretos.

Versão 1.6.2 (16 de julho de 2018)

Correções de bugs

  • Correção de uma NullPointerException em AccessibilityStateUtils.getAccessibilityState().

Versão 1.6.0 (10 de maio de 2018)

Correções de bugs

  • Correção de um bug que causava chamadas de HEC incorretas em trechos da viagem e trajetos alternativos.
  • Correção de uma NullPointerException quando os valores de latitude e/ou longitude de um local eram null.
  • Correção de um bug que impedia o carregamento do mapa se a caixa de diálogo TOS era aceita off-line.
  • Introdução de uma solução alternativa para um bug do LocationManager no Android 7.0 que resultaria em uma NPE no SDK do Navigation

Versão 1.5.0 (26 de março de 2018)

Recursos

  • Modo noturno: agora você pode configurar a navegação para usar o tema do modo noturno. Você pode ativar ou desativar o modo noturno de maneira programática ou deixar que o SDK do Navigation alterne automaticamente o tema com base na hora do dia.
  • Modo de viagem de motocicleta (Beta): agora é possível definir o modo de viagem como TWO-WHEELER para ver trajetos de motocicleta e scooter. No momento, esse recurso está disponível apenas na Índia e na Indonésia.
  • Limites de velocidade:agora é possível mostrar ou ocultar de maneira programática o ícone de limite de velocidade (ele só aparece em locais onde há dados confiáveis de limite de velocidade disponíveis).
  • Controles personalizados de sobreposição de mapa:use esses controles para posicionar elementos da interface dinamicamente durante a navegação.
  • A chamada getNavigator() agora aceita um contexto de aplicativo para que possa ser chamada de um serviço.

Correções de bugs

  • Vários problemas de layout de texto na caixa de diálogo dos Termos de Serviço foram resolvidos para melhorar a exibição para idiomas da direita para a esquerda.

Versão 1.3.4 (24 de janeiro de 2018)

  • Correção do bug que fazia com que o clearDestinations às vezes não apagava a rota anterior.

Versão 1.3.3 (18 de dezembro de 2017)

  • A classe CameraArbitrator passou a ser segura para linhas de execução, já que ela é usada nas linhas de execução de interface e de renderização.
  • Não gere uma NPE se os eventos para CompassButtonController chegarem depois que onDestroy() tiver sido chamado.
  • Adição de verificações de valores nulos para os métodos públicos da NavigationApi O SDK gerará o NPE mais próximo do código do desenvolvedor.

Versão 1.3.2 (30 de novembro de 2017)

  • Foi corrigida uma falha quando ocorrem erros de rede.

Versão 1.3.1 (14 de novembro de 2017)

  • Correção de notificações pop-up de navegação guiada no Android 8.0 Oreo (API de nível 26) e versões mais recentes.
  • Correção de um problema em que as rotas não eram visíveis quando solicitadas antes de criar um NavigationView ou NavigationFragment

Versão 1.3 (7 de novembro de 2017)

  • Adição de um método onTrimMemory() a NavigationView Esse método precisa ser chamado pela atividade contida.
  • Navigator.setDestinations() agora retornará um status LOCATION_UNKNOWN se uma correção de local não for encontrada dentro do tempo limite especificado O tempo limite pode ser definido usando RoutingOptions.locationTimeoutMs().
  • Os pontos de fixação para imagens de marcadores personalizados agora podem ser definidos usando MarkerOptions.anchor().
  • NavigationMap agora expõe um objeto Projection que pode ser usado para receber os limites de lat/lng visíveis do mapa considerando o preenchimento.
  • As notificações de navegação guiada pop-up agora podem ser desativadas usando Navigator.setHeadsUpNotificationEnabled().
  • O botão de recentralizar agora oferece um listener clicado. Isso pode ser definido usando o método setOnRecenterButtonClickedListener() em NavigationView, NavigationFragment e SupportNavigationFragment.

Versão 1.2.6 (25 de outubro de 2017)

  • Correção de uma NullPointerException que poderia acontecer se o serviço de navegação fosse recriado automaticamente pelo SO
  • NavigationView não gera mais uma exceção se determinados métodos do ciclo de vida forem chamados em uma ordem incorreta, por exemplo, chamadas consecutivas para onStart() ou onResume(). Em vez disso, uma mensagem de aviso é registrada.

Versão 1.2.5 (19 de outubro de 2017)

  • Foi adicionado um gerenciamento melhor de cache de blocos para manter o uso da memória sob controle.
  • Correção de uma falha que poderia acontecer se Navigator.setDestinations() fosse chamado antes de criar um NavigationView ou NavigationFragment

Versão 1.2.4 (11 de outubro de 2017)

  • Correção de um vazamento de memória que poderia ocorrer ao criar várias NavigationViews sem a presença de um Navigator

Versão 1.2.3 (4 de outubro de 2017)

  • Correção de um bug de ciclo de vida que às vezes fazia com que o marcador my-location desaparecia.
  • Foi corrigida outra instância em que os eventos de embarque e desembarque podiam ser perdidos.

Versão 1.2.2 (27 de setembro de 2017)

  • Melhorias na latência para acelerar a inicialização da API e as chamadas para Navigator.setDestinations.

Versão 1.2.1 (20 de setembro de 2017)

  • Adição de android:largeHeap="true" ao manifesto da biblioteca. Isso reduz a frequência de OutOfMemoryErrors e é necessário para uma experiência de navegação confiável.
  • Melhoramos a confiabilidade do registro de eventos de embarque e desembarque.

Versão 1.2 (1o de setembro de 2017)

  • Quando a orientação do dispositivo não é conhecida, o mapa agora aparece no modo de visão geral centralizado com o norte para cima e mostra um marcador circular de "my-location". Isso é especialmente útil no início da jornada, para ajudar os usuários a se orientar, transmitindo que o dispositivo ainda não tem uma ideia boa o suficiente para o que está virando.
  • O card de incidente de trânsito tem um novo design e aparece na parte de baixo do mapa, em vez da posição anterior na parte de cima.
  • A detecção de localização foi atualizada para garantir que funcione conforme o esperado no Android 8.0 Oreo (nível 26 da API).
  • Correção de um bug em que os marcadores de destino eram renderizados de forma diferente no modo de navegação e no modo não relacionado.

Versão 1.1.2 (16 de setembro de 2017)

  • Melhoramos a confiabilidade do registro de eventos de embarque e desembarque.

Versão 1.1.1 (24 de agosto de 2017)

  • Correção de uma IllegalStateException que ocorria às vezes ao traçar um novo roteamento sem conexão de rede.
  • Correção de um bug em que a estilização do mapa era diferente antes e depois de chamar Navigator.setDestinations().

Versão 1.1 (31 de julho de 2017)

  • Correção de um bug em que o RoadSnappedLocationListener às vezes não funcionava quando o app era enviado para o segundo plano.
  • Correção de um bug de câmera ao iniciar/interromper a orientação.
  • Correção de um bug no Simulator.unsetUserLocation(), em que o local não era redefinido corretamente

Versão 1.0 (5 de julho de 2017)

  • Lançamento do SDK de navegação.