É o seguinte.
Estou precisando desenvolver uma aplicação que utilize alguma API de rede em android.
Alguém me sugere uma boa?
Seria mais ou menos assim, dois celulares participando da mesma aplicação.
Mais ou menos como Counter Strike, onde se tinha vários computadores ligados em rede.
Isso é possível?
Obg
Procure sobre as APIs de Bluetooth
Não sei se é possivel utilizar Wi-fi desse modo, seria interessante também.
Mas a questão do bluetooth não peca na hora da velocidade e números de conexões simultâneas?
Me falaram sockets.
Sera que rola?
o que acha melhor?
JSR 82
já chato pacas usar ela :S
Essa JSR-82 suportam até quantos dispositivos?
Sabe dizer?
se for bluetooth o limite pelo que sei é 7 (limitação do próprio protocolo)
A minha aplicação eu necessito mais do que 7 pessoas.
Alguma outra sugestão?
[quote=rafaelviny]JSR 82
já chato pacas usar ela :S[/quote]
Não responda errado. JSR 82 em nada tem a ver com o Android.
em J2ME é possível conhecer os limites e características da implementação Bluetooth do aparelho usando chamadas a System.getProperty.
[quote=vasco.fred]A minha aplicação eu necessito mais do que 7 pessoas.
Alguma outra sugestão?
[/quote]
Monte um servidor (aplicação desktop) que manténha múltiplas conexões sockets ativas e vá coordenando esta troca de dados entre os participantes.
O número de participantes ao mesmo tempo vai ser da casa dos milhares usando esta abordagem.
desculpa, nao vi que era para android
Então quer dizer que eu só posso fazer com bluetooth?
pq a ideia é naão ter conexão a internet.
ainda estou um pouco sem entender pq basicamente seria meio que se tivessem duas pessoas em duas salas distintas, as mesmas pudessem acessar o aplicativo sem conectar a internet. entendeu?
[quote=vasco.fred]Então quer dizer que eu só posso fazer com bluetooth?
pq a ideia é naão ter conexão a internet.
ainda estou um pouco sem entender pq basicamente seria meio que se tivessem duas pessoas em duas salas distintas, as mesmas pudessem acessar o aplicativo sem conectar a internet. entendeu?
[/quote]
Sem internet a única opção é com Bluetooth e obedecendo as limitações do cliente/server.
Agora faça um favor e estude as topologias de rede pois elas poderão permitir que você permita a comunicação com muito mais que 7 usuários ao mesmo tempo.
Dica: Piconet e Scatternet
Wi-Fi não entra no que vc precisaria pois dependeria de um roteador sem fio. Para quem não quer depender de Internet, tb não vai querer depender de roteador.
No caso ão é possível que eu conecte dois celulares via wifi?
Sendo um servindo como servidor e outro cliente?
Se sim, existe alguma API específica?
Como já lhe disse, não é possível. Próximo !!!
Ok.
Irei usar de fato agora um servidor central.
Agora estou com outro problema.
Estou tentando criar uma comunicação entre um servidor no pc e um cliente no android, apenas para testar.
[code]
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class AndroidSocket extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
Socket socket = new Socket("10.0.2.2", 1234);
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
os.writeUTF("Mensagem do Android...");
os.flush();
Log.i("Socket", in.readUTF());
os.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
[/code
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class JavaServerSocket {
private static ServerSocket server;
public static void main(String[] args) throws IOException {
server = new ServerSocket(1234);
System.out.println("Aguardando conexoes...");
Socket accept = server.accept();
enviaMensagemSocket(accept);
}
private static void enviaMensagemSocket(final Socket accept) {
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("Recebeu uma conexao...");
DataInputStream is = new DataInputStream(accept
.getInputStream());
System.out.println("->Leu Mensagem");
System.out.println(new String(is.readUTF()));
DataOutputStream out = new DataOutputStream(accept
.getOutputStream());
out.writeUTF("Resportado Servidor...");
out.flush();
out.close();
is.close();
accept.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
Coloco em java esse servidor, coloco pra rodar aparece: Aguardando Conexões.
Quando coloco pra rodar(no emulador) o codigo do cliente da esse erro:
The Aplication TesteConexao (process com.android) has stopped unexpectedly. Please try again.
Outra coisa, eu tinha esse código de servidor antigo.
Será que ele serve para esse meu primeiro teste?
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String args[]) throws Exception{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}