Mobile

O que se pode fazer com JavaScript hoje em dia?

Olá, Web Developers!

O JavaScript inicialmente foi criado como um complemento para o navegador da Netscape. Por muito tempo foi visto como uma linguagem ruim, bagunçada e lenta (e estavam certos).

Mas o JavaScript evoluiu muito. Hoje em dia é bem mais organizado, rápido e possui várias funcionalidades que nos facilitam criar várias coisas. Além disso, a linguagem não se limita mais apenas aos navegadores.

Vamos conhecer algumas áreas onde podemos atuar com JavaScript além do seu uso comum e até além dos navegadores. Dessa maneira você poderá usar seus conhecimentos em JavaScript e escolher entrar em alguma área além da web, como desenvolvimento de jogos, robótica, automação, etc.

Observação: esse post não incentiva o uso de JavaScript para tudo. Há de se ponderar a melhor ferramenta/tecnologia para o problema que se precisa resolver.

Node.js

Node.js

Não tem como começar essa lista sem falar do Node. Ele é basicamente uma ferramenta que executa o JavaScript fora do navegador. Quando instalado, chamamos o Node.js pelo terminal. Como não estamos executando o JavaScript em um navegador, os cuidados com segurança são diferentes.

Há várias funcionalidades disponibilizadas para o Node.js, fazendo com que possamos fazer coisas com JavaScript que não conseguimos fazer quando o nosso ambiente é o navegador.

Um exemplo é o acesso a arquivos. Um código JavaScript no navegador não consegue acessar os arquivos do usuário, pois seria uma falta de segurança você entrar em um site e ele vasculhar seu computador.Como o Node.js está instalado em sua máquina, o JavaScript tem liberdade de acessar os arquivos contidos no HD.

O Node.js possibilitou a criação de várias outras ferramentas para podermos usar JavaScript fora do navegador, e hoje em dia é um conhecimento obrigatório para quem quer trabalhar com JavaScript.

https://nodejs.org/

npm

O Node.js vem com o “npm” (node package manager). Com ele podemos gerenciar as dependências de nossos projetos.

Um exemplo: caso queira usar jQuery em seu projeto, ao invés de ter o trabalho de fazer download do jQuery, basta executar o comando:

$ npm install jquery

Caso queira atualizar a versão do jQuery em seu projeto, basta executar o comando:

$ npm update jquery

O npm também pode ser usado para instalar outros programas que podem nos auxiliar no desenvolvimento de nossas aplicações e executar comandos.

https://www.npmjs.com/

Testes

Quando estamos escrevendo código é preciso fazer muitos testes para assegurar que nossas funções estão retornando o valor esperado. É bom sempre testar a mesma função passando vários valores diferentes, inclusive valores que a função não aceita para ver se há necessidade de criar um tratamento para a aplicação não quebrar.

Acontece que qualquer alteração em uma função pode afetar outras funções. Então há ferramentas que facilitam a criação de testes.

Os mais famosos são: QUnit, Mocha e Jasmine.

Qualidade de Código

Quando estamos escrevendo nosso código, é muito importante mantê-lo com qualidade. Uma característica de um código de qualidade é mantê-lo uniforme.

