Android / Java – Como calcular distância entre dois pontos GPS

Android-Apps-GPS-Location-Tmobile-G1

Segue o método responsável pelo calculo, basta passar as duas coordenadas, latitude e longitude origem e destino. O retorno será em metros.

private double calculaDistancia(double lat1, double lng1, double lat2, double lng2) {
	//double earthRadius = 3958.75;//miles
	double earthRadius = 6371;//kilometers
	double dLat = Math.toRadians(lat2 - lat1);
	double dLng = Math.toRadians(lng2 - lng1);
	double sindLat = Math.sin(dLat / 2);
	double sindLng = Math.sin(dLng / 2);
	double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
			* Math.cos(Math.toRadians(lat1))
			* Math.cos(Math.toRadians(lat2));
	double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
	double dist = earthRadius * c;

	return dist * 1000; //em metros
}

Java – Problemas na execução de procedure (java.sql.SQLException: Parameter number X is not an OUT parameter)

java linux tux
- Problemas ao executar procedure no Java.
- Parameter number x is not an OUT parameter.
- Java procedure execute registerOutParameter

Atualmente me ocorreu um erro ao executar uma procedure com retorno, abaixo segue como foi realizado a chamada:

String sqlString = "{CALL pr_teste(?,?)}";

CallableStatement sqlStm = connection.prepareCall(sqlString);

sqlStm.setString(1, usuario);
sqlStm.registerOutParameter(2, Types.INTEGER);
sqlStm.execute();

O erro que retornou no printstack foi:

java.sql.SQLException: Parameter number 2 is not an OUT parameter
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    at com.mysql.jdbc.CallableStatement.checkIsOutputParam(CallableStatement.java:690)
    at com.mysql.jdbc.CallableStatement.registerOutParameter(CallableStatement.java:1881)
    at com.mysql.jdbc.CallableStatement.registerOutParameter(CallableStatement.java:1890)
    at com.isb.igt.database.StoredProcedures.preparationCalls(StoredProcedures.java:40)
    at com.isb.igt.database.StoredProcedures.main(StoredProcedures.java:236)

A procedure implementada foi definida da seguinte maneira: Continue reading

Eclipse – Como configurar o atalho CTRL+TAB para navegar entre tabs

eclipse_ctrl+tab+atalho

Bem vindo ao Eclipse, pera aí… Ctrl+TAB não funciona? como vou navegar entre as tabs? (decepção total). No Eclipse esse atalho é chamado de Next Editor, é dado pela combinação das teclas ctrl+f6. Para alterarmos vamos realizar os procedimentos abaixo:

  • Acesse a opção Window na barra de menu e escolhaPreferences;
  • Depois abra a opção General e selecione Keys;
  • Em uma pequena caixa de texto abaixo da combobox de seleção de Scheme, substitua ‘type filter text’ por ‘Next Editor’;
  • Selecione a opção mostrada na lista de resultados (Next Editor);
  • Logo abaixo, na caixa de texto Bindings, apague a combinação pré-existente (Ctrl+F6) e execute a combinação de teclas desejada (suponho que seja ‘Ctrl+Tab’);
  • Você também pode querer alterar a combinação para voltar à aba anterior, para tal, opós modificar a configuração para ‘Next Editor’, escreva ‘Previous Editor’ na caixa de texto de procura;
  • Novamente selecione o resultado na lista e substitua a combinação de teclas apresentada por uma de sua preferência (eu sugiro ‘Ctrl+Shift+Tab’);
  • Depois de tudo configurado, clique sobre o botão Apply e depois em OK;

Fonte: http://goo.gl/r0NsvV

Java – Conversão de base numérica (Binário / Decimal / Octal / Hexa)

conversao base

Conversão de base numérica é o nome dado à passagem de um valor de uma base para outra mantendo o valor quantitativo, mas alterando a simbologia para se adequar a nova base. (Conversão de base numérica – Wikipedia).

Nos exemplos abaixo, vamos demostrar como converter as bases programaticamente utilizando o Java: Continue reading

Java – Remover acentos de uma String

acentos

Remover acentos de uma String
Java Removendo acentuação
Como remover acentos de uma String
Normalize String
Java remover acentuação
String remover acentuação

public class TESTE_CHARESPEC {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String texto = "á ç guilherme bíff ã â á à ü helpdev";

        CharSequence cs = new StringBuilder(texto);

        texto = Normalizer.normalize(cs, Normalizer.Form.NFKD)
                .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

        System.out.println(texto);
    }
}

Saída do terminal:

