strings.xml, para compor a mensagem final para o usuário. Para isso, basta
recuperá-la através do método getResources:
String saudacao = getResources().getString(R.string.saudacao);
Podemos fazer a leitura dessa saudação no método onCreate e usar a mensa-
gem na nossa implementação de surpreenderUsuario, como no código a seguir:
29
1.5. Hello World 2.0
Casa do Código
public class MainActivity extends Activity {
private EditText nomeEditText;
private TextView saudacaoTextView;
private String saudacao;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.nomeEditText = (EditText) findViewById(R.id.nomeEditText);
this.saudacaoTextView =
(TextView) findViewById(R.id.saudacaoTextView);
this.saudacao = getResources().getString(R.string.saudacao);
}
public void surpreenderUsuario(View v) {
Editable texto = this.nomeEditText.getText();
String msg = saudacao + " " + texto.toString();
this.saudacaoTextView.setText(msg);
}
//demais códigos existentes
}
Agora, podemos executar essa aplicação, que será similar à figura 1.23
Figura 1.23: HelloWorld 2.0
30
Casa do Código
Capítulo 1. Construa sua primeira aplicação
1.6
Conclusão
Neste capítulo aprendemos um pouco da história do Android e suas versões e tivemos o primeiro contato com o Android SDK e com a Eclipse IDE. Criamos um
projeto de exemplo, buscamos entender seus detalhes e organização, além de fazer modificações no código e layout para termos nossa primeira experiência. No capí-
tulo seguinte abordaremos itens essenciais para o desenvolvimento
Android.
31
Capítulo 2
Entenda o funcionamento do
Android
Após desenvolver nosso primeiro projeto na plataforma Android, é importante conhecer um pouco mais dos elementos que a compõe e também do funcionamento
básico do Android. Este capítulo apresenta como as aplicações são geradas e executadas, quais são os componentes de aplicação existentes na plataforma, como eles se comunicam e também como os elementos de interface gráfica estão organizados.
2.1
A execução das aplicações
As aplicações implementadas utilizando a linguagem Java são executadas através de uma máquina virtual, baseada em registradores e otimizada para consumir pouca memória, chamada Dalvik. Ao contrário da máquina virtual Java que executa bytecodes, a Dalvik utiliza arquivos no formato .dex gerados a partir de classes Java compiladas. Esta conversão é feita pela ferramenta dx que acompanha o Android
2.1. A execução das aplicações
Casa do Código
SDK.
Basicamente, o que é feito é o agrupamento de informações duplicadas que se
encontram espalhadas em diversos arquivos .class em um arquivo .dex, com
tamanho menor do que os arquivos que o originaram. O dx também faz a conversão de bytecodes para um conjunto de instruções específico da máquina virtual Dalvik.
Depois de criado, o arquivo .dex e todos os recursos utilizados na aplicação, como imagens e ícones, são adicionados em um arquivo .apk, que é o aplicativo propriamente dito, capaz de ser instalado em um dispositivo. Estes arquivos se encontram na pasta bin do projeto.
É possível distribuir sua aplicação para outras pessoas apenas fornecendo o arquivo .apk. No entanto, para colocá-la na loja Google Play alguns outros passos são necessários, os quais serão detalhados em outro momento. A figura 2.1 demonstra o processo de geração do aplicativo.
Figura 2.1: Processo de geração do aplicativo
No sistema operacional Android, para cada aplicação é atribuído um usuário
único de sistema e apenas este usuário recebe permissões para acessar seus arquivos.
Além disso, por padrão, cada aplicação é executada em um processo próprio, que possui também sua própria instância da máquina virtual Dalvik. Sendo assim, ela é executada de forma segura e isolada das demais.
Neste contexto, uma aplicação não pode acessar arquivos de outra e tampouco
acessar diretamente recursos do sistema operacional como a lista de contatos, câ-
mera, gps e rede, sem que o usuário explicitamente autorize o acesso durante a instalação dela. Diante dessas restrições de segurança, como tiramos proveito de toda a infraestrutura do Android e também de aplicativos de terceiros para incrementar as funcionalidades da nossa aplicação, incluindo por exemplo, um recurso de capturar fotos e vídeos e compartilhar via e-mail? Esse é justamente o ponto que vamos abordar na próxima seção.
34
Casa do Código
Capítulo 2. Entenda o funcionamento do Android
2.2
Conheça as Intents e Intent Filters
As Intents geralmente são criadas a partir de ações do usuário e representam a intenção de se realizar algo, como iniciar o aplicativo de correio eletrônico do Android ou iniciar a reprodução de uma música. Formalmente, as Intents podem
ser definidas como mensagens enviadas por um componente da sua aplicação (uma activity, por exemplo) para o Android, informando a intenção de inicializar outro componente da mesma aplicação ou de outra. A imagem 2.2 demonstra as opções