Isso inclui sempre identar o código, padronizando a quantidade de espaços ou se será usado “tab”, se ao criar uma função você irá abrir chaves “{“ na mesma linha ou em uma linha nova, etc.

Há ferramentas como o JSLint e JSHint que analisam o nosso código e indicam se estamos mantendo as regras que foram definidas.

Automatização de Tarefas

Quando estamos desenvolvendo é comum precisarmos realizar certas operações para melhorar o nosso código. Um exemplo é minificar o nosso código, fazendo com que os arquivos fiquem menores, o que faz a aplicação ser carregada mais rapidamente pelo navegador.

Outras tarefas podem ser a execução de testes de qualidade, como o JSLint, ou testes de software, como o Jasmine.

Para nos auxiliar temos os automatizadores de tarefas. Os mais famosos são o Grunt e o Gulp. Podemos definir qualquer tarefa e pedir para que estas ferramentas as executem para nós.

Imagine que quando salvamos um arquivo, ele deve ser testado pelo Jasmine, analisado pelo JSLint e, se todos os testes passarem, iremos minificar o arquivo.

E mais! Podemos querer também que se tudo der certo, ele envie um E-mail para o nosso cliente dizendo que em breve iremos lançar uma nova versão da nossa aplicação!

Eles nos ajudam a automatizar o que quisermos, o limite é sua imaginação!

Servidores

Normalmente os códigos escritos no lado do servidor são feitos com linguagens como Java, PHP, Ruby, etc.

Com o Node.js foi possível começar a escrever código para o servidor com JavaScript. Já houve outras tentativas, mas o Node.js teve mais sucesso.

Os frameworks mais conhecidos para Node.js são: Express, Hapi e Koa.

Também podemos criar código Back End com o Meteor. O Meteor é uma plataforma de desenvolvimento fullstack (front e back end).

Bancos de Dados

O MongoDB é um banco de dados orientado a documentos. O console que usamos para acessar os dados executa JavaScript. Então se você sabe JavaScript, pode ter facilidade em aprender a gerenciar o MongoDB.

https://www.mongodb.com/

Aplicativos Mobile

Com JavaScript também podemos criar aplicativos mobile. A vantagem é usar uma única linguagem de programação para as diferentes plataformas. O modo mais conhecido é usando o Cordova/PhoneGap. Com eles nós criamos aplicações híbridas.

São chamadas de “híbridas” porque unem duas tecnologias diferentes. Por exemplo, o código nativo do Android é escrito em Java. Com o Cordova nós criamos aplicações web comuns, com HTML+CSS+JavaScript. Para acessar funcionalidades do dispositivo, há uma integração do código nativo em Java e nós acessamos essas funcionalidades pelo JavaScript.

Quando abrimos o aplicativo, estamos na verdade abrindo um navegador interno que irá apresentar a nossa aplicação e que pode acessar funcionalidades do dispositivo que não poderíamos acessar a partir de uma aplicação web comum.

Então a ideia de “híbrido” é porque estamos juntando tecnologia web com a tecnologia nativa.

http://facebook.github.io/react-native/

Também podemos criar aplicações nativas. As ferramentas mais conhecidas são o React Native e o NativeScript. Com eles nós criamos telas com XML ao invés de HTML, e podemos estilizar com CSS. Isso será convertido para uma tela nativa de cada plataforma, como Android e iOS. Já as ações são escritas com JavaScript mesmo.

A vantagem disso é que, por ser uma aplicação nativa ao invés de uma aplicação com um navegador, teremos melhor performance do que uma aplicação híbrida.

Outra vantagem é que as aplicações híbridas dependem do navegador padrão do sistema, então corremos o risco de criar um código que o navegador daquele dispositivo não suporte. Em uma aplicação nativa, já que não dependemos de navegadores, não precisamos nos preocupar se haverá suporte para as funcionalidades ou não.

Softwares Desktop

Com o Node.JS também é possível criar aplicações Desktop. Estas aplicações normalmente utilizam o Chromium, navegador de código aberto que está por trás do Google Chrome, e o Node.js.

As telas são feitas com HTML5 e CSS3, e o JavaScript pode se comunicar diretamente com o Node.js, que fica embutido na aplicação.

Atualmente o framework mais utilizado é o Electron, criado pela equipe do GitHub. Com ele já foram desenvolvidos famosos softwares como o Atom, Slack e Visual Studio Code.

https://electronjs.org/

SmartTVs

Também é possível criar aplicativos para SmartTVs. Você irá também usar HTML/CSS/JavaScript. As que dão maior suporte para isso são as TVs da Samsung.

3D

A partir do elemento canvas do HTML5 também temos uma API chamada WebGL. Ela nos ajuda a trabalhar com renderização de gráficos 2D e 3D.

Uma biblioteca que nos ajuda a trabalhar com 3D com JavaScript é o three.js.

https://threejs.org/

Jogos

Também é possível criar jogos com JavaScript. Isso graças ao elemento canvas do HTML5, que nos permite desenhar na tela com JavaScript.

Há várias bibliotecas que nos ajudam a criar jogos com JavaScript.
Uma das mais famosas é o Impact, que é paga. Uma outra famosa, que é gratuita, é o Phaser.

Como os jogos apenas usarão o elemento canvas do HTML5 e JavaScript, você poderá criar jogos para qualquer lugar que os suporte ou possua um navegador.

Pode-se usar ferramentas como o Cordova/Phonegap, mas também há outras ferramentas que ajudam a otimizar jogos feitos com JavaScript para dispositivos móveis.

Plugins

Há softwares que possibilitam a criação de plugins. Isso permite que as pessoas criem novas funcionalidades para eles. Normalmente esses plugins são escritos com linguagens de scripts.

Um exemplo é o PhotoShop. Ele aceita a criação de plugins escritos em JavaScript.

Sistemas Operacionais

Um sistema baseado no Node.js, escrito apenas com JavaScript, foi desenvolvido. É o NodeOS.

Qualquer pacote do npm é um pacote do NodeOS, o qual conta com mais de 475.000 pacotes. O objetivo do NodeOS é fornecer apenas o necessário e o npm cuida do resto. Já que qualquer um pode contribuir com o npm, qualquer um pode criar pacotes para o NodeOS.

Você pode ver mais em:

http://node-os.com/

Programação de Hardwares e Internet das Coisas

Com o Node.JS também é possível controlar hardwares. Podemos então usar o JavaScript para trabalhar além das telas dos computadores e celulares, como controlar drones.

Ao programar placas, podemos criar códigos para até mesmo integrar vários objetos, o famoso “Internet das Coisas” (IoT).
Imagine usar JavaScript para controlar as lâmpadas, portas e janelas de sua casa de acordo com a iluminação do ambiente. Ou que quando o GPS do seu smartphone perceber que você está chegando em casa ou no trabalho, ligue a cafeteira para que o café esteja pronto quando você chegar.

Um exemplo é o noduino, um framework para acessar os controles básicos do Arduino a partir de aplicações web usando HTML5, Socket.IO e Node.JS.

Também há o projeto Tessel. No próprio site você pode comprar as placas para montar o seu produto.

Outro famoso projeto é o Cylon.js. Ele é um framework voltado para robótica, computação física e Internet das Coisas.

Você pode ver mais em:

Hologramas

O JavaScript também é capaz de ser utilizado com hologramas.
Um exemplo é o HoloJS, da Microsoft, que é um framework para criar aplicações holográficas usando JavaScript e WebGL.

Realidade Virtual e Realidade Aumentada

Muito se fala sobre Realidade Virtual e Realidade Aumentada. Um exemplo para realidade aumentada é o JavaScript ARToolKit.

https://github.com/artoolkit/jsartoolkit5

Inteligência Artificial

Também podemos aproveitar o JavaScript na área da inteligência artificial. Há muitas bibliotecas e exemplos.

Uma biblioteca usada para isso é a “deeplearn.js”, que você pode conhecer melhor em:

https://deeplearnjs.org/ .

Concluindo

Hoje em dia várias linguagens de programação tentam estar onipresentes, como é o caso do JavaScript. Porém, nem sempre é algo bom. Não existe “bala de prata”. Há linguagens que estão mais evoluídas e adaptadas para certas áreas.

Mesmo que JavaScript seja minha linguagem principal, há momentos em que prefiro usar outras linguagens de programação, pois admito que possuem ferramentas melhores para se trabalhar e acabam entregando algo com mais rapidez e qualidade.

A vantagem que enxergo em utilizar uma única linguagem em várias áreas é possibilitar que uma pessoa com conhecimento em uma linguagem possa experimentar novas áreas, ou que uma pequena empresa possa reaproveitar os conhecimentos da equipe e códigos para trabalhar com outras tecnologias.

Carreira de desenvolvedor de aplicativos: como começar

Apesar de não ser uma tecnologia tão recente, os aplicativos móveis ainda estão em alta no mercado de software. Muitos apps surgem todos os dias, seja resolvendo nossos problemas do dia-a-dia, ou nos entretendo de alguma maneira.

Quem deseja começar uma carreira de desenvolvedor de aplicativos do zero deve ter ciência dos desafios. Além da necessidade de aprendizado das tecnologias atuais, trata-se de um mercado muito volátil em que os avanços tecnológicos e novos frameworks surgem a cada dia.

Desde o começo em lógica de programação, vários desafios serão encontrados. Cabe ao desenvolvedor de aplicativos não se intimidar e enfrentar esses obstáculos de cabeça erguida.

Pensando em ajudar quem quer começar essa carreira, vamos apresentar algumas dicas.

Aprendendo lógica de programação

Quando pensamos em resolver problemas do dia a dia com software, precisamos pensar que existem passos lógicos. Assim como fazer uma receita de bolo, no desenvolvimento de software há uma sequência de ações para chegar a um resultado final.

As sequências lógicas bem estruturadas da programação, que chamamos de algoritmos, são aprendidas quando estudamos lógica de programação. Na jornada para se tornar um desenvolvedor de aplicativos, esse é com certeza o primeiro passo, que na verdade acaba valendo para qualquer área e setor quando falamos sobre desenvolvimento de software.

Paradigmas de programação

Um paradigma de programação é a maneira como o desenvolvedor pensa e age para resolver um problema quando está programando – é o seu guia para o desenvolvimento. Esses paradigmas são diferentes em relação aos seus conceitos, aplicações e técnicas.

Um problema pode ser resolvido baseado em diversos paradigmas. Assim como quando falamos sobre linguagens de programação ou IDEs, é difícil falar que um é melhor que o outro. Cada um é mais adequado para resolver determinado problema.

Quando falamos de desenvolvimento de aplicativos móveis, os principais paradigmas de programação são:

Orientação a objetos

Se formos considerar os aplicativos para smartphones atuais, grande parte deles utilizam a orientação a objetos. Essa metodologia permite ao programador o encapsulamento de regras de negócio, além da escrita de códigos menores e mais limpos.

Por isso fazer um curso de lógica orientada a objetos, é um passo importante na jornada como desenvolvedor de aplicativos.

Paradigma funcional

O paradigma funcional tem ganhado espaço no desenvolvimento mobile, principalmente com a vinda de linguagens como o Kotlin e o Swift. Ele baseia-se no conceito matemático de função, em que essas funções são utilizadas para resolver problemas.

O paradigma funcional possibilita a escrita de um código menor e mais expressivo algumas vezes. Por isso, linguagens funcionais são uma opção interessante para quem deseja começar a carreira como desenvolvedor de aplicativos.

Trade off: Qual linguagem escolher? Híbrido, nativo ou cross-platform?

Este é o momento em que o caminho dos desenvolvedores de aplicativos tomam rumos diferentes: a hora da escolha da linguagem de programação e frameworks.

Atualmente, existe no mercado a possibilidade de você ser um desenvolvedor de aplicações móveis nativas, híbridas ou cross-platform.

Quando você escolhe ser um desenvolvedor nativo você tem as seguintes opções:

1) Desenvolvedor android

