Olá pessoal,
Meu negocio é o seguinte, estou criando uma aplicação android para se comunicar com um pc para realizar stream
ao vivo de audio e vídeo (a tela do pc no smartphone) atraves de bluetooth (btspp). O programa funciona legal, porém o problema
é que a taxa de escrita do pc para o celular é muito lenta, ~14 kb/s o que faz sempre travar e bufferizar, e travar e bufferizar…
Mas o mistério é que o problema não é no dispositivo Bluetooth que eu uso, pois quando eu envio um arquivo normalmente pelo
windows clicando lá na bandeja e “enviar arquivo” a transferencia é mto rápida ~1MB/s.
Eu já pesquisei bastante, inclusive o tutorial no android developers sobre BT e está igual lá.
Ah, estou usando a biblioteca BlueCove 2.1 no aplicativo desktop.
vejam como está minha thread de envio por bluetooth no lado do servidor (pc),
mto simples, leio de um arquivo de audio e envio. (nessa versao to só testando o envio de um arquivo mp3 mesmo)
[b]int numBytes;
byte[] bufferDisco = new byte[262144]; //(256kb de leitura por vez do hd)
while(true) {
numBytes = inputStreamArquivoAudio.read(bufferDisco);
if (numBytes != -1) {
outputStream.write(bufferDisco,0,numBytes); //aqui eu escrevo os bytes lidos do disco no outputStream da conexao bluetooth
}
else {
break;
}
}[/b]
no lado do cliente (android) é mais simples ainda:
byte[] bufferLeitura = new byte[4096]; //nao importa o tamanho, sempre só chega 1006 bytes
while (true) {
numBytes = inputStreamBluetooth.read(bufferLeitura);
//faz qualquer coisa
}
pessoal, no grosso é isso aí.
Ah, outra coisa, eu vejo que do outro lado (do android) sempre chega 1006 bytes por vez, sempre,
não importa o tamanho do buffer de leitura lá. A taxa fica muito lenta.
Isso tem a ver com MTU? eu li um pouco mas nao consegui alterar isso com bluecove.
Alguem ja passou por isso?