<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oraculum Blog</title>
	<atom:link href="http://oraculum.blog.br/blogoraculum/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://oraculum.blog.br/blogoraculum</link>
	<description>Um blog que tem de tudo !</description>
	<lastBuildDate>Sun, 15 Apr 2012 13:02:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Enviar comandos para o Virtual Device do Android</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/04/15/enviar-comandos-para-o-virtual-device-do-android/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/04/15/enviar-comandos-para-o-virtual-device-do-android/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 10:02:53 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[Android SDK]]></category>
		<category><![CDATA[Frameworks / DBAs]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[gps]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1549</guid>
		<description><![CDATA[Se você quiser saber como trabalhar com GPS no android veja esse artigo pode lhe ajudar um pouco. Se estiver usando linux ou mac existe uma outra maneira de enviar comandos de GeoLocation ou Chamadas para a Android Virtual Device: 1 &#8211; Posicione-se na pasta onde está instalado o seu SDK no meu caso é [...]]]></description>
			<content:encoded><![CDATA[<p>Se você quiser saber como trabalhar com GPS no android veja <a href="http://luiztools.com/post/Utilizando-o-recurso-de-GPS-em-uma-app-Android.aspx" target="_blank">esse artigo</a> pode lhe ajudar um pouco.</p>
<p>Se estiver usando linux ou mac existe uma outra maneira de enviar comandos de GeoLocation ou Chamadas para a Android Virtual Device:</p>
<p>1 &#8211; Posicione-se na pasta onde está instalado o seu SDK no meu caso é em:</p>
<p><strong>/opt/android-sdk/platform-tools</strong></p>
<p>2 &#8211; Dentro da pasta faça: <strong>./adb devices</strong><br />
ele irá retornar algo como<br />
<em>List of devices attached<br />
emulator-5554	device</em></p>
<p>3 &#8211; O passo 1 e 2 são opcionais para pegar a porta que o Virtual Device está escutando. Agora vamos conectar via Telnet no emulador: <strong>telnet localhost 5554</strong></p>
<p>4 &#8211; Agora é só você rodar os comandos que precisar:</p>
<pre>
# colocar bateria no máximo
power status full
power status charging
# fazer uma chamada para o emulador
gsm call 012041293123
# enviar um sms para o emulador
sms send 12345 Will be home soon
# set a localização do gps do emulador
geo fix 48 51
</pre>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/04/15/enviar-comandos-para-o-virtual-device-do-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fazendo a formula de PGTO do excell em Javascript e Csharp</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/04/09/fazendo-a-formula-de-pgto-do-excell-em-javascript-e-csharp/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/04/09/fazendo-a-formula-de-pgto-do-excell-em-javascript-e-csharp/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 02:12:46 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Frameworks / DBAs]]></category>
		<category><![CDATA[node.JS]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[pgto]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1485</guid>
		<description><![CDATA[Para os que não sabem o que é a formula PGTO segue um link bem explicativo. Resumindo é uma formula onde calcula-se o valor da parcela com juros em um financiamento, muito usado para calculo de financiamento de veículos, casas, etcsss&#8230; &#160; A formula pode ser aplicada usando o seguinte: &#160; Formula Matemática: x=C*((1+i)^n)/ somatoria [...]]]></description>
			<content:encoded><![CDATA[<p>Para os que não sabem o que é a formula PGTO segue um <a href="http://br.answers.yahoo.com/question/index?qid=20100404094735AAEdRO6" target="_blank">link</a> bem explicativo. Resumindo é uma formula onde calcula-se o valor da parcela com juros em um financiamento, muito usado para calculo de financiamento de veículos, casas, etcsss&#8230;</p>
<p>&nbsp;</p>
<p>A formula pode ser aplicada usando o seguinte:</p>
<p>&nbsp;</p>
<p>Formula Matemática: x=C*((1+i)^n)/ somatoria de (1+i)^k para k=0 ate k= n-1 .</p>
<p>&nbsp;<br />
<script src="https://gist.github.com/2347921.js"> </script><br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/04/09/fazendo-a-formula-de-pgto-do-excell-em-javascript-e-csharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu: Gradiator css3 para linux</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/04/07/ubuntu-gradiator-css3-para-linux/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/04/07/ubuntu-gradiator-css3-para-linux/#comments</comments>
		<pubDate>Sat, 07 Apr 2012 22:11:10 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[Atualidade]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[softwares]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1480</guid>
		<description><![CDATA[Gradiator é um aplicativo gradiente CSS3 para Linux. Na verdade, de acordo com seus desenvolvedores, é a aplicação de gradiente CSS3 disponível só para Linux. &#160; O aplicativo vem com um controle deslizante ajustável para gradiente / posição; uma cor roda para configurar as cores do gradiente, e uma maneira fácil de definir a direção [...]]]></description>
			<content:encoded><![CDATA[<p><em>Gradiator</em> é um aplicativo gradiente CSS3 para Linux. Na verdade, de acordo com seus desenvolvedores, é a aplicação de gradiente<em></em> CSS3 disponível só para Linux.</p>
<div id="attachment_1481" class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/ss.png" rel="fancybox-gallery"><img class="size-medium wp-image-1481" title="Gradiator" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/ss-300x172.png" alt="Gradiator" width="300" height="172" /></a><p class="wp-caption-text">Gradiator</p></div>
<p>&nbsp;</p>
<p>O aplicativo vem com um <strong>controle deslizante ajustável</strong> para gradiente / posição; uma <strong>cor roda para</strong> configurar as cores do gradiente, e uma maneira fácil de <strong>definir a direção do gradiente.</strong></p>
<p>&nbsp;</p>
<p>Quando estiver satisfeito com o seu gradiente você pode bater no botão &#8216;G<em>et Code&#8217;</em> para que o <strong>CSS copiados para o clipboard</strong> prontos para serem colados.</p>
<h3><span id="more-1480"></span></h3>
<h3>Baixar</h3>
<p>Como a maioria das coisas na vida <em>Gradiator</em> está disponível para instalar no Ubuntu através de um PPA (embora esta aplicação está gritando para ser adicionado ao Ubuntu Software Center).</p>
<p>O PPA prevê apenas pacotes para o Ubuntu 11.10, mas uma tarball está disponível para usuários de outras distro.</p>
<p>Para instalar abra o terminal e digite os dois comandos a seguir com atenção:</p>
<ul>
<li><em>sudo add-apt-repository <strong>ppa:cooperjona/gradiator</strong></em></li>
<li><em>sudo apt-get update<br />
</em></li>
<li><em>sudo apt-get install gradiator</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/04/07/ubuntu-gradiator-css3-para-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iphone: Gerenciar metas com Trakr</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/04/06/iphone-gerenciar-metas-com-trakr/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/04/06/iphone-gerenciar-metas-com-trakr/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 20:59:06 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[Artigos de Destaque]]></category>
		<category><![CDATA[Iphone]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[metas]]></category>
		<category><![CDATA[trakr]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1470</guid>
		<description><![CDATA[Trakr é um aplicativo elegante e simples na qual você pode acompanhar, bem, qualquer coisa que você pode contar &#8211; livros que você leu, bolos você assados, páginas que você escreveu, minutos de treino você já registrados, e assim por diante. Além disso, você pode definir metas numéricas para si mesmo (talvez você queira correr [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://itunes.apple.com/us/app/trakr/id503411063?mt=8&amp;ign-mpt=uo%3D4http://" target="_blank">Trakr</a> é um aplicativo elegante e simples na qual você pode acompanhar, bem, qualquer coisa que você pode contar &#8211; livros que você leu, bolos você assados, páginas que você escreveu, minutos de treino você já registrados, e assim por diante. Além disso, você pode definir metas numéricas para si mesmo (talvez você queira correr 100 quilômetros), visualizar a sua história e do progresso, sincronia com iCloud e até mesmo exportar seus dados via e-mail.</p>
<h4>Introdução</h4>
<p>Novos registros podem ser adicionados clicando no ícone + no canto superior direito da tela principal. Depois, há três campos que você terá que completar: Título, Unidades e a Ação.Você será capaz de editar estes para qualquer registro a qualquer momento, selecionando o botão Editar no canto superior direito.</p>
<div class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-1.png" rel="fancybox-gallery"><img title="Trakr-1" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-1-300x224.png" alt="Trakr-1" width="300" height="224" /></a><p class="wp-caption-text">Trakr-1</p></div>
<p style="text-align: center;"><span id="more-1470"></span></p>
<p>Agora as coisas começam a ficar divertido. Trakr foi projetado com uma roda de rolagem que faz o ajuste registros ou atualização de metas de um cinch. Simplesmente segure o ponto verde e puxe-o no sentido horário &#8211; você verá o número na parte superior da tela começar a aumentar ou diminuir. Solte o ponto verde, uma vez que você alcançou o número desejado e pronto, você acabou de fazer uma atualização.</p>
<div id="attachment_1476" class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-2.png" rel="fancybox-gallery"><img class="size-medium wp-image-1476" title="Trakr-2" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-2-300x224.png" alt="Trakr-2" width="300" height="224" /></a><p class="wp-caption-text">Trakr-2</p></div>
<h4><strong>Estabelecimento de metas</strong></h4>
<p>Enquanto em um registro, se você passar pela tela de ajuste, você virá para a próxima página, que é toda sobre seus objetivos. (Note que o seu total permanece na metade superior da tela.)</p>
<div id="attachment_1475" class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-3.png" rel="fancybox-gallery"><img class="size-medium wp-image-1475" title="Trakr-3" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-3-300x224.png" alt="Trakr-3" width="300" height="224" /></a><p class="wp-caption-text">Trakr-3</p></div>
<p>Toque dentro do círculo para definir uma meta. A roda de rolagem aparecerá novamente, permitindo que você defina um número. E uma vez que a meta foi definida, você pode tocar dentro do círculo para alternar a exibição entre um número e uma porcentagem (de quão perto você está do seu objetivo).</p>
<div id="attachment_1474" class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-4.png" rel="fancybox-gallery"><img class="size-medium wp-image-1474" title="Trakr-4" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-4-300x224.png" alt="Trakr-4" width="300" height="224" /></a><p class="wp-caption-text">Trakr-4</p></div>
<p>&nbsp;</p>
<p>Outros furtos apresentá-lo com as páginas da história, que mostram o seu progresso ao longo dos últimos sete dias, assim como nos últimos 12 meses. Infelizmente, essas páginas não são editáveis, o que significa que se você esquecer de inserir o seu progresso, você não pode voltar para o aplicativo em uma data posterior e entrada para um dia no passado. Finalmente, uma página de notas apresenta uma série de opções &#8211; os títulos dos livros que você leu, as condições meteorológicas em suas corridas, ou pensamentos sobre o enredo de sua novela.</p>
<div id="attachment_1473" class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-5.png" rel="fancybox-gallery"><img class="size-medium wp-image-1473" title="Trakr-5" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-5-300x224.png" alt="Trakr-5" width="300" height="224" /></a><p class="wp-caption-text">Trakr-5</p></div>
<h2>Extras</h2>
<p>Na home page Trakr você verá uma lista de todos os registros, juntamente com o up-to-date totais e um visualizador de verde com uma indicação aproximada do progresso que você fez para cada meta até agora. Enquanto tocando no sinal de + no canto superior direito irá criar um novo recorde, batendo no símbolo de informação no canto esquerdo superior vai chamar a página Configurações.</p>
<div id="attachment_1472" class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-6.png" rel="fancybox-gallery"><img class="size-medium wp-image-1472" title="Trakr-6" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/04/Trakr-6-300x224.png" alt="Trakr-6" width="300" height="224" /></a><p class="wp-caption-text">Trakr-6</p></div>
<h2>Considerações Finais</h2>
<p>Este é um ótimo aplicativo que leva pouco mais simples das tarefas e realmente torna tudo mais divertido, com seus campos de informação intuitivas e roda de rolagem dinâmica. A capacidade de exportar os dados é maravilhoso &#8211; e quando eu fiz isso, a planilha parecia limpo, foi facilmente compreendida e bem as informações apresentadas. (A heads-up: A planilha irá mostrar todos os ajustes que você faz, o que significa que se você fazer vários ajustes em um único dia, todos eles aparecem na planilha Isso pode ser frustrante para alguém que fez alguns ajustes acidentais, mas corrigiu o. gravar mais tarde.)</p>
<p>Espero que em uma versão futura, é possível adicionar o progresso para datas passadas, mas as freqüentes atualizações que foram feitas apenas na última semana me faz otimista de que tal possibilidade pode estar no horizonte.</p>
<p>Em suma, se você é o tipo de pessoa que gosta de ser capaz de ver o progresso que você está fazendo alguma coisa &#8230; Ou, se você tende a ser um pouco sobre o TOC fazendo listas e usando as marcas de seleção &#8230; Ou, se você acabou de tem algo que você quer manter o controle de &#8230; Trakr vai encher esse buraco no seu arsenal app.</p>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/04/06/iphone-gerenciar-metas-com-trakr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NodeJs: Force page reload when form method=&#8221;post&#8221; in jquery mobile</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/04/04/nodejs-force-page-reload-when-form-methodpost-in-jquery-mobile/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/04/04/nodejs-force-page-reload-when-form-methodpost-in-jquery-mobile/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 04:00:25 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[Frameworks / DBAs]]></category>
		<category><![CDATA[node.JS]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[javascrit]]></category>
		<category><![CDATA[nodejs]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1466</guid>
		<description><![CDATA[Se estiver usando Node.JS e Jquery Mobile e tentar fazer uma request/post via ajax vai se deparar com o problema que o Jquery Mobile salva em cache as páginas para resolver esse problinha segue o código abaixo: &#160; Pronto agora nas paginas que quiser o refresh você declara o arquivo custom.mobile.js no head &#160;]]></description>
			<content:encoded><![CDATA[<p>Se estiver usando <a href="https://github.com/joyent/node" target="_blank">Node.JS</a> e <a href="https://github.com/jquery/jquery-mobile" target="_blank">Jquery Mobile</a> e tentar fazer uma request/post via ajax vai se deparar com o problema que o Jquery Mobile salva em cache as páginas para resolver esse problinha segue o código abaixo:</p>
<p><span id="more-1466"></span></p>
<p><script src="https://gist.github.com/2297616.js"> </script></p>
<p>&nbsp;</p>
<p>Pronto agora nas paginas que quiser o refresh você declara o arquivo custom.mobile.js no head</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/04/04/nodejs-force-page-reload-when-form-methodpost-in-jquery-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android: EditText aumentar linhas e alinhar ao top</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/04/02/android-edittext-aumentar-linhas-e-alinhar-ao-top/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/04/02/android-edittext-aumentar-linhas-e-alinhar-ao-top/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 15:22:01 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[Android SDK]]></category>
		<category><![CDATA[Frameworks / DBAs]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[edittext]]></category>
		<category><![CDATA[textarea]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1464</guid>
		<description><![CDATA[Veja como aumentar o número de linhas de um EditText fazendo-o ficar como uma TextArea de HTML:]]></description>
			<content:encoded><![CDATA[<p>Veja como aumentar o número de linhas de um EditText fazendo-o ficar como uma TextArea de HTML:</p>
<p><script src="https://gist.github.com/2284327.js"> </script></p>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/04/02/android-edittext-aumentar-linhas-e-alinhar-ao-top/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mascara de CPF para campos EditText no Android</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/02/29/mascara-de-cpf-para-campos-edittext-no-android/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/02/29/mascara-de-cpf-para-campos-edittext-no-android/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 07:55:47 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[Android SDK]]></category>
		<category><![CDATA[Artigos de Destaque]]></category>
		<category><![CDATA[Frameworks / DBAs]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[cpf]]></category>
		<category><![CDATA[edittext]]></category>
		<category><![CDATA[mascara]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1456</guid>
		<description><![CDATA[Veja como fazer essa mascara ###.###.###-## no seu EditText &#160; Veja a parte do código como fica: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [...]]]></description>
			<content:encoded><![CDATA[<p>Veja como fazer essa mascara ###.###.###-## no seu EditText</p>
<p>&nbsp;</p>
<p>Veja a parte do código como fica:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">lethus.socialdroid.core.widgets</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Context</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.text.Editable</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.text.InputType</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.text.TextWatcher</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.text.method.NumberKeyListener</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.util.AttributeSet</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.EditText</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CpfEditText <span style="color: #000000; font-weight: bold;">extends</span> EditText <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">boolean</span> isUpdating<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">/*
	 * Maps the cursor position from phone number to masked number... 12345678912
	 * =&gt; xxx.xxx.xxx-xx
	 */</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> positioning<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">6</span>, <span style="color: #cc66cc;">7</span>, <span style="color: #cc66cc;">9</span>, <span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">11</span>, <span style="color: #cc66cc;">13</span>, <span style="color: #cc66cc;">14</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> CpfEditText<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> context, <span style="color: #003399;">AttributeSet</span> attrs, <span style="color: #000066; font-weight: bold;">int</span> defStyle<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>context, attrs, defStyle<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		initialize<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> CpfEditText<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> context, <span style="color: #003399;">AttributeSet</span> attrs<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>context, attrs<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		initialize<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> CpfEditText<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> context<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>context<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		initialize<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getCleanText<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">String</span> text <span style="color: #339933;">=</span> CpfEditText.<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		text.<span style="color: #006633;">replaceAll</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;[^0-9]*&quot;</span>, <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">return</span> text<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> initialize<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> maxNumberLength <span style="color: #339933;">=</span> <span style="color: #cc66cc;">11</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setKeyListener</span><span style="color: #009900;">&#40;</span>keylistenerNumber<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;     -   &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setSelection</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">addTextChangedListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> TextWatcher<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> afterTextChanged<span style="color: #009900;">&#40;</span>Editable s<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #003399;">String</span> current <span style="color: #339933;">=</span> s.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">/*
				 * Ok, here is the trick... calling setText below will recurse
				 * to this function, so we set a flag that we are actually
				 * updating the text, so we don't need to reprocess it...
				 */</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>isUpdating<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					isUpdating <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
					<span style="color: #000000; font-weight: bold;">return</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">/* Strip any non numeric digit from the String... */</span>
				<span style="color: #003399;">String</span> number <span style="color: #339933;">=</span> current.<span style="color: #006633;">replaceAll</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;[^0-9]*&quot;</span>, <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>number.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">11</span><span style="color: #009900;">&#41;</span>
					number <span style="color: #339933;">=</span> number.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">11</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">int</span> length <span style="color: #339933;">=</span> number.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">/* Pad the number to 10 characters... */</span>
				<span style="color: #003399;">String</span> paddedNumber <span style="color: #339933;">=</span> padNumber<span style="color: #009900;">&#40;</span>number, maxNumberLength<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">/* Split phone number into parts... */</span>
				<span style="color: #003399;">String</span> part1 <span style="color: #339933;">=</span> paddedNumber.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #003399;">String</span> part2 <span style="color: #339933;">=</span> paddedNumber.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #003399;">String</span> part3 <span style="color: #339933;">=</span> paddedNumber.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">6</span>, <span style="color: #cc66cc;">9</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #003399;">String</span> part4 <span style="color: #339933;">=</span> paddedNumber.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">9</span>, <span style="color: #cc66cc;">11</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">/* build the masked phone number... */</span>
				<span style="color: #003399;">String</span> cpf <span style="color: #339933;">=</span> part1 <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;.&quot;</span> <span style="color: #339933;">+</span> part2 <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;.&quot;</span> <span style="color: #339933;">+</span> part3 <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;-&quot;</span> <span style="color: #339933;">+</span> part4<span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">/*
				 * Set the update flag, so the recurring call to
				 * afterTextChanged won't do nothing...
				 */</span>
				isUpdating <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
				CpfEditText.<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>cpf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				CpfEditText.<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setSelection</span><span style="color: #009900;">&#40;</span>positioning<span style="color: #009900;">&#91;</span>length<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> beforeTextChanged<span style="color: #009900;">&#40;</span>CharSequence s, <span style="color: #000066; font-weight: bold;">int</span> start, <span style="color: #000066; font-weight: bold;">int</span> count,
					<span style="color: #000066; font-weight: bold;">int</span> after<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onTextChanged<span style="color: #009900;">&#40;</span>CharSequence s, <span style="color: #000066; font-weight: bold;">int</span> start, <span style="color: #000066; font-weight: bold;">int</span> before,
					<span style="color: #000066; font-weight: bold;">int</span> count<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #003399;">String</span> padNumber<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> number, <span style="color: #000066; font-weight: bold;">int</span> maxLength<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">String</span> padded <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> maxLength <span style="color: #339933;">-</span> number.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
			padded <span style="color: #339933;">+=</span> <span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">return</span> padded<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">final</span> KeylistenerNumber keylistenerNumber <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> KeylistenerNumber<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">class</span> KeylistenerNumber <span style="color: #000000; font-weight: bold;">extends</span> NumberKeyListener <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> getInputType<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">return</span> InputType.<span style="color: #006633;">TYPE_CLASS_NUMBER</span>
					<span style="color: #339933;">|</span> InputType.<span style="color: #006633;">TYPE_TEXT_FLAG_NO_SUGGESTIONS</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #009900;">&#125;</span>
&nbsp;
		@Override
		<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">char</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> getAcceptedChars<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">char</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">'0'</span>, <span style="color: #0000ff;">'1'</span>, <span style="color: #0000ff;">'2'</span>, <span style="color: #0000ff;">'3'</span>, <span style="color: #0000ff;">'4'</span>, <span style="color: #0000ff;">'5'</span>, <span style="color: #0000ff;">'6'</span>, <span style="color: #0000ff;">'7'</span>, <span style="color: #0000ff;">'8'</span>,
					<span style="color: #0000ff;">'9'</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>Veja a parte do XML como fica:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;lethus.socialdroid.core.widgets.CpfEditText</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/txtCpf&quot;</span> <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;match_parent&quot;</span> <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span> <span style="color: #000066;">android:inputType</span>=<span style="color: #ff0000;">&quot;number&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>Mais informações sobre como implementar essa mascara consulte o artigo da <a href="http://oraculum.blog.br/blogoraculum/index.php/2011/08/28/mascara-de-telefone-br-para-campos-edittext-no-android/">mascara de telefone</a></p>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/02/29/mascara-de-cpf-para-campos-edittext-no-android/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Como descompactar arquivo .gz no Android</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/02/27/como-descompactar-arquivo-gz-no-android/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/02/27/como-descompactar-arquivo-gz-no-android/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 04:53:31 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[Android SDK]]></category>
		<category><![CDATA[Artigos de Destaque]]></category>
		<category><![CDATA[Frameworks / DBAs]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[descompactar]]></category>
		<category><![CDATA[extract]]></category>
		<category><![CDATA[extrair]]></category>
		<category><![CDATA[gz]]></category>
		<category><![CDATA[GZIPInputStream]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1450</guid>
		<description><![CDATA[Você pode precisar carregar alguns arquivos na sua APP como por exemplo uma lista de todas as cidades e estados do brasil ou um banco com os ceps para isso você pode manter esses arquivos compactados em um arquivo .gz para não pessar muito na hora da instalação e dentro do projeto, daí na hora [...]]]></description>
			<content:encoded><![CDATA[<p>Você pode precisar carregar alguns arquivos na sua APP como por exemplo uma lista de todas as cidades e estados do brasil ou um banco com os ceps para isso você pode manter esses arquivos compactados em um arquivo .gz para não pessar muito na hora da instalação e dentro do projeto, daí na hora de fazer a instalação você  descompacta esses arquivos na memoria e faz a inclusão deles no banco de dados principal.</p>
<p>No meu caso tenho um arquivo compactado chamado de municipios.gz, você pode colocar esses arquivos dentro da pasta &#8216;res&#8217; do seu  projeto aconselho criar uma sub-pasta chamada &#8216;raw&#8217; e deixar esses arquivos lá.</p>
<p><strong>Importante: Não sei porque mas a SDK do android acusa o arquivo &#8216;.gz&#8217; como inexistente  nesse caso é só você salvar o arquivo sem a extensão .gz depois de copiar para a pasta renomeie o mesmo no eclipse e tire a extensão. Fique tranquilo que de alguma forma a SDK sabe que ele é um .gz e vai descompacta-lo normalmente.</strong></p>
<p><em>erro ao tentar acessar um arquivo com a extensão .gz na pasta res/raw</em></p>
<p>file 02-27 00:53:38.809: E/AndroidRuntime(399): Caused by: android.content.res.Resources$NotFoundException: File res/raw/municipios.gz from drawable resource ID #0x7f040001</p>
<p>&nbsp;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> JSONArray loadFile<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">IOException</span>, JSONException <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// pegando o arquivo gz da pasta res/raw e descompactando</span>
		<span style="color: #003399;">InputStream</span> json <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">GZIPInputStream</span><span style="color: #009900;">&#40;</span>
				getHelper<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getResources</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">openRawResource</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">raw</span>.<span style="color: #006633;">municipios</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// lendo o arquivo json e retornando um array</span>
		StringBuilder builder <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> StringBuilder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">BufferedReader</span> reader <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">BufferedReader</span><span style="color: #009900;">&#40;</span>
				<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">InputStreamReader</span><span style="color: #009900;">&#40;</span>json<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">String</span> line<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>line <span style="color: #339933;">=</span> reader.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			builder.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> JSONArray<span style="color: #009900;">&#40;</span>builder.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>Nesse caso acima o arquivo que estava dentro do .gz era um json então precisava de retornar para a models um array em json, mas o importante para descompactar o arquivo é a linha:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">InputStream</span> json <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">GZIPInputStream</span><span style="color: #009900;">&#40;</span>getHelper<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getResources</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">openRawResource</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">raw</span>.<span style="color: #006633;">municipios</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Tive que colocar o getHelper e getContext pois o método de loadFile estava dentro da minha DAO, se você estiver usando o método GZIPInputStream de dentro de uma activity faça apenas:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">InputStream</span> json <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">GZIPInputStream</span><span style="color: #009900;">&#40;</span>getResources<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">openRawResource</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">raw</span>.<span style="color: #006633;">municipios</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Nas linhas abaixo eu leio o arquivo json e salvo em uma StringBuilder para transforma-lo em um array, no caso acima ele descompacta o arquivo .gz e abre o arquivo json tudo dentro da memória do dispositivo.</p>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/02/27/como-descompactar-arquivo-gz-no-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como remover ou listar todos os modulos NPM instalados como globais</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/02/16/como-remover-ou-listar-todos-os-modulos-npm-instalados-como-globais/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/02/16/como-remover-ou-listar-todos-os-modulos-npm-instalados-como-globais/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 04:25:04 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[node.JS]]></category>
		<category><![CDATA[modules remove]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[npm]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1442</guid>
		<description><![CDATA[Para listar todos modulos NPM instalados faça: npm -g ls Pare remover todos os modulos NPM instalados faça: npm -g rm]]></description>
			<content:encoded><![CDATA[<p>Para listar todos modulos NPM instalados faça: npm -g ls<br />
Pare remover todos os modulos NPM instalados faça: npm -g rm</p>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/02/16/como-remover-ou-listar-todos-os-modulos-npm-instalados-como-globais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Task via Desktop no Ubuntu</title>
		<link>http://oraculum.blog.br/blogoraculum/index.php/2012/01/06/google-task-via-desktop-no-ubuntu/</link>
		<comments>http://oraculum.blog.br/blogoraculum/index.php/2012/01/06/google-task-via-desktop-no-ubuntu/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 22:18:24 +0000</pubDate>
		<dc:creator>oraculum</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google tarefas]]></category>
		<category><![CDATA[google task]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://oraculum.blog.br/blogoraculum/?p=1420</guid>
		<description><![CDATA[<br />
<b>Warning</b>:  array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>2026</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>2026</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>2398</b><br />
<br />
<b>Warning</b>:  implode() [<a href='function.implode'>function.implode</a>]: Argument must be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3351</b><br />
<br />
<b>Warning</b>:  array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3374</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3374</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3415</b><br />
<br />
<b>Warning</b>:  array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3467</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3467</b><br />
<br />
<b>Warning</b>:  array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3612</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3612</b><br />
Eu usava antes o Wunderlist que até é uma boa app para Manager Task mas eu achava ele meio pesado para a minha necessidade, precisava de algo mais clean então resolvi usar o Google Task (Google Tarefas), veja como rodá-lo no seu linux em uma versão &#8220;desktop&#8221; Para isso vamos precisar de ter o Chrome [...]]]></description>
			<content:encoded><![CDATA[<br />
<b>Warning</b>:  array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>2026</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>2026</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>2398</b><br />
<br />
<b>Warning</b>:  implode() [<a href='function.implode'>function.implode</a>]: Argument must be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3351</b><br />
<br />
<b>Warning</b>:  array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3374</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3374</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3415</b><br />
<br />
<b>Warning</b>:  array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3467</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3467</b><br />
<br />
<b>Warning</b>:  array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3612</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>D:\Hosting\6193280\html\blogoraculum\wp-content\plugins\wp-syntax\geshi\geshi.php</b> on line <b>3612</b><br />
<p>Eu usava antes o <a href="http://www.wunderlist.com/" target="_blank">Wunderlist</a> que até é uma boa app para Manager Task mas eu achava ele meio pesado para a minha necessidade, precisava de algo mais clean então resolvi usar o Google Task (Google Tarefas), veja como rodá-lo no seu linux em uma versão &#8220;desktop&#8221;</p>
<p>Para isso vamos precisar de ter o Chrome instalado na sua maquina se não tiver vá até a central de programas do ubuntu e mande instalar por lá, se tiver dúvida nesse processo veja <a href="http://wiki.ubuntu-br.org/Chromium#Instala.2BAOcA4w-o" target="_blank">aqui</a> como fazer.</p>
<p>Depois é só você acessar pelo chrome essa url especial do Google Task &gt;&gt; <a href="https://mail.google.com/tasks/ig" target="_blank">https://mail.google.com/tasks/ig</a></p>
<p>Daí vamos fazer um atalho para ela no nosso desktop, clique em:</p>
<p>- Tools (ferramentas)</p>
<p>- Create applications shortcuts (criar atalho de aplicações)</p>
<div id="attachment_1421" class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/01/pEqIf.png" rel="fancybox-gallery"><img class="size-medium wp-image-1421" title="salvar app" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/01/pEqIf-300x76.png" alt="salvar app" width="300" height="76" /></a><p class="wp-caption-text">salvar app</p></div>
<p>na tela seguinte deixe apenas &#8220;Desktop&#8221; marcada e não marque &#8220;Applications menu&#8221; ele vai salvar um arquivo no seu desktop abra esse arquivo no editor de texto de sua preferencia, por exemplo gedit e cole o texto abaixo.</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">#!/usr/bin/env xdg-open
&nbsp;
<span class="br0">&#91;</span>Desktop Entry<span class="br0">&#93;</span>
Version=<span style="">1.0</span>
Name=Google Tarefas
Exec=/usr/bin/chromium-browser --app=https://mail.google.com/tasks/ig
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/usr/share/icons/gtask.png
Categories=Network;WebBrowser;
StartupNotify=true
StartupWMClass=mail.google.com__tasks_ig
Name<span class="br0">&#91;</span>en_US<span class="br0">&#93;</span>=GTask</pre></div></div>

<p>&nbsp;</p>
<p>você pode renomear o arquivo para um nome de sua preferencia eu usei GTask, mas isso fica a seu critério.</p>
<p>O campo Icon você vai indicar o caminho do ícone que você quer usar no app, se não tiver nenhum em mente use esse abaixo é só salvar essa imagens no seu pc e aplicar as permissões, mais a frente mostro como se faz isso no arquivo.</p>
<p><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/01/gtask.png" rel="fancybox-gallery"><img class="aligncenter size-full wp-image-1422" title="gtask" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/01/gtask.png" alt="" width="64" height="64" /></a>Você pode salvar essa imagem na pasta padrão de ícones do sistema que é onde eu coloquei o meu, lembrando que você deve copiar ele para lá como root (logo a seguir vou fazer um exemplo parecido com o arquivo que foi salvo pelo chrome)</p>
<p>Voltando ao nosso arquivo é só você pressionar ALT+f2 para abrir no ubuntu o run command ali você digita</p>
<p><strong>gksu nautilus</strong></p>
<p>ele vai abrir o nautilus em modo root só digitar a sua senha de root.</p>
<p>copie esse nosso arquivo com as configurações da app para essa pasta:</p>
<p>/usr/share/applications</p>
<p>Depois de copiar você precisa dar acesso a todos usuários a esse arquivo, clique com o botão direito sobre ele e vá em propriedades &gt; permissions (permissões) e deixe conforme a imagem abaixo:</p>
<div id="attachment_1423" class="wp-caption aligncenter" style="width: 310px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/01/ss.png" rel="fancybox-gallery"><img class="size-medium wp-image-1423" title="Permissão para os arquivos" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/01/ss-300x264.png" alt="Permissão para os arquivos" width="300" height="264" /></a><p class="wp-caption-text">Permissão para os arquivos</p></div>
<p>Faça essa atribuição de permissões no ícone e depois é só você digitar no dash GTask.</p>
<p>Veja ele funcionando logo abaixo:</p>
<p>&nbsp;</p>
<div id="attachment_1424" class="wp-caption aligncenter" style="width: 204px"><a href="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/01/ss2.png" rel="fancybox-gallery"><img class="size-medium wp-image-1424" title="Google Task no ubuntu via Desktop" src="http://oraculum.blog.br/blogoraculum/wp-content/uploads/2012/01/ss2-194x300.png" alt="Google Task no ubuntu via Desktop" width="194" height="300" /></a><p class="wp-caption-text">Google Task no ubuntu via Desktop</p></div>
]]></content:encoded>
			<wfw:commentRss>http://oraculum.blog.br/blogoraculum/index.php/2012/01/06/google-task-via-desktop-no-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