Para ser um desenvolvedor Android, o programador deve ter domínio das linguagens de programação Java e/ou Kotlin. Essa é uma carreira que ainda possui uma alta taxa de empregabilidade, já que o Android é a plataforma que domina o mercado brasileiro de smartphones.

2) Desenvolvedor iOS

Os iPhones e outros gadgets mobile da Apple possuem grande aceitação no mercado e são considerados por muitos os melhores aparelhos disponíveis. Caso você opte por essa carreira, há duas opções de linguagem: Objective-c ou Swift.

A linguagem mais recente dentro das apresentadas é a Swift, portanto, tende a ser a única utilizada para desenvolvimento iOS no futuro.

Já quando a escolha é pelo desenvolvimento híbrido ou cross-platform, contamos com vários frameworks no mercado que cada vez mais se mostram como excelentes opções ao desenvolvimento nativo. Os principais frameworks híbridos e cross-platform usados atualmente no mercado são:

1) Ionic (híbrido)

O Ionic é uma opção já com um pouco mais tempo de mercado e que está em sua terceira versão. Esse framework é baseado no Angular, framework JavaScript do Google. Todo o código gerado é executado em cima do Cordova, um “super framework” para desenvolvimento mobile híbrido que serve de base para outros frameworks híbridos, como o próprio Ionic.

