Desenvolvimento

Android 2.2 – Instalando aplicativos direto no cartão SD

Quem tem smartphones Android com pouca memória interna e vive baixando aplicativos, sabe como é frustrante quando aparece o ícone de “Pouco Espaço”.

No Android 2.2 existe a possibilidade de migrar o local de instalação dos aplicativos já instalados, porém, alguns não lhe dão a possibilidade de movê-los para o SD.

Atrás de soluções para resolver este probleminha no meu Motorola Milestone, encontrei um excelente tutorial no Mundo Zoom que ensina como instalar aplicativos direto no cartão SD, mesmos aqueles aplicativos que não permitem movê-los, sem a necessidade de ser usuário root.

Primeiro baixe, de preferência, o ZIP de Android SDK e extraia-o e, navegue até o diretório “android-sdk-windows\platform-tools“.

Configure seu aparelho para o modo debug. Não sabe? Vá em “Configurações” > “Aplicativos” > “Desenvolvimento” e ative a opção “Depuração USB”.

Conecte seu smartphone à porta USB e ative a opção “Nenhum” (ou “Somente carregar bateria”) no Gerenciador de Conexão USB.

Agora Abra o prompt de comando clicando no menu Iniciar, executar. Digite “cmd” (sem aspas) e pressione Enter.

Com o prompt e a janela do Windows Explorer abertos, clique no arquivo “adb.exe” e arraste para o prompt, em seguida dê um espaço e digite “shell”. Pressione Enter.

Deverá aparecer o símbolo “$” e o cursor piscando. Agora digite o comando “pm setInstallLocation 2” e pressione Enter.

Este comando define a partição “2″, que é o cartão SD, como local padrão para a instalação dos aplicativos.

Pronto, isto é tudo que você precisa para que, a partir de agora, os aplicativos sejam instalados direto no cartão SD.

Caso o procedimento não tenha dado certo, no site Mundo Zoom existem algumas soluções de problemas que podem te ajudar.


A importância de File.separator e File.pathSeparator

Quase todos os programadores Java conhecem os métodos citados no título, mas muito poucos se preocupam em utiliza-los.

Estes dois métodos servem para que o programador não precise “adivinhar” qual é o separador de arquivos e qual é o separador de caminhos em cada sistema operacional.

No Linux/Unix, os métodos File.separator e File.pathSeparator retornam “/” e “.” respectivamente, enquanto que, no Windows, estes mesmos métodos retornam “\” (ou “\\” – escape) e “;”.

Passei por um caso recente, onde o código abaixo lançava a exception FileNotFoundException no Linux, mas funcionava perfeitamente no Windows:

String caminhoAp = ctx.getRealPath();
String caminhoArq = caminhoAp + "\\" + "WEB-INF/classes/pacotes/da/minha/aplicacao/";

File arquivo = new File(caminhoArq, "relatorio.pdf");
OutputStream out = new FileOutputStream(arquivo);
...

Então passou a funcionar nos dois sistemas operacionais após substituir “\\” por File.separator na linha 2, desta forma:

String caminhoAp = ctx.getRealPath();
String caminhoArq = caminhoAp + File.separator + "WEB-INF/classes/pacotes/da/minha/aplicacao/";

File arquivo = new File(caminhoArq, "relatorio.pdf");
OutputStream out = new FileOutputStream(arquivo);
...

A utilização destes métodos, além de ser uma boa prática, é muito útil quando se tem a mesma versão de um sistema feito em Java rodando de diferentes sistemas operacionais.


Aplicativos que seu Android precisa ter – RemoteControl for Earphones

Resolvi iniciar uma seção no site chamada “Aplicativos que seu Android precisa ter”, nesta seção publicarei dicas e “reviews” de aplicativos úteis que ajudarão a extrair todo o potencial de seu Smartphone Android.

Começarei com o RemoteControl for Earphones, pois ele simplesmente acaba com uma vantagem enorme que o iPhone possuía sobre o Android, que é o controle do player de música através de comandos no botão do fone de ouvido.

O comportamento padrão do botão de lapela da maioria dos Smartphones com Android é pausar e tocar músicas, além de atender ligações. O RemoteControl for Earphones possibilita que você use quase todos os comandos do player padrão apenas com este botão. Por exemplo, para dar play ou pause em uma música, basta apertar o botão uma vez, para ir para a próxima música, basta apertar duas vezes, para voltar, quatro vezes e por aí vai.

