|
Página 1 de 1
|
[ 32 Mensagens ] |
|
[TUTORIAL] Trabalhando com Socket no Android II - Arquivo
| Autor |
Mensagem |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 [TUTORIAL] Trabalhando com Socket no Android II - Arquivo
Irei dar continuidade ao tutorial, Trabalhando com Socket no Android, publicado aqui no Portal Android. Na primeira parte foi simplesmente enviado uma mensagem (String) para o servidor, através do dispositivo Android. Agora vamos alterar um pouco o projeto, para que seja possível enviarmos fotos, através de um Socket. E para isso vamos utilizar a camera do próprio dispositivo Android, cujo assunto foi abordado no Tutorial Utilizar Camera do Android - Intent, também disponível aqui no portal. Iniciamos alterando o arquivo AndroidManifest.xml, permitindo gravar dados em uma unidade externa (SD Card). AndroidManifest.xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
O arquivo form_msg.xml, será alterado para que possamos, iniciar a camera do dispositivo e visuzalizar a foto e enviá-la para o Servidor Socket. form_msg.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="10" android:id="@+id/layoutMensagem"> <TextView android:layout_width="fill_parent" android:text="" android:layout_height="wrap_content" android:id="@+id/lbIp" android:layout_weight="1"></TextView> <ImageView android:src="@drawable/icon" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="5" android:id="@+id/imgImagem"></ImageView> <TextView android:text="" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/lbMensagemServ"></TextView> <Button android:text=">>Enviar Imagem" android:id="@+id/btnEnviar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:visibility="invisible"></Button> <Button android:text=">>Camera" android:id="@+id/btnCamera" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"></Button> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:orientation="vertical" android:id="@+id/linearLayout2" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:text="Servidor-> Conectado" android:id="@+id/lbStatus" android:layout_height="wrap_content"></TextView> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:id="@+id/linearLayout2" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:text=">>Desconectar" android:id="@+id/btnDesconectar" android:layout_height="wrap_content" android:layout_weight="1"></Button> </LinearLayout> </LinearLayout>
Note que retiramos o EditText, onde escreviámos a mensagem, e colocamos um ImegeView, onde será apresentadoa foto. Adicionamos um botão para iniciar a câmera, btnCamera, e outro para enviar a foto, btnEnviar, que está oculto e só será exibido ao possuir alguma foto no ImageView. Sender.java @Override public void run () { while (running ) {// Enquanto estiver executando try { if (image != null) { // Se existir uma Imagem para enviar // Converte Bitmap para bytes ByteArrayOutputStream bos = new ByteArrayOutputStream(); image. compress(CompressFormat. PNG, 0, bos ); byte[] byteImage = bos. toByteArray(); // Escreve Stream da imagem out. write(byteImage ); out. flush(); image = null; } } catch (IOException e ) { e. printStackTrace(); msg = new Message (); msg. arg1 = ConnectionSocket. ERROR; msg. obj = e. getMessage(); handler. sendMessage(msg ); running = false; } } try { out. close(); } catch (IOException e ) { e. printStackTrace(); } } Sender.java é a classe responsável pelo envio da imagem. Antes, ela somente enviava uma String. Então o atributo message foi substituido por um atributo do tipo Bitmap. No método run(), passamos a converter o bitmap em Stream, para enviar ao servidor de socket. Agora vamos ver como ficou o código da classe MensagemAndroid.java. MensagemAndroid.java. public class MensagemAndroid extends Activity implements OnClickListener { private static final int TAKE_PICTURE = 4; private TextView lbStatus; private Button btnDesconectar; private Button btnCamera; private Button btnEnviar; private Bitmap bitmap; private ImageView imgImagem; (... ) @Override protected void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. form_msg); lbStatus = (TextView ) findViewById (R. id. lbStatus); btnEnviar = (Button) findViewById (R. id. btnEnviar); btnEnviar. setOnClickListener(this); imgImagem = (ImageView ) findViewById (R. id. imgImagem); btnCamera = (Button) findViewById (R. id. btnCamera); btnCamera. setOnClickListener(this); Nessa classe declaramos uma constante TAKE_PICTURE, que será usada posteriormente. Ainda nesta classe recuperamos os objetos de tela, para adicionarmos o listener de click. MensagemAndroid.java public void onClick (View v ) { // clicou no botão desconectar if (v == btnDesconectar ) { try { ConnectionSocket. getCurentConnection(). disconnect(); } catch (Exception e ) { e. printStackTrace(); } // Clicou no botão enviar mensagem } else if (v == btnEnviar ) { ConnectionSocket. getCurentConnection(). sendImage(bitmap ); } else if (v == btnCamera ) { Intent intent = new Intent (MediaStore. ACTION_IMAGE_CAPTURE); startActivityForResult (intent, TAKE_PICTURE ); } } Ao clicar no botão btnCamera, iniciamos a Intent da camera do dispositivo (esse assunto foi abrodado no tutorial Utilizar Camera do Android - Intent). Já o botão >>Enviar, agenda a imagem para envio ao servidor ConnectionSocket.getCurentConnection().sendImage(bitmap);. Quando utilizamos startActivityResult, podemos manipular o retorno no método protected void onActivityResult(int requestCode, int resultCode, Intent data). MensagemAndroid.java @Override protected void onActivityResult (int requestCode, int resultCode, final Intent data ) { if (requestCode == TAKE_PICTURE ) { if (resultCode == RESULT_OK ) { bitmap = (Bitmap ) data. getExtras(). get("data"); imgImagem. setImageBitmap(bitmap ); btnEnviar. setVisibility(Button. VISIBLE); } else if (resultCode == RESULT_CANCELED ) { Toast. makeText(this, "Cancelou", Toast. LENGTH_SHORT); } else { Toast. makeText(this, "Saiu", Toast. LENGTH_SHORT); } } } Primeiro testamos se o resultado é o que requisitamos a Intent, na linha 1, para isso utilizamos a constante TAKE_PICTURE, depois exibimos a imagem dentro do ImageView e exibe o botão >>Enviar. Primeiro vamos executar o projeto do Servidor.  Agora vamos executar o Projeto do Android.  Após clicarmos em Conectar, aparecerá a tela MensagemAndroid.java.  Ao clicar no botão Camera a o aplicativo da camero do dipositivo será iniciada, aparece uma tela com vários quadrados como na imagem abaixo. Isso acontece porque estamos rodando o programa em um emulador.  Após, tirarmos a foto voltaremos novamente na tela de envio das fotos, com nossa foto no ImageView e com o botão >>Enviar visível, então clicando no botão enviar, ela será recebido no servidor. O código fonte dos projetos estão disponíveis para download aqui. Esse tutorial demonstra um pouco do poder de comunicação via Socket, onde na primeira parte enviamos um simples mensagem e com poucas linhas de alteração passamos a enviar um arquivo.
|
| 20 Set 2011, 18:31 |
|
 |
|
vini.durlo
What is Android?
Data de registro: 15 Abr 2011, 09:31 Mensagens: 6
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
o pessoal da comunidade é fera mesmo!
turim, que belo artigo!
|
| 21 Set 2011, 19:08 |
|
 |
|
Ferncs
What is Android?
Data de registro: 14 Set 2011, 13:25 Mensagens: 5
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Tutorial simplesmente perfeito! Ta ajudando e MTO no meu aplicativo!
|
| 26 Set 2011, 10:28 |
|
 |
|
Ferncs
What is Android?
Data de registro: 14 Set 2011, 13:25 Mensagens: 5
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
A parte do android esta funcionando certinho, porém quando eu envio uma imagem, na parte do servidor, ela é criada, nomeada certinho, porem essa imagem não pode ser aberta enquanto o servidor nao eh fechado, pelos meus testes, o código não sai desse laço: while ((read = in.read()) != -1) { fout.write(read); }
|
| 01 Out 2011, 14:24 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Testei o código aqui e está ok.
Veja se no lado do ClienteAndroid, está chamando o método flush() após 'escrever' os bytes da figura no stream.
|
| 03 Out 2011, 09:26 |
|
 |
|
Ferncs
What is Android?
Data de registro: 14 Set 2011, 13:25 Mensagens: 5
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
turim escreveu: Testei o código aqui e está ok.
Veja se no lado do ClienteAndroid, está chamando o método flush() após 'escrever' os bytes da figura no stream. Esta sim, na classe Sender Seria possivel vc upar o apk pra eu testar no meu celular? Vlws
|
| 06 Out 2011, 00:18 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Você quer dizer enviar a APK para para o aparelho ?
|
| 14 Out 2011, 17:29 |
|
 |
|
Ferncs
What is Android?
Data de registro: 14 Set 2011, 13:25 Mensagens: 5
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Ow turim vlw! Eu arrumei aqui e deu certo, Apenas inclui esse try logo após enviar o arquivo: try { ConnectionSocket. getCurentConnection(). disconnect(); } catch (Exception e ) { e. printStackTrace(); } Agora roda de boas! vlws!
|
| 15 Out 2011, 00:00 |
|
 |
|
lmc275
Anatomy of an App
Data de registro: 25 Nov 2011, 15:17 Mensagens: 158 Localização: Florianópolis
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Consigo mandar uma entidade por Socket? como faria?
_________________ -- Att, Leandro
|
| 25 Nov 2011, 16:37 |
|
 |
|
lmc275
Anatomy of an App
Data de registro: 25 Nov 2011, 15:17 Mensagens: 158 Localização: Florianópolis
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Olá, Gostaria de enviar uma entidade por Socket seria desta forma? Muito Obrigado! 
_________________ -- Att, Leandro
|
| 25 Nov 2011, 16:42 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
O Objecto deve implementar java.io.Serialinable, e é exatamente da forma com que você colocou.
Mas no lado do Android, deve-se exsitir essa classem caso contrário ele não vai conseguir "recriá-la".
|
| 26 Nov 2011, 13:29 |
|
 |
|
ellismar
What is Android?
Data de registro: 16 Dez 2011, 15:05 Mensagens: 7
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
e ai galera. funcionou bacana. Agora como que eu faço para pegar esse arquivo que foi para o servidor e jogar em qualquer pasta no dispositivo.
|
| 02 Fev 2012, 15:46 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
ellismar, é possível fazer o caminho inverso, como você falou. Teria que fazer algumas alterações. Mas da mesma foram que o Servidor envia uma String como aviso de que recebeu a imagem, ele poderia enviar um arquivo, na verdade, um array de bytes.
E no servidor converteria esse byte[] em imagem novamente.
|
| 02 Fev 2012, 17:53 |
|
 |
|
ellismar
What is Android?
Data de registro: 16 Dez 2011, 15:05 Mensagens: 7
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
valeu meu brother. Bom eu sou novo nessa área, tem como você fazer um exemplo simples pra eu dar uma olhada.
Desde já agradeço.
|
| 02 Fev 2012, 22:11 |
|
 |
|
lmc275
Anatomy of an App
Data de registro: 25 Nov 2011, 15:17 Mensagens: 158 Localização: Florianópolis
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Consigo colocar pra rodar fazendo um server no pc por USB para o celular? como faria para ele se comunicar com o computador ?
_________________ -- Att, Leandro
|
| 07 Mar 2012, 16:17 |
|
 |
|
Lucimar-@ndr0!d
What is AVD?
Data de registro: 22 Mar 2012, 17:37 Mensagens: 11
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
olá, Turin A aplicação não está executando no emulador. "infelizmente a aplicação parou de funcionar"
o log é o seguinte
03-22 15:04:47.095: D/AndroidRuntime(1171): Shutting down VM 03-22 15:04:47.165: W/dalvikvm(1171): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 03-22 15:04:47.255: E/AndroidRuntime(1171): FATAL EXCEPTION: main 03-22 15:04:47.255: E/AndroidRuntime(1171): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{br.com.android/view.clienteAndroid}: java.lang.ClassNotFoundException: view.clienteAndroid 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.app.ActivityThread.access$600(ActivityThread.java:123) 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.os.Handler.dispatchMessage(Handler.java:99) 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.os.Looper.loop(Looper.java:137) 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.app.ActivityThread.main(ActivityThread.java:4424) 03-22 15:04:47.255: E/AndroidRuntime(1171): at java.lang.reflect.Method.invokeNative(Native Method) 03-22 15:04:47.255: E/AndroidRuntime(1171): at java.lang.reflect.Method.invoke(Method.java:511) 03-22 15:04:47.255: E/AndroidRuntime(1171): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 03-22 15:04:47.255: E/AndroidRuntime(1171): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-22 15:04:47.255: E/AndroidRuntime(1171): at dalvik.system.NativeStart.main(Native Method) 03-22 15:04:47.255: E/AndroidRuntime(1171): Caused by: java.lang.ClassNotFoundException: view.clienteAndroid 03-22 15:04:47.255: E/AndroidRuntime(1171): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 03-22 15:04:47.255: E/AndroidRuntime(1171): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 03-22 15:04:47.255: E/AndroidRuntime(1171): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 03-22 15:04:47.255: E/AndroidRuntime(1171): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 03-22 15:04:47.255: E/AndroidRuntime(1171): ... 11 more 03-22 15:04:53.906: I/Process(1171): Sending signal. PID: 1171 SIG: 9 03-22 15:32:42.066: D/AndroidRuntime(1220): Shutting down VM 03-22 15:32:42.116: W/dalvikvm(1220): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 03-22 15:32:42.145: E/AndroidRuntime(1220): FATAL EXCEPTION: main 03-22 15:32:42.145: E/AndroidRuntime(1220): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{br.com.android/view.ClienteservidorActivity}: java.lang.ClassNotFoundException: view.ClienteservidorActivity 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.app.ActivityThread.access$600(ActivityThread.java:123) 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.os.Handler.dispatchMessage(Handler.java:99) 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.os.Looper.loop(Looper.java:137) 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.app.ActivityThread.main(ActivityThread.java:4424) 03-22 15:32:42.145: E/AndroidRuntime(1220): at java.lang.reflect.Method.invokeNative(Native Method) 03-22 15:32:42.145: E/AndroidRuntime(1220): at java.lang.reflect.Method.invoke(Method.java:511) 03-22 15:32:42.145: E/AndroidRuntime(1220): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 03-22 15:32:42.145: E/AndroidRuntime(1220): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-22 15:32:42.145: E/AndroidRuntime(1220): at dalvik.system.NativeStart.main(Native Method) 03-22 15:32:42.145: E/AndroidRuntime(1220): Caused by: java.lang.ClassNotFoundException: view.ClienteservidorActivity 03-22 15:32:42.145: E/AndroidRuntime(1220): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 03-22 15:32:42.145: E/AndroidRuntime(1220): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 03-22 15:32:42.145: E/AndroidRuntime(1220): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 03-22 15:32:42.145: E/AndroidRuntime(1220): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 03-22 15:32:42.145: E/AndroidRuntime(1220): ... 11 more 03-22 15:32:49.155: I/Process(1220): Sending signal. PID: 1220 SIG: 9 03-22 16:21:44.506: D/AndroidRuntime(1237): Shutting down VM 03-22 16:21:44.529: W/dalvikvm(1237): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 03-22 16:21:44.706: E/AndroidRuntime(1237): FATAL EXCEPTION: main 03-22 16:21:44.706: E/AndroidRuntime(1237): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{br.com.android/view.ClienteservidorActivity}: java.lang.ClassNotFoundException: view.ClienteservidorActivity 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.app.ActivityThread.access$600(ActivityThread.java:123) 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.os.Handler.dispatchMessage(Handler.java:99) 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.os.Looper.loop(Looper.java:137) 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.app.ActivityThread.main(ActivityThread.java:4424) 03-22 16:21:44.706: E/AndroidRuntime(1237): at java.lang.reflect.Method.invokeNative(Native Method) 03-22 16:21:44.706: E/AndroidRuntime(1237): at java.lang.reflect.Method.invoke(Method.java:511) 03-22 16:21:44.706: E/AndroidRuntime(1237): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 03-22 16:21:44.706: E/AndroidRuntime(1237): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-22 16:21:44.706: E/AndroidRuntime(1237): at dalvik.system.NativeStart.main(Native Method) 03-22 16:21:44.706: E/AndroidRuntime(1237): Caused by: java.lang.ClassNotFoundException: view.ClienteservidorActivity 03-22 16:21:44.706: E/AndroidRuntime(1237): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 03-22 16:21:44.706: E/AndroidRuntime(1237): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 03-22 16:21:44.706: E/AndroidRuntime(1237): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 03-22 16:21:44.706: E/AndroidRuntime(1237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 03-22 16:21:44.706: E/AndroidRuntime(1237): ... 11 more 03-22 16:26:46.427: I/Process(1237): Sending signal. PID: 1237 SIG: 9
|
| 22 Mar 2012, 17:42 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
A excessão java.lang.ClassNotFoundException, quer dizer que a classe não existe no projeto.
Nesse caso a classe ClienteservidorActivity.
Mas essa classe realmente não existe no projeto.
Provavelmente aconteceu problemas ao importar o projeto no eclipse, ou você pode ter renomeado a classe.
|
| 22 Mar 2012, 18:53 |
|
 |
|
GabrielKenji
What is Android?
Data de registro: 17 Abr 2012, 11:52 Mensagens: 1
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Olá.. Fiz todos os procedimentos, mais estou testando em um celular físico, rodei o ServidorJava na minha máquina, conectei perfeitamente, mais na hora do envio da imagem está apresentando este erro: Citação: ----------- SERVIDOR CONECTADO 192.168.10.5 PORTA 1234 ----------- Esperando Conexões. Sevidor-> Conectou Ip 192.168.10.107 <Conectou Cliente> Imagem gravada->10_47_37-17_04_2012.png <Conectou Cliente> Servidor-> Erro: Software caused connection abort: socket write error Imagem gravada->10_47_37-17_04_2012.png java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(Unknown Source) at java.net.SocketOutputStream.write(Unknown Source) at java.io.DataOutputStream.write(Unknown Source) at java.io.FilterOutputStream.write(Unknown Source) at com.sevidor.Servidor.main(Servidor.java:80)
Porém, mesmo dando o erro, apareceu os arquivos na pasta do "ServidorJava". Abri os arquivos que foi enviados e todos aparece que não é possível "Visualização não disponível".
|
| 17 Abr 2012, 12:02 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Tente executar e ver em que linha está acontecendo o erro.
|
| 17 Abr 2012, 14:51 |
|
 |
|
welitons20
What is Android?
Data de registro: 16 Abr 2012, 18:22 Mensagens: 3
|
 Banco De Dados em Servidor com Socket
Estou desenvolvendo uma aplicação de cadastro de clientes com banco de dados em um servidor (tem que ser via socket), como envio e busco os dados no servidor e como faço para sincronizar os bancos pois minha aplicação roda offline, mas quando se conecta na web, tem que sincronizar os bancos, e tambem fazer gravações e consultas diretamente no banco socket...
|
| 27 Mai 2012, 00:13 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
welitons20
Aí vai da sua aplicação. O Socket simplesmente resolve o problema da comunidação via rede.
A partir daí você deve desenvolver uma forma de controlar os registros do SQLite do Android, com o Servidor remoto.
Vai muito do negócio.
[]'s
|
| 28 Mai 2012, 14:42 |
|
 |
|
Wyllyam
Hello Android
Data de registro: 22 Mar 2012, 10:35 Mensagens: 43
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Tudo bom turim... manja d+ ein rapaiz! hehe aqui é o seguinte, to com uma mega dúvida.. estou fazendo meu tcc com android e é o seguinte, no android, vou armazenando dados dos clientes, tudo em um banco de dados (banco de dados feito no SQLLite), queria transferir esse banco de dados carregado para um servidor para que o mesmo possa fazer a leitura desses dados. Como posso fazer isso? estou precisando só disso pra fechar meu tcc ! a ajuda de outras pessoas também sao bem vindaas!  Wyllyam
|
| 28 Set 2012, 20:50 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Wyllyam escreveu: Tudo bom turim... manja d+ ein rapaiz! hehe aqui é o seguinte, to com uma mega dúvida.. estou fazendo meu tcc com android e é o seguinte, no android, vou armazenando dados dos clientes, tudo em um banco de dados (banco de dados feito no SQLLite), queria transferir esse banco de dados carregado para um servidor para que o mesmo possa fazer a leitura desses dados. Como posso fazer isso? estou precisando só disso pra fechar meu tcc ! a ajuda de outras pessoas também sao bem vindaas!  Wyllyam Existem várias formas de se fazer isso. Só que o Socket não fornece suporte a isso ok? Será da parte do seus sistema, caberia a você desenvolver isso. Além de Socket você pode utilizar WebServices, Http puro, aqui no portal tem tutoriais sobre esses assuntos. Você pode transferir um aquivo como se fosse um script e executar no banco externo, pode cirar um protocolo e assim interpretar no Servidor e inserir. Para isso vai precisar de um Servlet ou um ServerSocket. Basta conectar ao Socket/Servlet, e enviar uma String/Arquivo, contento as alterações do Banco. A partir daí o Servidor (Socket/Servlet), deve interpretar e persistir no BD. Espero que ajude. []
|
| 02 Out 2012, 11:48 |
|
 |
|
joserodrigues
What is DDMS?
Data de registro: 13 Ago 2012, 11:29 Mensagens: 33
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Tem como eu implementar um Socket para rodar em um programa Java Web?
|
| 30 Out 2012, 11:31 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
joserodrigues escreveu: Tem como eu implementar um Socket para rodar em um programa Java Web? Nunca tentei, Socket é uma classe JavaSE. Se não me engano o Socket está baixo do Servlet. O Servlet é uma camada acima do Socket. Pode até ser que possa ser usado, mas nào faz muito sentido. Socket implementa um tipo de comunicação chamada full-duplex, já o Http não, você envia uma requisição e não sab quando vai voltar a resposta.
|
| 31 Out 2012, 08:37 |
|
 |
|
Sniper 3d
What is AVD?
Data de registro: 15 Mar 2012, 15:36 Mensagens: 11
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Turim boa tarde. gostaria de saber se você pode me ajudar com uma aplicação que usa socket para conectar com um dispositivo bluetooth (leitor optico de codigo de barras). eu consigo fazer a conexão com o dispositivo e até ler o inputstream dele em uma unica janela, porem eu queria fazer a conexão ao abrir a aplicação e ficar ouvindo o inputstream dele enquanto a aplicação estiver aberta, só que não estou sabendo como posso criar essa classe de forma que o inputstream dele fique acessivel o tempo todo, no meu caso eu sou o servidor socket e o leitor deve ficar me enviando leituras. abaixo segue oque eu fiz em uma unica janela e que funciona. package br. com. newbluetooth; import java. io. IOException; import java. io. InputStream; import java. util. Scanner; import java. util. Set; import java. util. UUID; import android. annotation. SuppressLint; import android. app. Activity; import android. bluetooth. BluetoothAdapter; import android. bluetooth. BluetoothDevice; import android. bluetooth. BluetoothSocket; import android. os. Bundle; import android. os. Handler; import android. os. Message; //import android.widget.EditText;import android. widget. Toast; @SuppressLint ("HandlerLeak")public class New3 extends Activity { // Socket de Conexão private BluetoothSocket socket; // Fluxo de Entrada de Dados private InputStream input; // Manipulador de Mensagens private final Handler h = new Handler () { public void handleMessage (Message msg ) { // Manipular Mensagem String content = msg. getData(). getString("LEITOR"); // Captura do Conteúdo da Mensagem Toast. makeText(New3. this, "NF: " + content, Toast. LENGTH_SHORT). show(); } }; public void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. new3); // Requisição do Adaptador BluetoothAdapter adapter = BluetoothAdapter. getDefaultAdapter(); if (adapter == null) { // Não há Bluetooth // Mensagem de Erro ao Usuário Toast. makeText(New3. this, "Adaptador não Encontrado", Toast. LENGTH_SHORT). show(); finish (); } if (!adapter. isEnabled()) { // Bluetooth Habilitado? // Mensagem de Erro ao Usuário Toast. makeText(New3. this, "Bluetooth Desabilitado", Toast. LENGTH_SHORT). show(); finish (); } // Dispositivos Pareados Set<BluetoothDevice> devices = adapter. getBondedDevices(); // Servidor Bluetooth BluetoothDevice server = null; String servername = "OPN2002_F13B"; // Nome do Servidor // Pesquisa do Servidor Pareado for (BluetoothDevice device : devices ) { // Laço de Busca if (servername. equals(device. getName())) { // Nomes Idênticos? server = device; // Dispositivo Encontrado e Selecionado } } // Dispositivo Encontrado? if (server == null) { // Mensagem de Erro ao Usuário Toast. makeText(New3. this, "Servidor não Pareado", Toast. LENGTH_SHORT). show(); finish (); } // Servidor Bluetooth final BluetoothDevice computer = server; // Abrindo a Conexão Thread connector = new Thread() { public void run () { // Identificador Único do Servidor UUID ident = UUID. fromString("00001101-0000-1000-8000-00805F9B34FB"); try { // Socket de Conexão BluetoothSocket s = computer. createRfcommSocketToServiceRecord(ident ); // Conectar ao Servidor s. connect(); // Execução Bloqueante // Fluxos de Entrada e Saída de Dados InputStream in = s. getInputStream(); // OutputStream out = s.getOutputStream(); // Captura de Objetos socket = s; // Socket de Conexão input = in; // Fluxo de Entrada de Dados // output = out; // Fluxo de Saída de Dados // Informar sobre Conexão Scanner sss = new Scanner (input ); Bundle t = new Bundle (); Message msg = new Message (); int LEITOR = 1; msg. what = LEITOR; // while (sss.nextLine() != null) { while (sss. hasNext()) { // Toast.makeText(New2.this,"Leu: " + // sss.nextLine(),Toast.LENGTH_SHORT).show(); // et_e.setText(sss.nextLine()); t. putString("LEITOR", sss. nextLine()); msg. setData(t ); h. sendMessage(msg ); } } catch (IOException e ) { // Erro de Entrada e Saída de Dados // Mensagem de Erro ao Usuário finish (); } } }; // Executando o Fluxo de Processamento connector. start(); // Inicialização } public void onDestroy () { super. onDestroy(); // Método Sobrescrito if (socket != null) { // Socket Configurado? try { socket. close(); // Fecha Conexão } catch (IOException e ) { // Erro Encontrado? // Mensagem de Erro ao Usuário Toast. makeText(New3. this, "Erro ao Fechar Socket", Toast. LENGTH_SHORT). show(); } } }} tentei criar uma classe bluetooth conection que até conecta, mas não sei como deve ser a thread que fica lendo o inputstream dela por fora desta classe bluetooth conection. package br. com. mirassol_mobile. conexao; import java. io. IOException; import java. util. Set; import java. util. UUID; import android. bluetooth. BluetoothAdapter; import android. bluetooth. BluetoothDevice; import android. bluetooth. BluetoothSocket; public class BluetoothCon { private BluetoothSocket socket = null; public BluetoothSocket conecta (String serverName ) { // Requisição do Adaptador BluetoothAdapter adapter = BluetoothAdapter. getDefaultAdapter(); if (adapter == null) { // Não há Bluetooth socket = null; return socket; } if (!adapter. isEnabled()) { // Bluetooth Habilitado? socket = null; return socket; } // Dispositivos Pareados Set<BluetoothDevice> devices = adapter. getBondedDevices(); // Servidor Bluetooth BluetoothDevice server = null; // Pesquisa do Servidor Pareado for (BluetoothDevice device : devices ) { // Laço de Busca if (serverName. equals(device. getName())) { // Nomes Idênticos? server = device; // Dispositivo Encontrado e Selecionado } } // Dispositivo Encontrado? if (server == null) { socket = null; return socket; } // Servidor Bluetooth final BluetoothDevice computer = server; // Abrindo a Conexão // Identificador Único do Servidor UUID ident = UUID. fromString("00001101-0000-1000-8000-00805F9B34FB"); try { // Socket de Conexão BluetoothSocket s = computer. createRfcommSocketToServiceRecord(ident ); // Conectar ao Servidor s. connect(); // Execução Bloqueante socket = s; // Socket de Conexão } catch (IOException e ) { // Erro de Entrada e Saída de Dados // Mensagem de Erro ao Usuário // finish(); } return socket; }} não sei se fui claro na minha explicação. desde ja agradeço a atenção.
|
| 03 Jan 2013, 17:42 |
|
 |
|
PedroCarvilhe
Android application
Data de registro: 11 Dez 2012, 10:48 Mensagens: 97
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Olá pessoal, bom dia a todos, achei esse tutorial muito interessante e gostaria de implementar este código mais de uma forma diferente, com o Android sendo o servidor e o Cliente em Java, para enviar arquivos .txt pro Android, desde já agradeço
|
| 04 Fev 2013, 09:39 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Olá PedroCarvilhe, A APi do Android possui a classe ServerSocket, basta implementá-la, como foi implementado no servidor JSE do tutorial. Acredito que funcione. []
|
| 05 Fev 2013, 09:50 |
|
 |
|
guilhermetaylor
What is Android?
Data de registro: 23 Out 2012, 23:24 Mensagens: 1
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Alguem sabe como eu posso fazer o servidor receber conexões com vários clientes diferentes? Estou precisando disso para finalizar o tcc...
|
| 04 Mar 2013, 15:34 |
|
 |
|
Ettorefk
What is Android?
Data de registro: 22 Mar 2013, 09:54 Mensagens: 1
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Tutorial fera!!
Estou utilizando o código para fazer esse processo de transferência de arquivo "txt" do dispositivo para servidor. Minha duvida é se trocar as referencias as imagens por File, daria certo para manter a transferência dos arquivos?
|
| 22 Mar 2013, 10:02 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
guilhermetaylor escreveu: Alguem sabe como eu posso fazer o servidor receber conexões com vários clientes diferentes? Estou precisando disso para finalizar o tcc... Deve-se utilizar Threads, uma rápida busca no google você encontra.
|
| 04 Abr 2013, 18:00 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android II - Arquiv
Ettorefk escreveu: Tutorial fera!!
Estou utilizando o código para fazer esse processo de transferência de arquivo "txt" do dispositivo para servidor. Minha duvida é se trocar as referencias as imagens por File, daria certo para manter a transferência dos arquivos? Seria a mesma coisa, no final tudo são Streams, bastaria converter um File.
|
| 04 Abr 2013, 18:02 |
|
|
|
Página 1 de 1
|
[ 32 Mensagens ] |
|
Quem está online |
Usuários vendo este fórum: abruzzi, Adriano, alexvbh, Anderson MarkZ, andreleitao, andrelom, andreluiz, arilsonm, ariostorecco, arkanjo, b7web, baudamix, bigr ecreio, brenda, brenno, brpiassa, brunogh, brunomalka, BrunoO, C0GuM3I0, cabelo, camilodev, Celso Jr., cesao, cezaraf, Chassot, ciro, cleberkct, cyzko, DaDih*, Danilo Dias, danilosouza, dannieltec, Darth Maul, Darth Vader, DAVINCE, dbispo, diegorrborges, Eduardo - Brasil, eduardo.ali, elisa, estratec, faco, felipe.buarque, felipedsilva, Fernando Cardia, fernando neves, frederico.affini, fredjpa, gabrielpg, garretereis, genildof, geovanebg, Geovanne Duarte, glmsistemas, Gnomo, grandebaro, Guilherme Cobain, HAMSES, hebert, helder84, henrique.garcia, ice, inesfg, interservic, j-menezes, jefficojava, Jota, João Miguel Aguiar, JRSIQUEIRA, juliano, juniorsk8, kusanaguy, leandroviana, Lelinho, leoadias, leosl81, lfirpo, luciocamilo, lufreitas, MarceloLuz, marcos_trb, marlovich, maurofjr, mirelli, mrkensley, mvoto, NeruLL, nfaria, Nice, nina.rm, nivaldo, Nute Gunray, otium, Rafael, Rafael Alencar, rafael.cioban, rbenatti, reginaldo, reginaldofdias, regisjj, ricardo, rocha, rodrigoinnova, Samantha, silvio.carlos, SirBagda, sjta, Thiago, thiagoalgo, Tognoli, ton.soares, ubiratan, vandob, wagner_francisco, wender, wesley.messias, wilson.slima, Wookiees, xikin, Yoshihury, Yuri e 3 visitantes |
|
Você não pode criar novos tópicos neste fórum Você não pode responder tópicos neste fórum Você não pode editar suas mensagens neste fórum Você não pode excluir suas mensagens neste fórum Você não pode enviar anexos neste fórum
|
|