Ubuntu TechHive
building-your-first-android-app-in-java.md
Building your first Android App in Java
article.detalhe

Building your first Android App in Java

reading.progresso 27 min de leitura

Descrição de Como criar seu primeiro aplicativo Android em Java

Criando seu primeiro aplicativo Android em Java

vendas de smartphones em todo o mundo no 4º trimestre de 2023.

Le système d'exploitation Android possède la plus grande base installée parmi les plateformes mobiles à travers le monde. BACKLINKO

  • Début 2024, Android détient une part de marché mondiale de 70,69 %.

  • Aux États-Unis, les iPhones ont une part de marché de 60,77 %.

  • Plus de 3 milliards d'appareils Android sont actuellement actifs.

  • Les smartphones Android ont représenté 56 % des ventes mondiales de smartphones au quatrième trimestre 2023.

História

  • O Android foi criado pela Open Handset Alliance, que é liderada pelo Google.

  • Em 18 de agosto de 2008, o beta do Android 0.9 SDK foi lançado

  • Em 5 de dezembro de 2008, o Google anunciou o primeiro Android Dev Phone.

Histórico

  • O Android foi criado pela Open Handset Alliance, liderada pelo Google.

  • Em 18 de agosto de 2008, a versão beta do SDK Android 0.9 foi lançada.

  • Em 5 de dezembro de 2008, o Google anunciou o primeiro telefone para desenvolvedores Android (Android Dev Phone).

Componentes do SO Android:

Kernel Linux: O núcleo do sistema operacional Android é baseado no kernel Linux, que é escrito em C e C++Bibliotecas Nativas: Muitos componentes e serviços centrais do sistema Android são construídos usando código nativo escrito em C e C++. Essas bibliotecas nativas fornecem funcionalidades essenciais e são expostas aos desenvolvedores através de APIs Java.

Android Runtime (ART): O Android Runtime (ART) e seu predecessor, Dalvik, são responsáveis por executar aplicativos Android. Esses runtimes executam bytecode compilado de código-fonte Java ou KotlinFramework de API Java: As APIs de nível superior e o framework de aplicativo são escritos em Java. Isso permite que os desenvolvedores escrevam aplicativos Android usando Java, que são então compilados em bytecode e executados no Android Runtime

Linix Kernel : Le cœur du système d'exploitation Android est basé sur le noyau Linux, écrit en C et C++

.

Bibliotecas Nativas: Muitos componentes e serviços essenciais do Android são construídos com código nativo em C e C++, acessíveis via APIs Java.Android Runtime (ART): O ART, e seu predecessor Dalvik, executam aplicativos Android em bytecode, compilado a partir de código Java ou Kotlin.

Framework de API Java: As APIs e frameworks de nível superior são escritos em Java, permitindo que os desenvolvedores escrevam aplicativos executados no Android Runtime.

