{

title : "My Cyber-Space",

description : "O seu lugar de tecnologia",

author : "Victor Oliveira"

}


Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. Mostrar todas as postagens

domingo, 25 de maio de 2014

JavaFX AsyncTask: Um jeito fácil de manusear threads com JavaFX

Minha primeira aplicação profissional foi um aplicativo JavaFX que deveria se comunicar com um servidor remoto e fazer operações normais como login, requisições, downloads de arquivos e etc. Foi aí que eu comecei a descobrir o mundo das threads e quão complicado ele é.

Em aplicações web é muito comum que as principais operações de concorrência sejam controladas pelo servidor de aplicação, o que ocorre em aplicações desktop e mobile é diferente, você mesmo deve gerenciar todas as suas threads inclusive a de User Interface.

No android por exemplo, é proibido realizar operações de requisição web na thread principal pois como existe a latência na rede, a espera pela resposta pode fazer com que a thread principal trave e a aplicação pare de responder. Para isso eles criaram uma classe chamada AsyncTask que nada mais é de uma classe que deve ser herdada e seus três métodos principais implementados para abstrair o problema de gerenciamento de threads.

Após experienciar alguns problemas parecidos na minha aplicações JavaFX (você pode ver no Stack Overflow aqui, aqui e aqui) eu resolvi implementar algo parecido com o que o android disponibilizava para o JavaFX.

Como funciona??

A AsyncTask é uma classe com 4 métodos abstratos:
  1. onPreExecute - Esse método é executado pela UI thread e deve ser utilizado para rodar rotinas antes de sua tarefa background ser iniciada. Por exemplo, informar ao usuário que um download irá ser iniciado.
  2. doInBackground - Esse método é onde a operação será de fato realizada em outra thread, sem travar a UI.
  3. onPostExecute - Esse método é executado pela UI thread logo após sua rotina que foi executada em background acabar. Serve, por exemplo, para informar ao usuário uma mensagem de sucesso ou erro.
  4. progressCallback - Se for necessário mostrar o progresso durante a tarefa, esse método deve implementar o callback que atualiza a UI com informações pro usuário, por exemplo, incrementando uma barra de progresso.

Existem ainda outros 4 métodos:
  1. publishProgress - É o método que irá chamar o progressCallback, normalmente implementado dentro de um laço para poder publicar o progresso da tarefa.
  2. setDaemon - É usado para setar se a thread é daemon ou não, ou seja, se ela irá morrer junto com o termino da aplicação ou não. Deve ser usada antes do método execute;
  3. execute - É o método que iniciará todo o processo.
  4. interrupt - Usado para interromper a thread

Vocês podem baixar, e contribuir na página do JavaFX AsyncTask no GitHub 

domingo, 11 de maio de 2014

Android, IOS: como detectar e corrigir crashes do meu aplicativo? Crashlytics

Apesar de testarmos nossos aplicativos inúmeras vezes, ao coloca-los na loja eles podem apresentar potenciais crashes e prejudicar a usabilidade do usuário. Muitas vezes isso pode acontecer pela configuração do hardware do device do cliente ou simplesmente por uma linha de código falho que passou despercebida.


O crashlytics é um crash reporter em tempo real muito poderoso e consolidado utilizado em aplicativos para IOS ou Android. Empresas como PayPal, Domino's, Waze, Groupon, Walmart e muitas outras utilizam os serviços do Crashlytics, isso pode te fazer pensar no preço exorbitante que deve ser uma licença, certo?? Errado, os serviços do Crashlytics são oferecidos gratuitamente no endereço http://try.crashlytics.com

De início é preciso efetuar um cadastro que irá te dar acesso ao seu painel de controle onde você poderá cadastrar seus aplicativos que serão monitorados. O crashlytics pode ser configurado de várias formas, mas a mais simples é você baixar sdk do site e deixar com que ele configure tudo por você. No eclipse ao tentar baixar o plugin do repositório uma mensagem de erro com a seguinte frase aparecia 
No repository found in CrashLytics install for eclipse, se aconteceu com você também é só clicar no link que a correção está lá.

Porque eu recomendo o Crashlytics??
- É de graça.
- É simples e fácil de utilizar: Qualquer um é capaz de configurar e utilizar.
- Funciona em tempo real, mostrando para o desenvolvedor a mensagem de erro, a linha de código onde ocorreu, com qual usuário, com qual aparelho e muitos outros dados.
- Tem um suporte incrível: sempre que precisei do suporte eles me atenderam de forma muito amigável e muito atenciosos, fazem questão de entrar em contato para contar as novidades e saberem de sua opinião.


sábado, 3 de maio de 2014

Android: Como fazer para as imagens de sua aplicação não serem exibidas na galeria?

Muitas vezes nossos aplicativos podem precisar fazer o download de imagens que não devem aparecer na galeria de imagens e somente serem exibidas pela aplicação.

A solução para este problema é simples e pode ser feita de forma manual pelo usuário do sistema ou programaticamente dentro de seu aplicativo. Basta criar um arquivo chamado ".nomedia" na pasta que você deseja não indexar a galeria de imagens.

Exemplo de código:

//Método onCreate da activity
@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   //Path do arquivo .nomedia  
   String noMediaPath = Environment.getExternalStorageDirectory() + "/ApplicationFolder/ + ".nomedia";

   //Instanciando arquivo
   File noMediaFile = new File(noMediaPath);

   //Testando se arquivo já existe dentro da pasta da minha aplicação
   if (!noMediaFile.exists()) {
      try {

      //Pega o path dos diretórios da minha aplicação
      String dirTreePath = noMediaFile.getParent();

      //Instancia o diretório da aplicação
      File dirTree = new File(dirTreePath);

      //E se ele não existir cria-os antes de criar o arquivo .nomedia
      if (!dirTree.exists()) {

         dirTree.mkdirs();
      }

      //Cria o arquivo .nomedia
      noMediaFile.createNewFile();

      //Aqui alertaremos ao Android que o sistema de arquivo sofreu uma modificação
      sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

      } catch (Exception e) {

      }
   }
   setContentView(R.layout.minha_activity);
}

Pode ser necessário limpar o cache da Galeria de Imagens do android para que o código produza o efeito desejado.

terça-feira, 2 de abril de 2013

TV Digital no Brasil: Uma metodologia prática para o desenvolvimento de aplicações interativas utilizando Ginga-NCL

Dessa vez apresento a vocês meu trabalho de graduação, que teve como foco principal o desenvolvimento de aplicações para a nova TV Digital brasileira. É um trabalho de conteúdo muito técnico, especialmente para programadores ou pessoas com habilidades de programação. Conta com o passo a passo de como criar uma aplicação interativa e vários exemplos.

Resumo: Os conceitos a respeito das tecnologias envolvidas na TV digital aberta brasileira ainda carecem de fontes de informações e ferramentas de suporte a estudantes e profissionais da área da informática. Por esta razão, surge a necessidade da criação de um material de referência contemplando, além dos conceitos, uma metodologia prática para o desenvolvimento de aplicações interativas. Neste trabalho são definidas as principais arquiteturas e conceitos técnicos do Sistema Brasileiro de Televisão Digital(SBTVD). Além disso, são apresentadas as linguagens de programação e ambientes de desenvolvimentos, dando ênfase à preparação de um alicerce para a implementação de uma aplicação interativa utilizando o subsistema declarativo Ginga-NCL, que servirá para avaliar o conhecimento dos telespectadores de programas que exibam material didático por meio de um questionário sobre o tema envolvido.