run:
a c guilherme biff a a a a u helpdev
BUILD SUCCESSFUL (total time: 0 seconds)

Linux – Executar jar na inicialização do sistema. Jar como serviço. (How to make a jar file run on startup)

java linux tux

Uma maneira fácil de se fazer isso é utilizar o SysVInit.

1 – Você deve criar um script de start e stop para sua aplicação. No exemplo vamos utilizar o diretorio /opt/:

Start Script: /opt/server/myapp-start.sh
Stop Script: /opt/server/myapp-stop.sh

Cada arquivo dará as instruções necessárias para executar e parar o aplicativo.
O conteudo é bem simples, exemplo de como ligar:

#!/bin/bash

java -jar /opt/server/myapp.jar

Para parar, pode ser algo como:

#!/bin/bash
# Grabs and kill a process from the pidlist that has the word myapp

pid=`ps aux | grep myapp | awk '{print $2}'`
kill -9 $pid

2 – Crie um script ‘myscript’ e coloque-o em /etc/init.d.

‘/etc/init.d/myscript’ conteudo: Continue reading

Android + Servlet – Como criar um Servlet para tráfego de objetos com o Android

comunicacao

“Servlet (servidorzinho em tradução livre) é um componente como um servidor, que gera dados HTML e XML para a camada de apresentação de uma aplicação Web. É basicamente uma classe na linguagem de programação Java que dinamicamente processa requisições e respostas, proporcionando dessa maneira novos recursos aos servidores. A definição mais usada considera-os extensões de servidores. Servlet é um módulo que estende a funcionalidade de um servidor Web, através de módulos de aplicação implementados em Java.” (Wikipédia)

O objetivo desse post é mostrar como criar um Servlet para se comunicar via objetos com um cliente Android. No exemplo vou utilizar o NetBeans 7.3 com Glassfish e o Android com uma maquina virtual 4.2.2. O objetivo deste post não é explicar toda estrutura do Servlet, mas sim explicar a criação de um projeto simples que receba um objeto e retorne outro.

Vamos iniciar com a criação do Servlet: Continue reading

Java – Remover tags HTML de uma String (How to remove HTML from String)

html to text

A classe ParserDelegator junto com a interface HTMLEditorKit.ParserCallback do pacote ‘javax.swing.text.html’ permite o reajuste de um texto em HTML para um texto comum, ajustando todas as tags de acentuação e retirando todas as demais tags. Vamos criar uma classe que será responsável por isso, veja abaixo:

public class HtmlToText extends HTMLEditorKit.ParserCallback {

    private StringBuilder s;

    public HtmlToText() {
    }

public String parse(String texto) throws Exception {
byte[] dados = texto.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(dados);
Reader reader = new InputStreamReader(bais);
return parse(reader);
}

    public String parse(Reader in) throws IOException {
        s = new StringBuilder();
        ParserDelegator delegator = new ParserDelegator();
        delegator.parse(in, this, Boolean.TRUE);
        return getText();
    }

    @Override
    public void handleText(char[] text, int pos) {
        s.append(text);
        s.append("n");
    }

    public String getText() {
        return s.toString();
    }
}

Para utilizarmos segue o exemplo:

Continue reading

Java – Criptografia MD5

Sobre a Criptografia MD5

“O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321, e muito utilizado por softwares com protocolo ponto-a-ponto (P2P, ou Peer-to-Peer, em inglês) na verificação de integridade de arquivos e logins.
Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que tinha alguns problemas de segurança. Por ser um algoritmo unidirecional, uma hash md5 não pode ser transformada novamente no texto que lhe deu origem. O método de verificação é, então, feito pela comparação das duas hash (uma da mensagem original confiável e outra da mensagem recebida). O MD5 também é usado para verificar a integridade de um arquivo através, por exemplo, do programa md5sum, que cria a hash de um arquivo. Isto pode-se tornar muito útil para downloads de arquivos grandes, para programas P2P que constroem o arquivo através de pedaços e estão sujeitos a corrupção dos mesmos. Como autenticação de login é utilizada em vários sistemas operacionais unix e em muitos sites com autentificação.
Em 2008, Ronald Rivest e outros, publicaram uma nova versão do algoritmo o MD6 com hash de tamanhos 224, 256, 384 ou 512 bytes. O algoritmo MD6 iria participar do concurso para ser o novo algoritmo SHA-3, porém logo depois removeu-o do concurso por considerá-lo muito lento, anunciando que os computadores de hoje são muito lentos para usar o MD6.” (Wikipidia – 2012)
Agora vamos ver como seria sua utilização na linguagem Java.
Continue reading