2) PhoneGap (híbrido)

PhoneGap também é um framework para o desenvolvimento híbrido de aplicativos, tendo sido uma das primeiras soluções nesse sentido. Assim como o Ionic e outros frameworks híbridos, ele suporta as plataformas Android, iOS e Windows Phone. A biblioteca também utiliza o Cordova, e as linguagens utilizadas são HTML, CSS e JavaScript.

3) React Native (cross-platform)

Esse framework, que é baseado em Javascript, é uma grande tendência para o mercado de desenvolvimento de apps. Criado como uma derivação do React, uma biblioteca desenvolvida pela equipe de engenheiros do Facebook, o React Native possui várias características de uma aplicação nativa em sua composição. Além disso, ele abandona o uso de web apps, o que não ocorre nos frameworks híbridos.

4) Xamarin (cross-platform)

O Xamarin é um framework que também gera versões de aplicativos para Android, iOS e Windows. Assim, como o React Native, o código escrito utilizando-se o Xamarin é compilado de maneira nativa, não ficando atrelado às chamadas WebViews – algo que ocorre nos frameworks híbridos. A linguagem padrão de programação utilizada no desenvolvimento com o Xamarin é o C#. Como opção, o F# (linguagem funcional da plataforma .NET) também pode ser utilizado.

IDE’s – Ambientes de desenvolvimento para desenvolvedores de aplicativos

Quando desenvolvemos uma aplicação móvel, é muito importante otimizar todos os processos: desde quando tratamos da escrita do código até quando falamos em execução e testes.

Apesar das IDEs não serem obrigatórias, elas podem acelerar – e muito – o processo de desenvolvimento de um aplicativo. Cada plataforma (Android ou iOS) acaba tendo uma IDE que se mostra mais adequada quando falamos de desenvolvimento nativo. No caso do Android, essa IDE é o Android Studio, recomendado pela própria Google.

No caso do iOS, essa IDE é o XCode, IDE da própria Apple. Isso também acaba acontecendo na utilização de ferramentas cross-platform: no caso do Xamarin, por exemplo, é muito comum a opção pelo Visual Studio. Já no caso de ferramentas híbridas, geralmente um editor de código (que pode ser entendido como uma versão mais simplificada de uma IDE) é geralmente a ferramenta utilizada.

Esses ambientes possuem as seguintes características de maneira geral:

  • Editor de código;
  • Compilador, onde se compila o código para a linguagem da máquina (somente no desenvolvimento nativo e/ou cross-platform);
  • Depurador, onde encontramos defeitos no código-fonte;
  • Mecanismos de refatoração que ajudam na melhora e otimização do código-fonte;

Esses são os passos básicos para se tornar um desenvolvedor de aplicativos móveis. Se você pretende se tornar um desenvolvedor, o estudo e atualização profissional nunca podem ser deixados de lado, assim você conseguirá se destacar no mercado e ter uma carreira de sucesso!

Esse texto foi escrito por Daniel Martins, analista de marketing na Vulpi, plataforma de recrutamento e seleção de desenvolvedores de software.

Por que estudar e ingressar no mercado mobile?

O uso de dispositivos móveis já tomou uma proporção gigantesca em todo o mundo. O avanço da tecnologia, dentre outras facilidades, fazem com que a população cada vez mais se afastem de seus computadores para tarefas mais rápidas, deixando eles somente para sessões mais longas.

As pessoas se comunicam cada vez mais por meio de tablets e smartphones e você pode se preparar profissionalmente para o presente (e futuro) promissor dos dispositivos móveis.

Por que eu deveria estudar esse assunto?

Hoje em dia você encontra aplicativos de praticamente tudo (tudo mesmo!), das categorias mais diversificadas possíveis. As empresas necessitam entrar nesse mundo móvel, seja para facilitar algum serviço que ela oferece, ou para que seus clientes possam realizar algum tipo de consulta. O importante é não ficar de fora. Com isso, as empresas podem aumentar seu reconhecimento, popularidade de marca, sair na frente de concorrentes, ampliar suas receitas, atrair novos clientes, divulgar seus produtos/serviços, podendo até ter um canal direto com o cliente.