O sistema operacional Android é [código aberto](https: //en.wikipedia.org/wiki/Open_source).

  • Disponível gratuitamente para possível modificação e redistribuição.

  • CyanogenMod é uma das populares redistribuições Android de código aberto.

  • Limitações: Aplicativos Google de código fechado, como Google Play e navegação GPS do Google.

Papel do Java no desenvolvimento Android. Java é uma das linguagens preferidas para o desenvolvimento Android e isso porque:

  • JAVA é uma Programação Orientada a Objetos (POO): Os princípios POO do Java facilitam o gerenciamento e a manutenção de bases de código complexas. Essa abordagem modular permite que os desenvolvedores criem código reutilizável e escalável.

  • Independência de Plataforma: A capacidade "Escreva Uma Vez, Execute em Qualquer Lugar" do Java garante que o código escrito em Java possa ser executado em qualquer dispositivo que suporte a Java Virtual Machine (JVM). Essa compatibilidade entre plataformas é uma vantagem significativa para o desenvolvimento Android.

  • Robusto e Seguro: Java é conhecido por sua robustez e recursos de segurança. Inclui gerenciamento de memória forte, tratamento de exceções e uma estrutura de segurança abrangente, tornando-o ideal para o desenvolvimento de aplicativos Android seguros.

  • Bibliotecas e Ferramentas Abrangentes: Java oferece um rico conjunto de bibliotecas e ferramentas de desenvolvimento que simplificam o processo de desenvolvimento. Essas bibliotecas fornecem funcionalidades pré-construídas, reduzindo a necessidade de escrever código do zero

  • Desempenho: O desempenho do Java é otimizado para o desenvolvimento Android. O compilador Just-In-Time (JIT) e a coleta de lixo eficiente contribuem para o desempenho suave das aplicações Android1.

  • Base de Desenvolvedores Existente: Java já era uma linguagem de programação amplamente utilizada e conhecida, com uma grande comunidade de desenvolvedores. Isso significava que havia um grupo de talentos prontos e familiarizados com Java, tornando mais fácil para o Google atrair desenvolvedores para a plataforma Android2.

  • Suporte da Sun Microsystems: Na época, a Sun Microsystems, criadora original do Java, incentivou ativamente a adoção do Java e tinha um acordo com o Google para usar Java para Android. Este suporte foi um fator significativo na decisão do Google - JAVA est un langage de programmation orienté objet (OOP) : Les principes OOP de Java facilitent la gestion et la maintenance des bases de code complexes, permettant un code modulaire, réutilisable et évolutif.

  • Indépendance de la plateforme : La capacité "Write Once, Run Anywhere" de Java garantit que le code peut s'exécuter sur tout appareil prenant en charge la JVM, offrant une compatibilité multiplateforme avantageuse pour o desenvolvimento Android. - Robuste et sécurisé : Java é réputé pour sa gestion mémoire, sa gestion des exceptions et son cadre de sécurité complet, ideal para des applications Android s

estáveis.- Bibliotecas e ferramentas extensas: Java oferece um conjunto rico de bibliotecas e ferramentas que facilitam o desenvolvimento.

  • Desempenho: Java é otimizado para Android graças ao compilador JIT e a uma gestão eficiente da memória, garantindo um desempenho fluido das aplicações. - Base de desenvolvedores existente: Java já era uma linguagem popular, com uma grande comunidade, facilitando assim a adoção pelos desenvolvedores para a plataforma Android. - Suporte da Sun Microsystems: Na época, a Sun Microsystems, criadora do Java, incentivava ativamente sua adoção e tinha um acordo com o Google para seu uso no Android.

Pré-requisitos para o Desenvolvimento de Aplicativos Android

Conhecimento Básico de Programação:

  • Familiaridade com conceitos e linguagens de programação como Java ou Kotlin.

  • Compreensão dos princípios da programação orientada a objetos (OOP).

  • Compreensão básica de XML (eXtensible Markup Language) para o design de interfaces de usuário no Android

  • Familiarité avec des concepts de programmation et des langages tels que Java ou Kotlin.

  • Compréhension des principes de la programmation orientée objet (OOP).

  • Compréhension basique du XML (eXtensible Markup Language) pour la conception d'interfaces utilisateur dans Android.

graph TD
A [Usuário] -->|Usuário interagindo com a View| B [View]
B -->|Processo de Requisição| C [Controller]
C -->|Pedindo ao Modelo para fornecer Dados| D [Model]
D -->|Pedindo Dados do BD| E [(Banco de Dados)]
E -->|Resposta do BD| D
D -->|Retornando os Dados| C
C -->|Renderizando o conteúdo| B
B -.-> A

%% Aprimoramentos de cor e estilo
style A fill:#f9c1c1,stroke:#333,stroke-width:2px
style B fill:#ffff99,stroke:#333,stroke-width:2px
style C fill:#d9f9a1,stroke:#333,stroke-width:2px
style D fill:#a1c1f9,stroke:#333,stroke-width:2px
style E fill:#ff9999,stroke:#333,stroke-width:2px

%% Separando Usuário e Banco de Dados
subgraph Interação do Usuário
A
B
end

subgraph Backend
C
D
E
end

- Conhecimento Básico de [MVC](https://www.codecademy.com/article/mvc)(Model View Controller)

## Ambiente de Desenvolvimento:

Este é um bom tutorial em vídeo do YouTube para instalar o Android Studio: [Configurações do Android Studio + SDK](https://www.youtube.com/watch?v=4pCBPbdHARE)

- **Android Studio:** Baixe e instale a versão mais recente do Android Studio, o Ambiente de Desenvolvimento Integrado (IDE) oficial para desenvolvimento Android.

- **Android SDK:** quando solicitado, instale o Kit de Desenvolvimento de Software (SDK) do Android. O Android SDK é uma coleção de bibliotecas e ferramentas de desenvolvimento de software essenciais para desenvolver aplicativos Android. Sempre que o Google lança uma nova versão ou atualização do software Android, um SDK correspondente também é lançado. Você também pode instalar versões mais recentes seguindo estas etapas:

- Abra o Android Studio -> Clique em Ferramentas -> Clique em SDK Manager e instale qualquer versão de sua escolha.

- **Configurando um Emulador:**

- Clique em Ferramentas -> Gerenciador de Dispositivos -> Adicionar novo Dispositivo -> criar dispositivo virtual

- Siga as instruções.

- **Usando um Dispositivo Físico:** Alternativamente, você pode usar um dispositivo Android físico para testes, ativando as Opções do Desenvolvedor e a Depuração USB.

- Clique em configurações -> Sobre ...

- Toque rapidamente no número da Versão sete vezes seguidas (Uma mensagem pop-up aparecerá quando você estiver perto de ativar o modo)

- Vá para as opções do desenvolvedor e ative a Depuração USB.

C'est un excellent tutoriel vidéo YouTube pour installer Android Studio : [Android Studio + Configurations SDK](https://www.youtube.com/watch?v=4pCBPbdHARE)

- **Android Studio :** Téléchargez et installez la dernière version d'Android Studio, l'IDE officiel pour le développement Android.

- **Android SDK:** Quando solicitado, instale o Kit de Desenvolvimento de Software (SDK) do Android. Você pode instalar versões mais recentes seguindo estas etapas:

- Abra o Android Studio -> Clique em Ferramentas -> SDK Manager e instale a versão desejada.

- **Configurar um emulador:**

- Clique em Ferramentas -> Gerenciador de Dispositivos -> Adicionar novo dispositivo -> criar um dispositivo virtual.

- **Usar um dispositivo físico:** Ative as opções de desenvolvedor e a depuração USB.

## Getting Started

### Understanding Android Project Structure

- **App Module:** The main module containing your app’s source code, resources, and app-level settings like the AndroidManifest.xml and build.gradle files. When you create a new project, the default app module is named “app”

- **Módulo de Biblioteca:** (Modo de Visualização do Projeto): Bibliotecas Externas Contém código reutilizável que pode ser usado como uma dependência em outros módulos de aplicativo ou projetos. Ele gera um arquivo Android Archive (AAR)

- **Arquivos do Projeto:**

- build.gradle: O arquivo de build raiz contendo declarações de plugins e configurações comuns para todos os subprojetos.

- settings.gradle: Contém informações globais de build, incluindo nomes de projetos e subprojetos a serem incluídos.

- local.properties: Contém propriedades relacionadas à máquina local, como a localização do Android SDK (excluído do controle de versão), você também pode adicionar suas chaves de API aqui.

- **Estrutura de Diretórios:**

- src/main/AndroidManifest.xml: Declara informações essenciais sobre seu aplicativo, incluindo componentes e permissões.

- src/main/java: Contém o código-fonte Java ou Kotlin para seu aplicativo.

- src/main/res: Contém arquivos de recursos como layouts, drawables e strings.

### Compreendendo a estrutura do projeto Android

- **Módulo App :** O módulo principal contendo o código-fonte, os recursos e as configurações do
aplicativo (AndroidManifest.xml, build.gradle).

- **Módulo Biblioteca :** (Modo de Visualização do Projeto) Contém código reutilizável na forma de um arquivo AAR.

- **Arquivos do Projeto :**

- build.gradle, settings.gradle, local.properties.

- **Estrutura de Pastas :**

- src/main/AndroidManifest.xml

- src/main/java

- src/main/res

Para informações mais detalhadas, consulte a documentação original.

### Compreendendo os Componentes Android

- **Atividades:** Atividades representam uma única tela com uma interface de usuário. Elas são o ponto de entrada para interagir com o usuário. Fragmentos têm seu próprio ciclo de vida, que está intimamente ligado ao ciclo de vida da atividade hospedeira. Isso permite um melhor controle sobre os componentes da UI e sua gestão de estado.

### Comprendre les composants Android

- **Activités :** Les activités représentent une seule interface utilisateur et sont le point d'entrée pour interagir avec l'utilisateur. Les fragments ont leur propre cycle de vie, étroitement lié à celui de l'activité hôte, ce qui permet un meilleur contrôle des composants UI et de leur gestion d'état.

Para mais detalhes, você pode consultar a documentação original ou um guia sobre arquitetura Android.

public class MainActivity extends AppCompatActivity {
// Code for the activity
}
Fragmentos: Fragmentos introduzem modularidade na interface do usuário do seu aplicativo, permitindo que você divida a interface em blocos discretos. Isso facilita o gerenciamento e a reutilização de componentes em diferentes partes do seu aplicativo.


- **Fragmentos:** Fragmentos introduzem modularidade na interface do usuário do seu aplicativo, permitindo que você divida a interface em blocos discretos. Isso facilita o gerenciamento e a reutilização de componentes em diferentes partes do seu aplicativo.

- **Fragmentos:** Os fragmentos introduzem modularidade na interface do usuário do seu aplicativo, permitindo que você divida a interface em blocos distintos. Isso facilita o gerenciamento e a reutilização de componentes em diferentes partes do aplicativo.

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, new ExampleFragment());
transaction.addToBackStack(null);
transaction.commit();


- **Serviços:** Serviços são executados em segundo plano para realizar operações de longa duração ou para executar trabalho para processos remotos. Exemplo: Um aplicativo de reprodutor de música pode usar um serviço para tocar música em segundo plano enquanto o usuário está em um aplicativo diferente.

public class MusicService extends Service {
// Code for the service
}


- **Provedores de Conteúdo:** Provedores de conteúdo gerenciam o acesso a um conjunto estruturado de dados. Eles encapsulam os dados e fornecem mecanismos para definir a segurança dos dados. Em resumo, um Provedor de Conteúdo é a maneira do Android de permitir que aplicativos compartilhem seus dados com outros aplicativos. Exemplo: Um aplicativo que armazena contatos de usuário pode usar um provedor de conteúdo para gerenciar dados de contato.

public class ContactsProvider extends ContentProvider {
// Code for the provider
}


- **Broadcast Receivers:** Os broadcast receivers respondem a anúncios de transmissão em todo o sistema. Eles permitem que o aplicativo ouça mensagens de transmissão específicas do sistema ou de outros aplicativos. Exemplo: Um aplicativo pode usar um broadcast receiver para detectar quando a bateria do dispositivo está fraca.

- **Broadcast Receivers :** Les broadcast receivers réagissent aux annonces système globales. Ils permettent à l'application d'écouter des messages spécifiques du système ou d'autres applications. Exemple : Une application peut utiliser un broadcast receiver pour détecter lorsque la batterie de l'appareil est faible.

batteryLevel = new BatteryLevel();
mContext.registerReceiver(batteryLevel, new IntentFilter(Intent.ACTION_BATTERY_LOW));


- **Intents:** Intents são objetos de mensagens usados para solicitar uma ação de outro componente do aplicativo. Eles facilitam a comunicação entre diferentes componentes. Exemplo: Um intent pode ser usado para iniciar uma nova atividade ou para enviar uma transmissão.

- **Intents :** Intents são objetos de mensagens usados para solicitar uma ação de outro componente do aplicativo. Eles facilitam a comunicação entre diferentes componentes. Exemplo : Um intent pode ser usado para iniciar uma nova atividade ou enviar uma transmissão (broadcast).

Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);


- **Layouts:** Layouts são contêineres que contêm e organizam visualizações de uma maneira específica. Eles definem a estrutura e o posicionamento dos componentes da UI Layouts Comuns:

- LinearLayout: Organiza visualizações em uma única linha ou coluna.

- RelativeLayout: Posiciona as visualizações umas em relação às outras ou ao contêiner pai.

- ConstraintLayout: Um layout flexível que permite criar layouts complexos com uma hierarquia de visualização plana.

- FrameLayout: Um layout simples que empilha visualizações umas sobre as outras.

- GridLayout: Organiza as visualizações em formato de grade.

- Layout Editor: Use o Layout Editor no Android Studio para projetar visualmente sua interface de usuário. Arraste e solte componentes da interface do usuário da paleta e configure suas propriedades usando o painel de atributos.

- **Views:** Views são os blocos de construção básicos de uma interface de usuário Android. Elas representam os componentes da interface do usuário com os quais os usuários interagem, como botões, campos de texto, imagens e muito mais1. Views Comuns:

- TextView: Exibe texto para o usuário.

- Button: Um botão clicável.

- ImageView: Exibe uma imagem.

- EditText: Um campo de texto para entrada do usuário.

- ListViews

- RecyclerView: Uma visualização flexível para exibir grandes conjuntos de dados em uma lista rolável.

- ListViews e Adapters: ListViews são elementos Android usados para exibir itens em uma lista. Adapters são usados para vincular um array de dados a uma ListView. É um adapter simples que pode lidar com uma única lista de itens.

- **Layouts :** Les layouts sont des conteneurs qui organisent et disposent les vues dans une interface utilisateur.

- **LinearLayout**: Dispose les vues en une seule ligne ou colonne.

- **RelativeLayout**: Positionne les vues les unes par rapport aux autres ou au conteneur parent.

- **ConstraintLayout**: Permet des mises en page complexes.

- **FrameLayout**: Empile les vues les unes sur les autres.

- **GridLayout**: Organise les vues en grille.

- **Views :** Composants de base de l'interface utilisateur, comme

- **TextView :** Affiche du texte à l'utilisateur.

- **Button :** Um botão clicável.

- **ImageView :** Exibe uma imagem.

- **EditText :** Um campo de texto para entrada do usuário.

- **ListView :** Exibe uma lista de itens.

- **RecyclerView :** Visualização flexível para exibir grandes conjuntos de dados em uma lista rolável.

- **ListViews e Adapters :** ListViews são usadas para exibir listas, e os Adapters vinculam os dados a essa lista.

ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataArray);
listView.setAdapter(adapter);


public class CustomAdapter extends BaseAdapter {
// Implementation of custom adapter
}


### Design básico de UI

- **XML Layouts: Projetando com XML.**

#+begin_src xml

#+end_src

- **Introdução aos princípios do Material Design:** [Material Design](https://m3.material.io/) é um sistema de design desenvolvido pelo Google para criar experiências digitais de alta qualidade em várias plataformas, incluindo Android, iOS, Flutter e web. É inspirado no mundo físico e suas texturas, incorporando princípios do design gráfico para criar uma experiência de usuário coesa e imersiva12. Usando o Material Design

- Adicione Componentes Material ao seu projeto: Abra seu arquivo build.gradle e adicione a seguinte dependência:

**Introdução aos princípios do Material Design:** [Material Design](https://m3.material.io/) é um sistema de design desenvolvido pelo Google para criar experiências digitais de alta qualidade no Android, iOS, Flutter e na web. Inspirado no mundo físico e nas texturas, ele incorpora princípios do design impresso para oferecer uma experiência de usuário imersiva.

- Adicionar componentes Material ao seu projeto: Abra seu arquivo`build.gradle`e adicione a seguinte dependência:

implementation 'com.google.android.material:material:1.4.0'


Atualize o tema do seu aplicativo: