Feeds:
Posts
Comentários

Estou passando aqui para divulgar o curso de desenvolvimento de aplicações Android que estará ocorrendo em Joinville, neste mês de agosto.

Com duração de 20 horas, serão abordados assuntos sobre a arquitetura, projetos, configurações de ambiente, técnicas de programação para telas e menus, entre outros tópicos.

Se você está interessado em desenvolver aplicações para dispositivos Android, venha fazer o curso!

Estamos esperando por você!

Recentemente, Ricardo R. Lecheta, lançou o livro “Google Android: Aprenda a criar aplicações para dispositivos móveis com o Android SDK”, o primeiro livro sobre o tema no Brasil.

A obra de Lecheta apresenta ao leitor a nova plataforma móvel de código aberto que vem revolucionando o desenvolvimento de aplicações embarcadas, o Android. O livro aborda de maneira simples várias questões da plataforma, focando no desenvolvimento de aplicações onde a palavra “mobilidade” é a mais importante.

Tendo foco em questões essenciais da plataforma, Lecheta aborda pontos importantes para quem deseja iniciar algum trabalho com o Android, abrangendo desde os conceitos básicos, interfaces interativas, banco de dados, agendamento de execução, compartilhamento de dados e recursos, até serviços web e aplicações multimídia e de localização.

Os primeiros capítulos são introdutórios, falam sobre a arquitetura básica do Android, as iniciativas da Google e da Open Handset Alliance (OHA), explicam como instalar o SDK e configurar o ambiente de desenvolvimento. Além é claro, de alguns pequenos projetos que tem o intuito de iniciar o leitor no desenvolvimento de software Android.

Os capítulos seguintes explicam recursos importantes disponíveis na plataforma, fornecendo uma base sólida sobre a estrutura de uma aplicação Android. É neste momento que são abordadas questões de integração entre aplicações próprias, nativas e de terceiros. Também se faz importante destacar o detalhamento apresentado nesta parte da obra, sobre a construção de interfaces e o armazenamento de dados em banco SQLite ou compartilhados através de provedores de conteúdo.

Mais ao final do livro, os temas são bem isolados, cada um explicando um diferente recurso disponível ao desenvolvedor, como mapas e GPS, HTTP, Sockets, Web Services, além de SMS, áudio e vídeo.

Em todo o livro, o autor não faz nenhuma comparação do Android com seus concorrentes, procurando sempre focar-se na plataforma, o que faz com que o próprio leitor reflita sobre as vantagens e desvantagens no uso e desenvolvimento de aplicações Android.

Outra característica interessante do livro é que cada capítulo traz consigo uma pequena aplicação, trazendo à prática tudo aquilo que foi abordado no decorrer da leitura. Isso faz com que o leitor, além de aquirir o conhecimento que Lecheta se propõe à passar, consiga pelas suas próprias aventuras se deparar com novas situações, ocasionando no crescimento do leitor no que diz respeito à plataforma Android.

Enfim, com uma linguagem simples e exemplos úteis, nada melhor que entrar neste mercado crescente de aplicações móveis, com o livro de Lecheta debaixo do braço.

Hoje me perguntaram como poderia ser feita uma transferência de arquivo via Servlet, então resolvi trazer uma implementação fake para servir de exemplo.

Então vamos criar um Servlet básico usando o NetBeans e o Glassfish que já vem embutido.

Então, crie uma aplicação web vazia e adicione um novo Servlet.

Certo. Agora só precisamos criar uma classe que leia um arquivo local e retorne um conjunto de bytes, para então transferirmos estes bytes via HTTPResponse.

Para tanto, defina a classe LeitorArquivo como abaixo:

private class LeitorArquivo{
        private FileInputStream fis;
        private String arquivo;

        public LeitorArquivo(String caminho){
            this.arquivo = caminho;
        }