Com certeza você tem diversos aplicativos no seu celular dos mais diferentes tipos podendo ser redes sociais, música, games, entretenimento, compras, educação, notícias, estilo de vida e até mesmo do seu banco.

Os dados do relatório realizado pela Flurry Mobile mostram que o tempo gasto em aplicativos móveis cresceu 69% no último ano e que esses consumidores tendem a aumentar o seu tempo gasto em dispositivos móveis.

Podemos vê-lo na imagem abaixo e ver que a utilização de aplicativos é 92% do total tempo gasto, sendo apenas 8% na utilização de browser.

O que você pode fazer?

Depois de tudo que vimos até agora, sabemos que temos uma infinidade de aplicativos à nossa disposição e que empresas que ainda não se aventuraram nessa área devem fazer isso o mais breve possível.

Mas, para ter esses aplicativos é preciso alguém para desenvolvê-los e é aí que você pode entrar de cabeça! O setor de TI sempre sofre com a falta de profissionais devidamente qualificados e isso não é diferente no mercado mobile: é necessário investir na carreira pois é fundamental o conhecimento técnico e prático.

Há diversas ferramentas que você pode estudar. Você pode escolher desenvolver para uma plataforma específica ou escolher uma ferramenta que englobe todas, o que é mais aconselhável hoje em dia: escrever uma única aplicação, mas que rode em diversos dispositivos como o iOS, Windows e Android.

Antes de estudar uma plataforma mobile você deve verificar em qual base de conhecimento ela se encontra, se é Java, C#, Delphi… e sim, você terá que aprender alguma delas. É muito estudo que você terá e isso deve ser constante, como disse anteriormente, toda área de TI é assim. =)

Ah, aproveite e veja os cursos da categoria mobile do TreinaWeb.

Concluindo

A carreira de desenvolvedor mobile pode gerar bons frutos para você, mas é importante estar preparado e antenado no que acontece no mercado, além de, claro, estar sempre estudando e se atualizando, assim você sempre encontrará boas oportunidades no mercado.

Gostou do artigo? Já trabalha ou pensa em se aventurar nesse mercado mobile? Conta pra gente a sua opinião dessas tecnologias que cada vez mais estão presentes em nossas vidas. =)

Implementando uma notificação simples no Android

A notificação é uma forma de informar o usuário sobre eventos do aplicativo. Geralmente é exibida quando ele está fora da aplicação. Desta forma, elas são fortes aliadas para tornar as aplicações mais interativas e aumentar o engajamento com seu usuário.

Quando uma notificação é lançada pela aplicação, ela é tratada pelo Notification Manager, que possui a capacidade de exibir um ícone na área de notificação, exibir a notificação na tela, piscar a tela, vibrar o dispositivo, iniciar um alerta sonoro, exibir informações adicionais quando a área de notificação é exibida, etc.

Como as notificações são formas de informar ao usuário sobre eventos da aplicação, elas são utilizadas, praticamente, por todos os aplicativos. Com este recurso o usuário não precisa abrir a aplicação para saber se novas informações foram recebidas ou se algum evento lançado por ele foi finalizado, ele consegue visualizar estes dados pela própria notificação lançada.

Ao trabalharmos com notificações, é comum implementar uma ação ao evento click. Geralmente, ao receber um click, a aplicação que lançou aquela notificação é aberta exibindo maiores detalhes. Para isso, precisamos passar para a notificação uma PendingIntent.

A PendingIntent especifica uma ação que será executada no futuro. Ela passa uma “futura” intent para outra aplicação e permite que esta aplicação execute a intent como se tivesse as mesmas permissões da sua aplicação. Ela é um token que você informa para uma outra aplicação, que permite que ela execute um pedaço de código com as mesmas permissões que a sua aplicação.

Ao fornecer um PendingIntent para outra aplicação, você garante a execução correta da operação especificada pela outra aplicação, como se fosse a sua (com as mesmas permissões e identidade).

Implementação:

public void criarNotificacaoSimples(){
    int id = 1;
    String titulo = "Título da Notificação";
    String texto = "Texto da notificação Simples";
    int icone = android.R.drawable.ic_dialog_info;

    Intent intent = new Intent(this, TextoActivity.class);
    PendingIntent p = getPendingIntent(id, intent, this);

    NotificationCompat.Builder notificacao = new NotificationCompat.Builder(this);
    notificacao.setSmallIcon(icone);
    notificacao.setContentTitle(titulo);
    notificacao.setContentText(texto);
    notificacao.setContentIntent(p);

    NotificationManagerCompat nm = NotificationManagerCompat.from(this);
    nm.notify(id, notificacao.build());
}

private PendingIntent getPendingIntent(int id, Intent intent, Context context){
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    stackBuilder.addParentStack(intent.getComponent());
    stackBuilder.addNextIntent(intent);

    PendingIntent p = stackBuilder.getPendingIntent(id, PendingIntent.FLAG_UPDATE_CURRENT);
    return p;
}

