DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Este é um post disponível para assinantes MVP
###
Java Magazine 102 - Índice

Android 4: Ice Cream Sandwich - Revista Java Magazine 102 - Parte 2

Neste artigo veremos as principais alterações do JBoss AS 7, principalmente em sua arquitetura e os modos Domain e Standalone.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo
Por: NELSON GLAUBER DE VASCONCELOS LEAL E BRUNO VINICIUS
Na primeira parte desse artigo, começamos a falar sobre o lançamento do Android 4, denominado Ice Cream Sandwich (ou simplesmente ICS), e seus novos recursos para os desenvolvedores. Também mostramos recursos já disponíveis nos tablets Android 3 (Honeycomb), e que agora também estão disponíveis nos smartphones. Dentre eles, abordamos: notificações ricas, onde podem ser exibidos avisos para o usuário de uma maneira mais amigável; App Widgets redimensionáveis e que exibem conteúdo em forma de lista na tela principal dos dispositivos; e a aceleração de hardware, que traz uma melhoria significativa no desempenho de aplicações que utilizam mais recursos gráficos, como jogos.
Nessa segunda parte, vamos abordar recursos exclusivos do ICS, como: a integração com agenda de compromissos; a possibilidade de aplicações de redes sociais complementarem informações dos contatos do aparelho com os dados do perfil da rede social; novos componentes visuais como o GridLayout e o Switch; e por fim, falaremos dos novos recursos multimídia e de conectividade, como o Wi-Fi Direct e o Bluetooth Health.
Acesso a API de calendário
Nesta nova versão, é possível criar aplicações que interajam com a aplicação de calendário nativa dos aparelhos Android, que permite o controle e agendamento de eventos. Esses eventos normalmente estão ligados a uma conta Exchange ou Google Calendar, por exemplo. O compartilhamento dos dados é feito através de um Content Provider, um recurso do próprio Android para compartilhar um banco de dados de uma aplicação com os demais aplicativos do SO. Com ele, é possível gerenciar eventos agendados em uma ou várias contas de calendário que estejam cadastradas no aparelho.
Para testarmos os exemplos que mostraremos a seguir, devemos ter uma conta de calendário cadastrada no aparelho. Aqui, usaremos uma conta do Hotmail. Assim, execute o emulador do Android 4 e, em seguida, abra a aplicação de Calendário. Pressione a tecla Menu e depois selecione Settings. Na tela que for exibida, selecione Add Account na parte superior direita. Feito isso, será apresentada a tela da Figura 1, então informe seu e-mail e senha e clique em Next.

Neste momento, será exibida a tela da Figura 2. Preencha com seus dados e com as opções apresentadas na imagem e depois clique em Next. Uma tela com mais algumas configurações de sincronização será carregada. Pode deixá-la com as alternativas padrão e clicar em Next. Enfim, a tela de confirmação será apresentada. Clique em Next e sua conta Exchange estará configurada.

Uma vez que estamos com a conta configurada, vamos ver como interagir com ela. Iniciaremos mostrando como inserir um evento utilizando a própria aplicação de calendário, e em seguida, faremos essa interação com o provedor de conteúdo (Content Provider) que ela disponibiliza.
O código da Listagem 1 mostra como abrir a aplicação de calendário para inserir um novo evento. Começamos criando uma Intent com a ação android.intent.action.INSERT, passando o tipo vnd.android.cursor.item/event, que funciona como um MIME TYPE de um evento (reunião, compromisso, etc.) para o Content Provider de Calendário. Depois, passamos uma série de parâmetros para preencher alguns campos do evento que iremos inserir no calendário, como: Título (linha 3), Local (linha 4), Hora Inicial e Final (linhas de 5 a 8), Nível de Acesso (linha 9) e as repetições desse evento (linha 11). Este último é o mais “complexo”, pois se trata de uma String que obedece a um padrão bem interessante:
• FREQ=WEEKLY – define que o evento se repete semanalmente;
• COUNT=4 – faz com que o evento se repita por quatro vezes;
• BYDAY=TU,TH – possibilita que o evento fique atrelado a dias da semana. No nosso caso, terça (TUesday) e quinta (THursday).

Deste modo, nosso evento terá quatro ocorrências, sendo agendado para ser executado semanalmente, nas terças e quintas. Logo, o evento terá a duração de duas semanas.

Listagem 1. Intent para inserir um compromisso na Agenda.
1. Intent it = new Intent(Intent.ACTION_INSERT);
2. it.setType("vnd.android.cursor.item/event");
3. it.putExtra(Events.TITLE, "Reunião com Cliente");
4. it.putExtra(Events.EVENT_LOCATION, "Escritório");

5. GregorianCalendar calendario = new GregorianCalendar(2011, 10, 30, 8, 0);
6. it.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
calendario.getTimeInMillis());

7. calendario.add(Calendar.HOUR_OF_DAY, 1);
8. it.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
calendario.getTimeInMillis());

9. it.putExtra(Events.ACCESS_LEVEL, Events.ACCESS_PRIVATE);
10. it.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);
11. it.putExtra(Events.RRULE, "FREQ=WEEKLY;COUNT=4;BYDAY=TU,TH");

12. startActivity(it);

Ao executarmos o código da Listagem 1 a aplicação de calendário será invocada exibindo a tela mostrada na Figura 3. Clique em Done e o evento (na sequência que informamos) será criado.

Além de abrir a aplicação de calendário para inserir um evento, a nova versão do Android permite fazê-lo diretamente do nosso programa. Ou seja, também é possível listar, excluir e editar eventos através do Content Provider disponibilizado pela aplicação de calendário.
Para listar os eventos, devemos adicionar a permissão android.permission.READ_CALENDAR no AndroidManifest.xml, e para inserir eventos diretamente do nosso código, a permissão android.permission.WRITE_CALENDAR, conforme podemos observar na Listagem 2.

Listagem 2. Permissões para acesso ao ContentProvider de Calendário.
1.
2.

A Listagem 3 mostra como listar as informações sobre os eventos a partir do Content Provider do calendário.

Listagem 3. Listando eventos do calendário.
1. private static final String TAG = "ICS";

2. private void listarCalendarios() {

3. String conta;
4. long id_conta;

5. // Dados da conta
6. Cursor cCalendar = getContentResolver().query(
CalendarContract.Calendars.CONTENT_URI,
new String[]{
CalendarContract.Calendars._ID,
CalendarContract.Calendars.ACCOUNT_NAME}, null, null,
CalendarContract.Calendars.DEFAULT_SORT_ORDER);

7. while (cCalendar.moveToNext()) {
8. id_conta = cCalendar.getLong(cCalendar.getColumnIndex(
CalendarContract.Calendars._ID));
9. conta = cCalendar.getString(cCalendar.getColumnIndex(
CalendarContract.Calendars.ACCOUNT_NAME));

10. Log.d(TAG,"Id Conta:"+ id_conta);
11. Log.d(TAG,"Account Name:"+ conta);

12. listarEventos(id_conta);
13. }
"

A exibição deste artigo foi interrompida

Este post está disponível para assinantes MVP.



A DevMedia é um portal para analistas, desenvolvedores de sistemas, gerentes e DBAs com milhares de artigos, dicas, cursos e videoaulas gratuitos e exclusivos para assinantes.

O que você achou deste post?
Publicidade
Serviços

Mais posts