        private FileInputStream getFileInputStream(){
            if (fis == null){
                try {
                    fis = new FileInputStream(arquivo);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
            return fis;
        }

        public byte[] ler(long pos, long offset) throws java.io.IOException{
           FileChannel fc = getFileInputStream().getChannel();
           Long size = fc.size();
           fc.position(pos);
           if (pos + offset > size)
              offset = (long)(size.intValue() - pos);
           byte[] data = new byte[(int)offset];
           ByteBuffer bb = ByteBuffer.wrap(data);
           fc.read(bb);
           return data;
        }

        public boolean arquivoLido(long pos, long offset) throws java.io.IOException{
            long size = getFileInputStream().getChannel().size();
            return (pos + offset >= size);
        }

        public void liberarArquivo(){
            try {
                if (getFileInputStream() != null)
                    getFileInputStream().close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

Pronto, agora criamos o método de transferência em nosso Servlet:

private void streamBinaryData(byte[] pack, String mimeType, ServletOutputStream outstr, HttpServletResponse resp)
        throws IOException{
        BufferedOutputStream bos = null;
        resp.setContentType(mimeType);
        try{
            bos = new BufferedOutputStream(outstr);
            bos.write(pack, 0, pack.length);
            bos.close();
            outstr.flush();
            outstr.close();
        }catch (IOException e) {
            throw e;
        }
    }

E modificamos o método processRequest, para que fique da seguinte forma:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        String caminho = request.getParameter("arq");
        String mime = request.getParameter("mime");
        long pos = new Long(request.getParameter("pos")).longValue();
        long offset = new Long(request.getParameter("offset")).longValue();
        LeitorArquivo l = new LeitorArquivo(caminho);
        streamBinaryData((byte[])l.ler(pos, offset) , mime, response.getOutputStream(), response);
        l.liberarArquivo();

    }

Agora basta rodar a aplicação (isso pode ser feito com o botão direito -> Executar). O servidor Glassfish vai iniciar e o Servlet vai ser inicializado juntamente à ele. Para testar nosso servlet, faça a chamada:

http://localhost:8080//<Contexto><Servlet>?arq=<Arquivo>&pos=<Inicio>&offset=<Fim>&mime=<Mime>

Por exemplo, se sua aplicação se chamar LeitorDeArquivos..

http://localhost:8080/LeitorDeArquivos/FornecedorArquivo?arq=C:\\bar.emf&pos=0&offset=9999999999999&mime=jpeg

Agora você pode instalar um servidor de aplicação como o Glassfish (o Tomcat seria melhor neste caso) na máquina onde o arquivo à transferir se encontra, e em uma outra máquina fazer a chamada ao servlet via HTTP.

Note que em uma implementação real nos preocupariamos com mais detalhes, como o checksum dos arquivos (para verificar se estão corrompidos), o fechamento thread-safe dos recursos, etc.

Este tutorial tem por objetivo ser simples e direto, então informações sobre servidores, servlets e leitura/escrita de arquivos foram omitidos. A documentação pode ajudar nestes quesitos.

O Colméia (Grupo de Pesquisa em Software Livre da Udesc) está promovendo neste semestre uma série de seminários e palestras sobre hardware livre, terminal gráfico, interfaces tangíveis e Voip.

Neste evento, estarei ministrando dia 24 de abril, às 19h30, a palestra “Desenvolvendo Aplicações Android” =)

As outras palestras que ainda estão para acontecer estão listadas abaixo:

Dia 30/04 – “Terminal Gráfico”.
Dia 21/05 – “Interfaces Tangíveis”
Dia 04/06 – “Voip”.

A entrada nos eventos será gratuita, mas quem tiver interesse em doar um kilo de alimento não perecível, roupas ou livros usados e em bom estado, podem trazer para o grupo no dia do evento. As doações serão entregues às entidades beneficentes de Joinville.

Informações sobre o grupo:  http://www.colmeia.udesc.br

Blog da Colméia:  http://www.colmeiazine.wordpress.com

A sede do Grupo Colmeia fica no primeiro andar do bloco F, sala F 111.

Contamos com a presença de vocês!

A WebMobile e a JavaMagazine foram as primeiras revistas a publicar artigos sobre o Android aqui no Brasil.

Desde as primeiras edições que tratavam de assuntos relacionados ao Android, tenho escrito artigos à WebMobile, assim como o Ramon Ribeiro, que tem desde então produzido ótimos artigos nesta área.

Felizmente a WebMobile tem mantido essas publicações e este espaço para o Android em sua revista, ficamos contentes por isso.

A última edição da revista vem com dois artigos sobre muito interessantes sobre webservices no Android, abordando o assunto de formas distintas, para sistemas distribuídos de diferentes arquiteturas.

Outra ótima notícia foi o lançamento do livro Google Android: Aprenda a criar aplicações para dispositivos móveis com Android SDK, de Ricardo R. Lecheta, publicado pela Editora Novatec.

Recebi um exemplar do autor na semana passada. É realmente um livro muito bem escrito que sabe abordar o assunto de forma simples. Vem com vários tutoriais interessantes (o leitor desenvolve projetos em todos os capítulos) e trata de vários assuntos relacionados a plataforma. 

Sem dúvida é um ótimo livro pra quem está começando ou quer saber um pouco mais.

Em breve estarei publicando uma resenha aqui no blog sobre o livro. Espero que gostem ;)

Fico contente em ver que temos apoiado o desenvolvimento e divulgação do Android aqui no brasil e que tem dado certo!

Aproveitem as publicações!

Abraços!

Postagens Antigas »