No método criarNotificacaoSimples(), inicialmente, temos a criação de todas as variáveis que serão usadas para criar e configurar a notificação. O id que irá identificar a notificação, o título, texto e ícone que serão exibidos nela. E no fim deste trecho, é criada a Pending Intent, retornada pelo método getPendingIntent():

int id = 1;
String titulo = "Título da Notificação";
String texto = "Texto da notificação Simples";
int icone = android.R.drawable.ic_dialog_info;

Intent intent = new Intent(this, TextoActivity.class);
PendingIntent p = getPendingIntent(id, intent, this);

Em seguida, no mesmo método, temos a criação e a configuração das propriedades da notificação. Para criá-la, é utilizado a Classe de compatibilidade NotificationCompat e assim é possível configurar o ícone (setSmallIcon()), o título da notificação (setContentTitle()), o conteúdo (setContentText) e a intent que será disparada ao clicar sobre a notificação (setContentIntent()):

NotificationCompat.Builder notificacao = new NotificationCompat.Builder(this);
notificacao.setSmallIcon(icone);
notificacao.setContentTitle(titulo);
notificacao.setContentText(texto);
notificacao.setContentIntent(p);

E para exibir a notificação para o usuário, precisamos de um gerenciador de notificações, no caso o NotificationManagerCompat, ele será responsável por exibir a notificação para o usuário através do notify() passando por parâmetro o id que identificará a notificação e a notificação criada anteriormente:

NotificationManagerCompat nm = NotificationManagerCompat.from(this);
nm.notify(id, notificacao.build());

Agora você já é capaz de implementar uma notificação no seu app. o/

Um abraço e até a próxima!

Criando um botão customizado no Android via XML

Ao adicionarmos um botão no layout pelo Android Studio ele fica com a seguinte aparência:

Mas não quer dizer que devemos utilizá-la em todos os botões do aplicativo. É possível modificá-la (tamanho, cor, borda, alinhamento etc) por meio de arquivos XML. Para entender melhor as propriedades que definem a aparência, vamos criar um botão como o da imagem abaixo:

Para isso, crie um novo arquivo do tipo Drawable Resource File. Basta clicar com o botão direito sobre a pasta drawable > New:

Depois basta definir o nome do arquivo que deseja criar:

Neste caso, criei o arquivo com o nome botao_customizado e implementei o seguinte código:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >

    <corners
        android:radius="5dp"
        />

    <solid
        android:color="@android:color/holo_red_light"
        />

    <stroke
        android:width="2dp"
        android:color="@android:color/background_dark"
        />
</shape>

Primeiro é montado um shape, que define a forma geométrica do botão, neste caso é um retângulo (android:shape="rectangle"). Está propriedade também aceita os valores line, oval e ring que definem outras geometrias para o botão.

No elemento <corners ... /> definimos a propriedade android:radius="..." para determinar o valor do arredondamento dos cantos do botão.

O elemento <solid... /> determina a cor de fundo do botão por meio da propriedade android:color="..."/>.

E por fim, o elemento <stroke ... /> define a espessura da borda (android:width="...") e a cor para a mesma (android:color="...").

Para que o botão passe a ter esse novo modelo, basta definir o arquivo criado na propriedade android:background="@drawable/botao_customizado" do botão.

Além dos elementos utilizados até agora, temos o elemento <gradient ... /> para definir o fundo do botão com cores formando um gradiente ao invés de utilizar uma cor sólida. Como neste exemplo:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >

    <corners
        android:radius="5dp"
        />

    <stroke
        android:width="2dp"
        android:color="@android:color/background_dark"
        />

    <gradient
        android:startColor="#fff"
        android:endColor="#363636"
        android:angle="45"
        android:centerColor="#FFA500"/>
</shape>

Neste elemento temos as propriedades android:startColor="...", android:endColor="..." e android:centerColor="..." para definir a cor inicial, final e central do gradiente, respectivamente. E também é utilizado a propriedade android:angle="..." que determina o ângulo do gradiente.

Com estes elementos e suas propriedades é possível criar uma infinidade de modelos diferentes para utilizar nos botões.

Para automatizar parte do processo de customização de um botão, é possível utilizar o site AngryTools que determina os valores da propriedade e ele vai te mostrando um preview do botão e ao finalizar ele gera os arquivos XML para utilizar. o/

Agora que você conhece um pouco sobre esta customização, faça diversos exemplos, modifique as propriedades e veja a diferença entre elas. Afinal, nada melhor que praticar para aprender!

Um abraço e até a próxima!

Saiba como se tornar um Desenvolvedor Mobile

Estamos vivendo uma realidade onde a maioria dos usuários acessam a internet através de um dispositivo móvel, ou mesmo onde bilionárias companhias nascem como um simples aplicativo. Têm se tornado importante que empresas disponibilizem um aplicativo para seus usuários. Até eventos sazonais ou únicos disponibilizam aplicativos, por saber que o usuário irá se interagir melhor dessa maneira.

Nunca se viu uma adoção tão rápida de tecnologia como a que ocorre com dispositivos móveis. Com isso, as demandas e exigências para o produto só vem aumentando com o passar do tempo. E como consequência, uma profissão que tem se destacado é a de desenvolvedor mobile.

