tag:blogger.com,1999:blog-26543926546214957022024-03-05T15:59:17.908-03:00AgorandroidBlog sobre programação Android, meu aprendizado passo-a-passo.A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.comBlogger185125tag:blogger.com,1999:blog-2654392654621495702.post-54998952456615768532016-06-30T13:55:00.000-03:002016-06-30T13:55:46.835-03:00N do Android N é NougatO nome da nova versão do Android será Nougat.<br />
<br />
<br />A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-66793540532311662562016-05-17T11:06:00.000-03:002016-05-17T11:06:43.673-03:00Impressões iniciais sobre o livro "Google Android", do Ricardo LechetaLivro: "Google Android, Aprenda a criar aplicações para dispositivos móveis com o Android SDK", 5ª edição.<br />
Autor: Ricardo R.Lecheta<br />
ISBN: 978-85-7522-468-7<br />
Páginas: 1072<br />
Ano: 2015<br />
<br />
Estou lendo o livro "Google Android", 5ª edição, já li mais de 400 páginas, então já dá para opinar sobre o livro.<br />
<br />
O livro continua muito bom. Continuo recomendando-o aos desenvolvedores Android.<br />
<br />
O ponto forte do livro é a sua utilidade como manual de referência de uso, tanto nos tópicos mais recentes da plataforma Android como em alguns já depreciados, mas ainda muitos utilizados.<br />
<br />
Alguns senões: algumas inconsistências entre os textos e os códigos, nada muito relevante. Também senti falta de um indice remissivo.<br />
<br />
Mas, por enquanto, estou gostando.<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com1tag:blogger.com,1999:blog-2654392654621495702.post-20325368313562498102016-04-07T14:40:00.002-03:002016-04-07T14:41:29.397-03:00Android Studio 2.0, liberadoAndroid Studio 2.0 foi liberado. Para mais informações, veja link abaixo.<br />
<br />
<a href="http://android-developers.blogspot.com.br/2016/04/android-studio-2-0.html" target="_blank">http://android-developers.blogspot.com.br/2016/04/android-studio-2-0.html</a>A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-86249247116624731132016-04-06T16:08:00.001-03:002016-04-06T16:08:40.443-03:00Leitura do livro Google Android, 5ª edição Acabo de receber o livro Google Android, de autoria do Ricardo Lecheta. Comprei ontem pela internet, entrega via Sedex.<br />
Não pretendo fazer uma leitura contínua, nem completa do livro, afinal são mais de mil páginas! Mas, assim que tiver condições de tecer alguma consideração sobre a leitura posto aqui.<br />
<br />
<br />A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-31034456205493915322016-03-22T11:20:00.001-03:002016-03-22T11:20:37.417-03:00Nome da nova versão do AndroidO meu favorito é Nutella, e se fosse um salgado, Noodles.<br />
<br />
Gostei da incorporação do Java 8, a evolução da linguagem era uma das minhas preocupações.<br />
<br />
Tem uma versão para desenvolvedores, chamada Developer Preview.<br />
<br />
<br />
<br />A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-43723745195899105102016-03-21T13:43:00.003-03:002016-03-21T13:43:40.996-03:00Livros, cultura geralEstou lendo os seguintes livros:<br />
- A lógica do Cisne Negro e Antifrágil,ambos do Nassim N. Taleb<br />
- Diários da Presidência - 1995-1996, do Fernando Henrique Cardoso.<br />
<br />
Leituras um tanto quanto "difíceis", o Taleb é um filósofo, discorre sobre incertezas, probabilidades e riscos; quanto ao FHC todos o conhecem.<br />
<br />
<br />A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-88317713066225168152016-03-16T09:04:00.001-03:002016-03-16T09:04:47.175-03:00Novo livro do R. Lecheta: Android Essencial<div style="border: 0px; box-sizing: border-box; color: #565656; font-family: 'helvetica neue', helvetica, arial, sans-serif; font-size: 12px; line-height: 1.8; margin-bottom: 1em; max-width: 100%; outline: 0px; padding: 0px;">
A Novatec acaba de lançar um novo livro do Ricardo Lecheta: Android Essencial.</div>
<div style="border: 0px; box-sizing: border-box; font-family: 'helvetica neue', helvetica, arial, sans-serif; font-size: 12px; margin-bottom: 1em; max-width: 100%; outline: 0px; padding: 0px;">
<span style="color: #565656; line-height: 1.8;"> O livro é um resumo do livro Google Android </span><strong style="box-sizing: border-box; line-height: 19.6364px; max-width: 100%;"><span style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; box-sizing: border-box; margin: 0px; max-width: 100%; outline: 0px; padding: 0px;"><span style="box-sizing: border-box; max-width: 100%;">5ª</span></span></strong><span style="color: #565656; line-height: 1.8;"> edição, do mesmo autor.</span></div>
<div style="border: 0px; box-sizing: border-box; font-family: 'helvetica neue', helvetica, arial, sans-serif; font-size: 12px; margin-bottom: 1em; max-width: 100%; outline: 0px; padding: 0px;">
<span style="color: #565656; line-height: 1.8;"> Ele é indicado para quem está iniciando na programação Android e/ou necessita ter um conhecimento básico para iniciar pequenos projetos imediatamente.</span></div>
<div style="border: 0px; box-sizing: border-box; font-family: 'helvetica neue', helvetica, arial, sans-serif; font-size: 12px; margin-bottom: 1em; max-width: 100%; outline: 0px; padding: 0px;">
<br /></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-65448249163250393722016-01-17T16:00:00.005-02:002016-01-17T16:02:58.968-02:00O Sistema Cantareira quitou o último saldo do volume morto A última represa do Sistema Cantareira, que ainda estava com saldo devedor, Jaguari/Jacareí acaba de sair do volume morto (índice 3 = 1,4%) nesse domingo, 17/01/2016.<br />
A partir desse ponto o sistema pode operar completamente em todas as suas represas sem o auxílio das bombas.<br />
<br />A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-47635116939594780652016-01-06T14:53:00.001-02:002016-01-08T09:15:38.698-02:00Explicando porque ainda não saímos do volume morto no Sistema Cantareira, São Paulo. Confesso que estou profundamente (mal) impressionado com a quase unanimidade que o evento da saída do volume morto do Sistema Cantareira tem sido noticiado. Quase, porque, além da minha opinião postada aqui no blog Agorandroid, somente tomei conhecimento de um artigo do ex-professor da USP, Fernando Reinach, publicado no Estadão. Impressionante que, para ilustrar as matérias em que relatam a saída do volume morto, frequentemente colocam fotos das bombas retirando água do volume morto!<br />
<br />
Essa confusão está ocorrendo pela interpretação equivocada do índice 3, publicado diariamente pela Sabesp. O índice tinha como objetivo informar que estávamos abaixo do nível normal, daí estar negativo. O erro foi cometido quando o índice se tornou positivo, e todo mundo associou esse evento com a saída do volume morto. O problema é que esse índice não tem a capacidade de informar esse fato, o que ele informa é se estamos no volume morto (quando negativo) ou se temos condições dele sair (quando positivo), não se já saímos. Uma diferença sutil, que passou despercebida.<br />
<br />
Para não ter confusão, precisamos definir claramente o que entendemos por entrar ou sair do volume morto no Sistema Cantareira. A melhor definição é: entramos no volume morto quando precisamos do auxílio de bombas para captar água de uma represa, e saímos do volume morto quando a água é captada por gravidade em todas as represas do sistema.<br />
<br />
Pelo critério acima, ainda estamos no volume morto, porque a represa Jaguari/Jacareí ainda precisa das bombas para captar água (seu índice 3 está negativo).<br />
<br />
Notem que se usarmos o critério do índice 3 positivo para indicar que não estamos no volume morto, não teríamos entrado no volume morto no dia 16/05/2014, já que, nesse dia, esse índice estava em 8,2% positivo! O que seria um absurdo, já que a Sabesp informa que ligou as bombas justamente nesse dia....<br />
<br />
Para explicar melhor esse conceito, vamos usar o exemplo do saldo bancário, se você tiver uma unica conta, o saldo dessa conta vai indicar se está devedor ou credor, mas se você tiver mais de uma conta, vai necessitar de um saldo consolidado (a somatória dos saldos de cada conta), e se este saldo consolidado estiver negativo, vai indicar que a somatória dos saldos negativos é maior que a somatória dos saldos positivos, e que pelo menos uma das contas estará com saldo devedor, um saldo positivo vai indicar o oposto, mas não garante que alguma conta não esteja com saldo devedor ou que todas as contas estejam positivas.<br />
<br />
O índice 3 é o equivalente ao saldo consolidado, daí estar positivo não garante que o Sistema Cantareira esteja fora do volume morto e como temos uma represa com saldo negativo, podemos afirmar que ainda estamos no volume morto.<br />
<br />
<br />
PS: Antes que venham politizar o assunto, informo que esse é um artigo técnico, baseado em números e fatos e que não é um ataque à Sabesp, que considero que tem feito um bom trabalho no gerenciamento da crise hídrica.<br />
<br />
PS2: Após escrever esse artigo, vi que saiu o mesmo assunto no UOL - notícias - Cotidiano.<br />
<br />
PS3: Comemoração antecipada traz consigo o aumento do consumo, que já seria maior no verão.<br />
<div>
<br /></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-87326578212061249582015-12-31T15:05:00.001-02:002015-12-31T15:05:11.366-02:00Cantareira, ainda não saímos do volume morto Diante de tantas comemorações acerca da tão esperada recuperação do cantareira, resolvi expor minha opinião sobre esse fato, contrariando a maioria, minha opinião é que ainda não saímos do volume morto.<br />
Antes da gritaria geral, deixe-me explicar: o cantareira não é uma represa, é um conjunto de represas, nesse sentido, um sistema entra no volume morto quando a primeira represa desse sistema começa a usar a reserva apelando para as bombas, e sairá quando a última represa deixar de necessitar delas (as bombas) para fornecer água ao sistema. Vejam que a represa Jaguari/Jacareí ainda está em -7,7%, faltando pouco mais de 60 bilhões de litros para sair do volume morto (dados de 31/12/2015).<br />
Então uma pergunta a se fazer é por quê tanta gente acha que saímos do volume morto? A resposta é que nenhum dos três índices divulgados pela Sabesp serve para informar se o sistema cantareira esteja operando fora do volume morto. Todos eles são índices consolidados do sistema, para sabermos sobre a saída do volume morto devemos consultar os índices de cada represa do sistema.<br />
Outra pergunta a ser respondida: por quê esse assunto num blog de programação? Essa é mais fácil de responder: é um exemplo sobre a diferença entre dados e informações e, claro, interpretação dos dados.<br />
<br />
Abraços.<br />
<br />
PS: Feliz ano novo!<br />
<div>
<br /></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-44254630374446634142015-12-05T04:38:00.004-02:002015-12-05T11:46:59.367-02:00Nova versão do app CalcMat, calculadora de materiais para concreto Fiz uma alteração no app CalcMat, calculadora de materiais para concreto.<br />
<div>
<br /></div>
<div>
Aqui o link com as alterações: <a href="http://ahgusukuma.blogspot.com.br/2015/12/nova-versao-da-calculadora-de-materiais.html">http://ahgusukuma.blogspot.com.br/2015/12/nova-versao-da-calculadora-de-materiais.html</a></div>
<div>
<br />
<a href="https://play.google.com/store/apps/details?id=br.com.ahgusukuma.calcmat&hl=pt-BR" target="_blank">Link Google Play</a><br />
<br /></div>
<div>
Comentários são sempre bem-vindos.</div>
<div>
<br /></div>
<div>
Abraço.</div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-23035765195175636542015-10-24T09:52:00.000-02:002015-10-24T09:52:34.975-02:00Android básico: testando Fragments, transactions e backStack O principal objetivo desse exemplo é testar o uso de transações com fragments, incluindo o backStack e aproveitando a oportunidade, mostrar o comportamento da activity (com fragment) quando ela for destruída e recriada.<br />
Esse app tem apenas uma activity e um fragment e funciona assim: tem um botão (Next Frag) que ao ser tocado vai solicitar à activity um novo fragment.<br />
Apesar da simplicidade, podemos fazer diversos experimentos:<br />
Primeiro, ao fazer o teste, notamos que a contagem vai de um em um (1, 2, 3, ...). Se virarmos o celular, a activity vai ser destruída e recriada, mas a tela é reconstruída como estava na última posição.<br />
Segundo, ao retirar a linha que está comentada com a letra A (o return), o que acontece ao realizar o teste? Isso se deve ao fato de que estamos criando uma nova instância do fragment (com o novo count) e substituindo a anterior. Não é esse o comportamento esperado, então vamos deixar o return no seu devido lugar.<br />
Terceiro, ao retirar o comentário da linha com a letra B, vamos testar o funcionamento da pilha de fragments, para isso basta teclar diversas vezes no botão "Next Frag" e em seguida no "Voltar", os framents são salvos e recuperados com o "Voltar".<br />
<br />
Seguem os códigos.<br />
<br />
MainActivity.java<br />
<br />
<textarea cols="65" rows="25" style="background-color: #eeeeee; color: black;" wrap="hard">package br.com.agorandroid.testefragment;
import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
public class MainActivity extends Activity {
int count1 = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
count1 = savedInstanceState.getInt("count", 0);
return;
}
Fragment newFragment = new Fragment1();
Bundle args = new Bundle();
args.putInt("count", ++count1);
newFragment.setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container1, newFragment);
transaction.commit();
}
public void nextFragment() {
Fragment newFragment = new Fragment1();
Bundle args = new Bundle();
args.putInt("count", ++count1);
newFragment.setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container1, newFragment);
transaction.addToBackStack(null);
transaction.commit();
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt("count", count1);
super.onSaveInstanceState(outState);
}
}
</textarea><br />
<br />
<br />
Fragment1.java<br />
<br />
<textarea cols="65" rows="25" style="background-color: #eeeeee; color: black;" wrap="hard">package br.com.agorandroid.testefragment;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
public class Fragment1 extends Fragment {
int count;
Activity hostActivity;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
hostActivity = (MainActivity) activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
TextView titulo = (TextView) view.findViewById(R.id.titulo);
count = getArguments().getInt("count", 0);
titulo.setText("Fragment n = " + count);
Button btNextFrag = (Button) view.findViewById(R.id.nextfrag);
btNextFrag.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
((MainActivity) hostActivity).nextFragment();
}
});
return view;
}
}
</textarea>
<br />
<br />
<br />
activity_main.xml
<br />
<br />
<textarea cols="65" rows="15" style="background-color: lightblue; color: black;" wrap="hard"><?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:baselineAligned="false"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:id="@+id/fragment_container1"
>
</LinearLayout>
</textarea>
<br />
<br />
<br />
fragment1.xml
<br />
<br />
<textarea cols="65" rows="15" style="background-color: lightblue; color: black;" wrap="hard"><?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/titulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:textSize="32sp" />
<Button
android:id="@+id/nextfrag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Next Frag" />
</LinearLayout>
</textarea>
<br />
<br />
<br />
Uma observação final, a forma como chamei o método da activity não é o recomendado, o ideal é via uma interface, mas como, nesse caso, só temos uma activity é aceitável.<br />
<br />
Abraços!A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-85413856225338553232015-10-13T20:53:00.002-03:002015-10-13T20:53:51.911-03:00TIOBE index, outubro Pouca novidade no índice de outubro. Apenas a saída da linguagem Objective-C do top10, sendo substituída pela linguagem Ruby.<br />
Parece uma distorção do método para capturar como estão reportando sobre as linguagens de programação da Apple, afinal Objective-C + Swift com menos de 3% soa meio estranho, não é? Lembro que há um ano Objective-C ocupava a terceira posição e como a Apple continua muito bem, deve ter um erro aí.<br />
Vamos acompanhar os próximos índices.<br />
<br />
Abraços.<br />
<br />A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-8831009667946376472015-09-22T09:51:00.001-03:002015-09-22T09:51:38.946-03:00TIOBE Index, em setembro Java na frente A linguagem Java aparece em primeiro no Índice TIOBE de setembro, com 19,565%, quase 4 pontos acima da segunda linguagem, C.<br />
<br />
O que chama atenção, é o crescimento brutal da linguagem Java, +5,43%, e da queda da Objetive-C, essa já esperada após o lançamento da Swift pela Apple. Outra, que chama atenção, é a linguagem Python logo após as quatro "grandes" (Java, C, C++ e C#).<br />
<br />
O algoritmo de cálculo do índice foi alterado, a partir desse índice de setembro, para eliminar picos. <br />
<br />
Abraços.<br />
<br />
<br />A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-67572809007142083952015-08-18T21:21:00.000-03:002015-08-18T21:21:52.479-03:00Android básico: a classe Handler A classe Handler é extensamente utilizada nas aplicações Android, nem precisa lembrar que entender e saber utilizá-la é fundamental.<br />
<br />
Segue uma tradução livre da documentação do Android:<br />
<br />
<div style="text-align: left;">
"A classe Handler permite que você envie e processe mensagens (Messages) e objetos executáveis (Runnables) associados com a fila de mensagens (MessageQueue) da thread. Cada instância do Handler está associada a uma única thread e à sua fila de mensagens. Quando você cria um novo Handler, ele é associado à fila de mensagens da thread onde está sendo instanciado - a partir desse ponto, ele vai enviar mensagens e Runnables para a fila de mensagens e executá-los quando eles forem retirados da fila de mensagens.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Existem dois principais usos para um Handler: (1) para agendar mensagens e runnables para serem executados em algum momento no futuro; e (2) para enfileirar uma ação a ser executada em uma thread diferente da thread em execução.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
O agendamento de mensagens é realizado com os métodos post(Runnable), postAtTime(Runnable, long), postDelayed(Runnable, long), sendEmptyMessage(int), sendMessage(Message), sendMessageAtTime(Message, long), e sendMessageDelayed(Message, long). As versões "post" permitem que você enfileire objetos executáveis a serem chamados pela fila de mensagens em que eles são recebidos; as versões "sendMessage" permitem que você enfileire um objeto Message contendo um conjunto de dados que serão processados pelo método handleMessage(Message) do Handler (o que exige que você implemente uma subclasse do Handler).</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Ao usar "post" ou "send" para um Handler, você pode permitir que o item possa ser processado assim que a fila de mensagens esteja pronto para fazê-lo, ou especifique um atraso antes que seja processado ou horário específico para que possa ser processado. As duas últimas opções permitem implementar timeouts, ticks, e outros comportamentos baseados em tempo.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Quando um processo é criado para a sua aplicação, sua thread principal é dedicada à execução de uma fila de mensagens que cuida da gestão dos objetos de nível superior da aplicação (activities, broadcast receivers, etc.) e quaisquer janelas que criarem. Você pode criar suas próprias threads, e comunicar com a main-thread do aplicativo através de um objeto Handler. Isso é feito chamando o mesmo método "post" ou "sendMessage" como antes, mas a partir de sua nova thread. O Runnable ou Message então será agendado na fila de mensagens do Handler e processados quando apropriado."</div>
<div style="text-align: left;">
<br /></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-70067156408271483232015-08-17T16:48:00.001-03:002015-08-17T16:49:04.136-03:00O Android 6.0 é MarshmallowO novo Android é M de Marshmallow: <a href="http://android-developers.blogspot.com.br/2015/08/m-developer-preview-3-final-sdk.html">http://android-developers.blogspot.com.br/2015/08/m-developer-preview-3-final-sdk.html</a>A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-9687770192950122802015-07-08T14:52:00.000-03:002015-07-08T14:52:02.925-03:00Impressões sobre a leitura do livro Jogos Android da Casa do CódigoLivro: "Jogos Android: Crie um game do zero usando classes nativas"<br />
Autor: Felipe Torres<br />
Editora: Casa do Código<br />
Número de paginas: 151<br />
<br />
Livro introdutório à programação de jogos para o Android, usando apenas os recursos da API nativa, mostrando como fazer um jogo no estilo "Flappy Bird". Usando recursos como: SurfaceView, main loop, elementos do jogo, background, obstáculos, movimentação, pontuação, colisão, encerramento, imagens e sons.<br />
<br />
Gostei muito da leitura, que se faz em apenas algumas horas.<br />
<br />
Como sugestão: seria interessante disponibilizar os fontes para download.<br />
<br />
Abraços.<br />
<div>
<br /></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com3tag:blogger.com,1999:blog-2654392654621495702.post-45036822686509424262015-06-18T09:01:00.000-03:002015-06-18T09:01:01.792-03:00Google Apps for Work<div style="text-align: justify;">
<span style="color: #444444; font-family: Open Sans, Arial, sans-serif;"><span style="font-size: 15px; line-height: 15.4000005722046px;"> O Google Apps for Work oferece às empresas as ferramentas necessárias para realizar mais tarefas com recursos de e-mail profissional(Gmail), armazenamento on-line(Drive), agendas compartilhadas(Agenda), reuniões por vídeo(Hangouts) e muito mais.</span></span></div>
<div style="text-align: justify;">
<span style="color: #444444; font-family: Open Sans, Arial, sans-serif;"><span style="font-size: 15px; line-height: 15.4000005722046px;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="color: #444444; font-family: Open Sans, Arial, sans-serif;"><span style="font-size: 15px; line-height: 15.4000005722046px;"> Vale a pena avaliar.</span></span></div>
<div style="text-align: justify;">
<span style="color: #444444; font-family: Open Sans, Arial, sans-serif;"><span style="font-size: 15px; line-height: 15.4000005722046px;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="color: #444444; font-family: Open Sans, Arial, sans-serif;"><span style="font-size: 15px; line-height: 15.4000005722046px;"> Link para testes: <a href="https://goo.gl/9SI9TV">https://goo.gl/9SI9TV</a></span></span></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-80378943888055362982015-06-09T00:17:00.003-03:002015-06-09T00:17:52.253-03:00Android básico: passando parâmetros Na maioria das vezes que iniciamos uma outra activity temos que passar algum dado, para isso usamos algum método putExtra da classe Intent. No exemplo abaixo, estamos passando um String, mas podemos passar qualquer tipo primitivo, objetos cujas classes implementem Serializable ou Parcelable. Veja outras opções suportadas na documentação.<br />
<br />
na MainActivity:<br />
<br />
<textarea cols="65" rows="12" style="background-color: #eeeeee; color: black;" wrap="hard">public final static String MY_MESSAGE =
"br.com.companyname.myappname.MESSAGE";
.
.
.
EditText editText = (EditText) findViewById(R.id.message);
String message = editText.getText().toString();
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra(MY_MESSAGE, message);
startActivity(intent);
</textarea><br />
<br />
Recuperamos o dado dessa forma na NextActivity:<br />
<br />
<textarea cols="65" rows="6" style="background-color: #eeeeee; color: black;" wrap="hard"> // acessa a mensagem recebida na intent
Intent intent = getIntent();
String message =
intent.getStringExtra(MainActivity.MY_MESSAGE);
</textarea><br />
<br />
No exemplo estamos usando o getStringExtra, mas também temos os métodos: getBooleanExtra, getIntExtra, getDoubleExtra, getSerializableExtra, getParcelableExtra, etc.<br />
Notem que podemos passar mais de um parâmetro, basta definir um nome que será usado como chave (key) e o valor (value) associado.<br />
<br />
Abraços!<br />
<br />A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-67245954081169947772015-06-03T11:40:00.001-03:002015-06-20T19:49:10.284-03:00Dica: Materiais para estudar Android Segue uma lista bem sintética dos recursos que recomendo para estudar Android, sitei apenas livros em português, de autores que conheço. O livro do Lecheta ainda está para ser lançado, a indicação vai na cota da confiabilidade que alcançou com as edições anteriores.<br />
<br />
Livros:<br />
<br />
- Dominando o Android - Do Básico ao Avançado, Nelson Glauber, Novatec<br />
<br />
- Google Android: crie aplicações para celulares e tablets, João Bosco Monteiro, Casa do Código<br />
<br />
- Google Android - 4ª Edição, Ricardo R. Lecheta, Novatec *<br />
* em vias de ser lançado<br />
<br />
<br />
Aqui tem quase tudo sobre o Android:<br />
<br />
<a href="http://developer.android.com/develop/index.html">Site oficial do Android</a><br />
<br />
Abas principais: Training, API Guides e Reference<br />
<br />
<br />
Sites onde tirar dúvidas:<br />
<br />
<a href="http://www.guj.com.br/">Guj Perguntas/Respostas</a><br />
<br />
<a href="http://www.portalandroid.org/">Portal Android</a><br />
<br />
<a href="http://stackoverflow.com/">Stack Overflow </a><br />
<br />
<br />
Tem muito material em vídeo.<br />
<br />
É isso.<br />
<br />
Abraços<br />
<br />
PS: o livro do R. Lecheta já está disponível.<br />
<div>
<br /></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com1tag:blogger.com,1999:blog-2654392654621495702.post-66315861338972867422015-05-28T14:42:00.000-03:002015-05-28T14:42:05.529-03:00Google anuncia o Projeto Brillo, para IoT, um subset do Android<span style="background-color: white; color: #292f33; font-family: Arial, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;">A Google acaba de anunciar o Projeto Brillo, um sistema operacional para a internet das coisas (</span><span style="color: #292f33; font-family: Arial, sans-serif;"><span style="font-size: 14px; line-height: 18px; white-space: pre-wrap;">Internet of Things = </span></span><span style="background-color: white; color: #292f33; font-family: Arial, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;">IoT) derivado do sistema Android.</span><br />
<span style="background-color: white; color: #292f33; font-family: Arial, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;"><br /></span>
<span style="background-color: white; color: #292f33; font-family: Arial, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;">Promete.</span><br />
<span style="background-color: white; color: #292f33; font-family: Arial, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;">Vamos esperar!</span><br />
<span style="background-color: white; color: #292f33; font-family: Arial, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;"><br /></span>
<span style="background-color: white; color: #292f33; font-family: Arial, sans-serif; font-size: 14px; line-height: 18px; white-space: pre-wrap;">Abraços </span>A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-46203910252091329002015-05-28T09:50:00.000-03:002015-05-28T09:50:00.751-03:00Dica: materiais para estudar Java Para os que estão interessados em aprendar Java, para quem sabe posteriormente desenvolver para Android, segue algumas dicas de materiais interessantes:<br />
<br />
Livros:<br />
<br />
- Use a cabeça! Java, da Kathy Sierra, uma forma divertida de aprender.<br />
<br />
- Java Como Programar - Paul Deitel, Harvey Deitel, bem detalhado, quase 1200 páginas.<br />
<br />
- Effective Java , do Joshua Bloch - livro fundamental de dicas e boas práticas.<br />
<br />
- Java Concurrency in Practice , do Brian Goetz - conceitos essenciais sobre concorrência.<br />
<br />
- Use a cabeça! Padrões de Projeto, Freeman, Elisabeth; Freeman, Eric - Design Patterns.<br />
<br />
<br />
Apostilas:<br />
<br />
- Caelum: Apostila do curso FJ-11 - Java e Orientação a Objetos<br />
<br />
- Caelum: Apostila do curso CS-14 - Algoritmos e Estruturas de Dados com Java<br />
<br />
- K19: K11 - Orientação a Objetos em Java<br />
<br />
- K19: K51 - Design Patterns em Java<br />
<br />
<br />
Tutoriais da Oracle: <a href="https://docs.oracle.com/javase/tutorial/index.html">https://docs.oracle.com/javase/tutorial/index.html</a><br />
<br />
Essas trilhas básicas (em Trails Covering the Basics):<br />
<br />
- Learning the Java Language — Lições que descrevem os conceitos essenciais e as características da linguagem de programação Java.<br />
<br />
- Essential Java Classes — Lições sobre exceções, Input / Output básico, concorrência, expressões regulares, e o ambiente de plataforma.<br />
<br />
- Collections — Lições sobre o uso e a estensão da framework Collections do Java.<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
Vídeos - tem muito material no YouTube.</div>
<div>
<br /></div>
<div>
Espero que seja útil!</div>
<div>
<br /></div>
<div>
Abraços</div>
<div>
<br /></div>
<div>
PS: Estou preparando outro post para os materiais do Android.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com2tag:blogger.com,1999:blog-2654392654621495702.post-22178495567688666312015-05-25T19:24:00.002-03:002015-05-25T19:35:50.605-03:00Convertendo o encoding de arquivos Às vezes recebemos um arquivo gravado num formato e precisamos converter para outro, por exemplo no Android o default é "UTF-8".<br />
Abaixo segue um exemplo que converte um arquivo em "Cp1252" para "UTF-8".<br />
<br />
<br />
<textarea cols="65" rows="35" style="background-color: #eeeeee; color: black;" wrap="hard">import java.util.*;
import java.io.*;
class converte {
public static void main(String[] args) {
try {
convertFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void convertFile() throws IOException {
String fileInput = "textobn.txt"; // nome do arquivo a ser convertido
String fileOutput = textoc.txt"; // nome do arquivo convertido
BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream(fileInput), "Cp1252")); // encoding "Cp1252"
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(fileOutput), "UTF-8")); // encoding "UTF-8"
String NL = "\n";
String newLine = "";
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
out.write(newLine + line);
newLine = NL;
}
in.close();
out.close();
}
}
</textarea>
<br />
<br />
<br />
Abraço.A H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com2tag:blogger.com,1999:blog-2654392654621495702.post-56474386480717247692015-05-21T16:14:00.003-03:002015-05-21T16:14:32.432-03:00Crescimento do Android Desta vez não estou me referindo ao número de dispositivos rodando com o sistema Android, mas sobre o aumento do tamanho do android.jar, vejam a tabela abaixo:<br />
<br />
<textarea cols="65" rows="19" style="background-color: lightblue; color: black;" wrap="hard">API android.jar
3 3,0 MB
4 3,1 MB
7 4,9 MB
8 5,2 MB
9 8,0 MB
10 9,5 MB
11 12,2 MB
12 12,4 MB
13 12,8 MB
15 16,4 MB
16 17,5 MB
17 18,2 MB
18 18,5 MB
19 20,8 MB
20 20,3 MB
21 24,6 MB
22 24,8 MB
</textarea><br />
<br />
Aumentou mais de 8 vezes da API 3 para a 22!<br />
<br />
AbraçosA H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0tag:blogger.com,1999:blog-2654392654621495702.post-74689964436856584692015-04-18T15:46:00.004-03:002015-04-18T15:46:56.346-03:00Dica: vídeos da série Android Performance Patterns Traduzindo do canal do YouTube:<br />
<blockquote class="tr_bq">
<blockquote class="tr_bq">
"Android Performance Patterns - Padrões de Desempenho Android é uma coleção de vídeos voltados inteiramente para ajudar os desenvolvedores a escrever aplicativos Android mais rápidos, de maior performance. Por um lado, trata-se de retirar as camadas do sistema Android, e expondo como as coisas estão a trabalhar sob a "cobertura". Por outro lado, trata-se de ensinar-lhe como as ferramentas trabalham, e o que procurar, a fim de extrair a performance certa do seu app.</blockquote>
<blockquote class="tr_bq">
Mas no final do dia, Padrões de Desempenho Android está dando-lhe os recursos certos, na hora certa para ajudar a fazer o mais rápido, mais suave, mais incrível experiência para os seus usuários. E esse é o ponto, certo?"</blockquote>
</blockquote>
<br />
Certo!<br />
<br />
Segue o link: <a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">Android Performance Patterns</a><br />
<br />
AbraçosA H Gusukumahttp://www.blogger.com/profile/14297087396057410307noreply@blogger.com0