RemoteControl for Earphones

Tela do aplicativo (Android Market)

O aplicativo é gratuito e, ao contrário de quase todos os aplicativos gratuitos encontrados no Android Market, não possui aquelas propagandas chatas.

O único problema é que ele não é compatível com todos os players, funcionou perfeitamente no player padrão do Motorola Milestone e Songbird, porém não funcionou no Winamp, no player padrão do Motorola Atrix e do Samsung Galaxy S.

Link para o aplicativo:  RemoteControl for Earphones
Preço: Gratuito
Propaganda: Não


Como recuperar e escrever campos CLOB

O Character Large Object (ou CLOB), como o próprio nome já diz, é um tipo de campo muito comum em Bancos de Dados usado para armazenar textos com uma quantidade enorme de caracteres.

No MySQL, por exemplo, o tipo CLOB está descrito como MEMO, mas a função é a mesma.

Estes dias precisei recuperar um valor de um campo CLOB que era retornado por um SELECT, como nunca tinha utilizado este campo no Java, resolvi escrever este pequeno tutorial como um memorando e, também, ajudar a quem precisar.

Escrevendo valores em campo CLOB

O método do PreparedStatement utilizado para a gravação de um CLOB é o setAsciiStream, passando a posição do campo CLOB, o InputStream dos dados e o ponto final de leitura do InputStream.

ps.setAsciiStream(posicaoClob, inputStream, tamanhoDoTexto);

Exemplo funcional:

String sql = "INSERT INTO TESTE (texto) VALUES(?)";
		try{
			String txt = leArquivoTxt();
			ByteArrayInputStream bais = new ByteArrayInputStream(txt.getBytes());

			PreparedStatement ps = conexao.prepareStatement(sql);
			//Campo CLOB é a '?' que está na posição 1 do INSERT
			ps.setAsciiStream(1, bais, txt.length());

			ps.execute();

			ps.close();
		}catch (Exception e) {
			e.printStackTrace();
		}

Recuperando valor de um campo CLOB

Como executamos um SELECT, será necessário capturar o ResultSet , iterar as linhas e chamar o método para a recuperação de um CLOB é o getClob, passando a posição em que o campo se encontra na query ou, simplesmente, o nome da coluna.

rs.getClob("xml");

Exemplo funcional:

String sql = "SELECT xml FROM TESTE";
		try{
			PreparedStatement ps = conexao.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();

			while(rs.next()){
				Clob clob = rs.getClob("xml");
				BufferedReader reader = new BufferedReader(clob.getCharacterStream());
				StringBuffer strBuf = new StringBuffer();

				String linha = null;
				while((linha = reader.readLine()) != null){
					strBuf.append(linha);
//Character.LINE_SEPARATOR insere a quebra de linha
					strBuf.append((char)Character.LINE_SEPARATOR);
				}

				System.out.println("=========== CLOB ===========");
				System.out.println(strBuf.toString());
			}

			rs.close();
			ps.close();
		}catch (Exception e) {
			e.printStackTrace();
		}

É isso aí. Simples, fácil e indolor. ;)

Caso queiram, podem baixar a aplicação de exemplo aqui

Para recuperar um campo BLOB veja este tópico.


Instalando aplicativos .apk no emulador do Android SDK

Algumas vezes dependemos de aplicações de terceiros para testar se nossa aplicação está funcionando corretamente ou, simplesmente, acessar recursos do emulador que não estão disponíveis nas ferramentas que o acompanham.

Nos diretórios de instalação do SDK, geralmente em platform-tools, existe um executável chamado adb, através dele instalaremos aplicações de terceiros.

Antes de mais nada, você precisará do pacote de instalação do aplicativo (.apk). Para isso, procure em sites de busca ou faça backup através de seu aparelho Android usando aplicativos com o AppSaver.

- Inicie o emulador, podendo ser pelo SDK Manager ou pelo plugin do Android no Eclipse.

- Através do prompt do DOS (Windows) ou de um terminal (Linux), acesse o diretório platform-tools, e execute a linha de comando:

$ adb install <caminho do arquivo .apk>

Você verá a mensagem:

$ adb install Aplicativo.apk
125 KB/s (1091937 bytes in 8.474s)
        pkg: /data/local/tmp/Aplicativo.apk
Success

Agora o aplicativo estará disponível no menu do emulador, como se estivesse instalado no seu smartphone. ;)


  • AdSense

  • Copyright © 1996-2010 André L. S.. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress