diogomene15 / TrabalhoFinal-GCS

Trabalho final da disciplina de Gerência de Configuração de Software, realizado pelos alunos Diogo de Lima Menezes, João Pedro Cintra Karpinski e Luis Henrique Souza Carvalho
0 stars 0 forks source link

Adição de Botão para Abrir Aplicativo de Navegação Externa #7

Closed diogomene15 closed 3 months ago

diogomene15 commented 3 months ago

O projeto atual da aplicação possui uma funcionalidade que permite aos usuários visualizar endereços cadastrados e persistidos em um mapa, utilizando a API do Google Maps. No entanto, não existe uma maneira fácil de abrir o aplicativo de navegação de forma externa para definir rotas para o local pretendido. Esse problema pode limitar a usabilidade da aplicação, pois os usuários que desejam obter direções para um endereço específico precisam alternar manualmente entre a aplicação e seus aplicativos de navegação preferidos.

A ausência de um botão para abrir aplicativos de navegação diretamente da tela de visualização de endereços pode causar frustração e adicionar etapas desnecessárias para os usuários que precisam de direções precisas. Considerando a popularidade de aplicativos de navegação como Google Maps e Waze, é fundamental fornecer uma integração que permita aos usuários abrir diretamente esses aplicativos a partir da nossa aplicação.

Para resolver esse problema, proponho a implementação de um botão na tela de visualização em mapa do endereço, que permita ao usuário abrir um aplicativo de navegação. Esse botão deve oferecer suporte para os aplicativos de navegação Google Maps e Waze, permitindo que o usuário escolha seu aplicativo preferido.

No arquivo Mapa.java, podemos adicionar um botão "Abrir no Navegador" que, ao ser clicado, apresenta uma escolha entre Google Maps e Waze. Aqui está um exemplo de como essa funcionalidade pode ser implementada:

Button openNavigationButton = findViewById(R.id.open_navigation_button);
openNavigationButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        showNavigationOptions();
    }
});

A função showNavigationOptions pode ser definida para mostrar um diálogo de seleção para o usuário escolher o aplicativo de navegação:

private void showNavigationOptions() {
    final CharSequence[] options = {"Google Maps", "Waze"};
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Escolha um aplicativo de navegação");
    builder.setItems(options, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which) {
                case 0:
                    openGoogleMaps();
                    break;
                case 1:
                    openWaze();
                    break;
            }
        }
    });
    builder.show();
}

As funções openGoogleMaps e openWaze devem criar intents para abrir os respectivos aplicativos de navegação com o endereço fornecido,

Solicito auxílio das equipes de requisitos e Desenvolvimento para discutir e validar essa funcionalidade. A equipe de Requisitos deve auxiliar a equipe de desenvolvimento na definição das funcionalidades de forma a atender o usuário da melhor maneira, sem que o escopo do projeto seja rompido.

JoaoPKarpinski commented 3 months ago

Acredito que com uma simples seleção dos pacotes a serem abertos, e a possibilidade de abrir a loja de apps para fazer o download caso eles não existam no dispositivo, seja suficiente para basear os métodos de abertura. Posso resolver essa questão, @diogomene15.

diogomene15 commented 3 months ago

@JoaoPKarpinski. Revisando a documentação oferecida pela equipe do Android, pude verificar que, realmente, a solução pode ser realizada a partir da utilização de APIs padrões do android, de maneira relativamente simples. As APIs parecem abrir a aplicação solicitada, caso essa esteja instalada, ou redirecionar a loja de aplicativos padrão, caso a aplicação não exista no dispositivo. Dessa forma, agradeço se puder auxiliar nessa demanda, realizando funções que atendam ao proposto na issue, no contexto de openGoogleMaps() e openWaze().