É senso comum que o profissional de TI, no geral, é muito requisitado. Só que dentro desse grupo, o desenvolvedor mobile têm se destacado. Então, caso queira entrar na área de TI, esta pode ser uma boa porta de entrada.

Background

Antes de iniciar o estudo no desenvolvimento móvel, é importante ter um background amplo em relação a desenvolvimento. Um profissional que tenha uma visão da indústria como um todo terá mais vantagens do que um focado apenas em uma área.

Assim, antes de focar, aprimore os seus conhecimentos em:

  • Princípios de segurança e design de software;
  • Processos de desenvolvimento de softwares, incluindo o ciclo análise-desenvolvimento-teste-lançamento-manutenção;
  • Metodologias de desenvolvimento, como Ágil, Scrum, etc;
  • Saber uma ou mais linguagens de programação, preferencialmente linguagens que possuam mais demanda, como: SQL, Java, JavaScript, C#, C++, Python, PHP, Ruby e Swift;

Ah, claro, apesar de não ter relação direta com desenvolvimento, estudar inglês é muito importante. A maioria das documentações, tutorias e livros estarão nessa linguagem. Ter o inglês como segunda língua pode trazer vantagens até na hora de procurar um emprego.

Foco

Aprender a desenvolver um aplicativo móvel não é tão simples, assim, o ideal é focar em algo. Mas como fazer isso?

Há diversas opções para o desenvolvedor mobile, desde de plataformas, como: Android, iOS, Windows Mobile, Tizan, etc; até serviços que facilitam o desenvolvimento dos aplicativos, como: Appery.io, Appcelerator, AppInstitute, etc. Ainda assim as empresas costumam optar por aplicativos nativos dos dois maiores player’s da área: iOS e Android.

Desses dois, o que mais se destaca é o Android, devido ao seu grande market share. Em 2016, quase 90% dos smartphones ativos no mundo utilizavam este sistema.

O Android é uma ótima plataforma para se focar inicialmente e a sua curva de aprendizado não é muito acentuada. O futuro desenvolvedor precisará estudar a linguagem Java e a biblioteca da plataforma que, por sinal, é muito bem documentada. Estudar o NDK, que permite adicionar códigos nativos (escritos em C/C++) pode se tornar um diferencial.

Mesmo sendo tão competitivo quanto, o iOS tem uma desvantagem em relação ao Android: enquanto o segundo pode ser estudado utilizando qualquer tipo de computador, a Apple só disponibiliza as ferramentas do iOS para MacOS. Portanto, é preciso adquirir um dispositivo desta plataforma (e não é barato). Depois, o desenvolvedor pode optar por estudar as linguagens Swift e/ou Object-C. Ambas são suportadas pelo SDK do iOS. Devido a facilidade e “atualidade”, recomenda-se o estudo do Swift.

Também é importante citar a existência das aplicações híbridas, que são as criadas com base em uma biblioteca e que podem ser portadas para as principais plataformas móveis. Atualmente, as principais bibliotecas com esse tipo de suporte são: Cordova, Ionic e React Native. Neste caso, as aplicações são criadas utilizando tecnologias web, portanto, o desenvolvedor deverá focar os seus estudos em HTML5, CSS e JavaScript.

(O TreinaWeb disponibiliza diversos cursos relacionados às principais tecnologias web do momento.)

Persistência é tudo

Aprender algo novo não é simples. Poucas coisas irão mostrar algum resultado imediato, e por mais que em um minuto se consiga sair do “zero” a um “Hello World”, o estudo do desenvolvimento de um software (não importando a plataforma) requer tempo e dedicação.

É importante ter paciência, não se aprende a criar algo complexo da noite para o dia. Como um jogo de vídeo game, conforme se progride, mais se aprende, mais habilidades se obtêm, até estar preparado para derrotar o chefe final (ou criar a aplicação matadora, no nosso contexto).

Outro ponto importante é praticar. Quanto mais praticar, mais experiência você acumulará. É na prática que passamos por diversos erros e, com a busca de soluções, virá o conhecimento sobre quais são os melhores fóruns, sites, livros, etc; que irão nos auxiliar.

Mesmo que no início tudo pareça penoso e complicado, somente não desistindo que se conseguirá ver as coisas dando certo. Esse é um daqueles “clichês” bem verdadeiros, se levado a sério.

No TreinaWeb você encontra cursos completos de Java e também cursos completos relacionados ao desenvolvimento mobile.

Até a próxima!

Firebase: descubra no que esta plataforma pode te ajudar

O Firebase é uma plataforma do Google que contém várias ferramentas e uma excelente infraestrutura para ajudar desenvolvedores web e mobile a criar aplicações de alta qualidade e performance.

Esta plataforma contém quatro seguimentos de serviços: Analytics, Develop, Grow e Earn. Veja um pouco sobre cada um deles.

Analytics

O Firebase Analytics é uma solução gratuita e ilimitada, considerado o coração do Firebase, é utilizado para gerar as métricas da aplicação, mensurar o comportamento do usuário. Atualmente é disponibilizado para aplicações iOS e Android.

Develop

Com a missão de poupar tempo e fornecer um aplicativo de alta qualidade, esta plataforma contém vários recursos para os desenvolvedores, são eles:

  • Cloud Messaging: O Firebase Cloud Messaging – FCM permite a entrega/recebimento de mensagens e notificações entre as plataformas iOS, Android e Web.

  • Authentication: Este recurso de autenticação é fundamental para as aplicações onde é necessário saber a identidade do usuário e manter o controle do acesso ao app. Também, com o Firebase Authentication, é possível utilizar provedores de identidades federais para autenticação como as contas do Google, Facebook, Twitter e GitHub.

  • Realtime Database: O Firebase também disponibiliza um banco de dados NoSQL (Firebase Realtime Databse) hospedado em nuvem, onde os dados são armazenados como JSON e sincronizados em tempo real com todos os clientes conectados.

  • Storage: Útil para armazenar arquivos como imagens, vídeos e áudio, além de outros conteúdos gerados por usuários.

  • Hosting: Este serviço é oferecido para hospedar HTML, CSS e JavaScript para seu site, além de outros ativos fornecidos pelo desenvolvedor, como gráficos, fontes e ícones. O Firebase Hosting possui certificado SSL fornecido automaticamente, é ideal para aplicativos web e web para dispositivos móveis.

  • Remote Config: Armazena pares de chave-valor especificados pelo desenvolvedor que permite alterar o comportamento e a aparência do aplicativo sem exigir que os usuários baixem uma atualização do app.

  • Test Lab: O Firebase Test Lab fornece toda infraestrutura em nuvem que você precisa para testar seus aplicativos Android e mesmo que você não tenha escrito o código de teste para o app, o Test Lab pode operar no seu aplicativo automaticamente em busca de falhas. Todos os resultados do teste são disponibilizados no Firebase console.

  • Crash Reporting: Este recurso é capaz de criar relatórios de erro detalhados para os aplicativos Android e iOS. Os erros são agrupados em conjuntos e são organizados de acordo com a gravidade do impacto para os usuários. Até o momento está na versão beta e já demonstra ser um excelente aliado para os desenvolvedores.

Nem todos os recursos para desenvolvedores são disponibilizados em todas as plataformas (Android, iOS, web), para resumir, é possível ver no quadro abaixo a relação de Recurso x Plataforma:

Grow

Além de vários recursos para auxiliar no desenvolvimento das aplicações, o Firebase também disponibiliza recursos voltados ao envolvimento e conquista dos usuários para a aplicação, estes recursos são:

  • Notifications: Através deste recurso é possível gerenciar campanhas de notificações para seu app e quando integrado ao Firebase Analytics é possível entregar mensagens a um segmento específico de usuários.

  • App Indexing: Com o App Indexing você consegue aumentar a visibilidade do seu app em pesquisas do Google e do Now on Tap em dispositivos Android. E um recurso interessante é que os usuários ao buscarem um conteúdo relacionado eles poderão iniciar o aplicativo diretamente dos resultados de busca, se app estiver instalado no dispositivo, e caso não esteja, é exibido uma opção para instalação do aplicativo.

  • Invites: O Invites, é uma solução desenvolvida para indicações e compartilhamento de aplicativos. Permite que os usuários do app compartilhem o aplicativo ou o conteúdo por e-mail ou SMS.

  • AdWords: Este recurso vinculado ao Firebase Analytics permite que você mostre anúncios direcionados a segmentos de usuários, assim é possível otimizar o desempenho de sua campanha de forma eficaz.

Earn

Para lucrar com seus aplicativos através da exibição de anúncios, o Firebase disponibiliza o AdMob. Com ele é possível monetizar seus apps mobile com publicidade segmentada dentro do aplicativo e assim gerar receita sem prejudicar a experiência do usuário.

O Firebase fornece tudo que você precisa para desenvolver aplicações web e mobile, desde o desenvolvimento e testes até a publicação e divulgação do aplicativo. Para conhecer mais sobre ele, acesse Firebase.

Um abraço e até a próxima!

Como ativar a depuração USB no Android

Hoje uma dica rápida. A depuração USB é bastante conhecida pelos desenvolvedores por auxiliar no desenvolvimento de aplicativos. Através dela é possível testar as aplicações em um dispositivo real durante o desenvolvimento e assim dispensar o uso de emuladores.

Além disso, esse modo é utilizado para fazer root no aparelho, instalar uma nova ROM, etc.

Para ativar a depuração USB no Android é necessário ativar o modo desenvolvedor. Para ativá-lo, siga os seguintes passos:

  • Acessar o menu configurações e depois a opção Sobre o telefone (ou Sobre o dispositivo)

  • Na próxima tela, clique 7 vezes seguidas na opção Número da versão (ou Número de compilação) até que apareça a mensagem Você agora é um desenvolvedor.

  • Volte para a tela anterior e verá que o modo desenvolvedor estará ativo.

Agora que o modo desenvolvedor encontra-se ativo, é hora de habilitar a depuração USB. Para isso, acesse a opção Opções do desenvolvedor e ative a Depuração USB.

Até a próxima!

JUNTE-SE A MAIS DE 150.000 PROGRAMADORES