Saltar para conteúdo


Foto
- - - - -

Ligar 2 dispositivos virtuais no Eclipse

android eclipse

  • Por favor inicie sessão para responder
2 respostas a este tópico

#1 rubendk

rubendk

    Membro

  • Membros
  • PipPip
  • 10 mensagens

Mensagem publicada 09 May 2013 - 15:51

Boa tarde,

Estou com problemas em ligar 2 dispositivos virtuais no eclipse para testar uma aplicação de servidor-cliente chat.

Já tentei ligar através do comando, no que gera um erro:

 

 

C:\>telnet localhost 5554
telnet localhost 5554
 
C:\>'telnet' is not recognized as an internal or external command,
operable program or batch file.

 

Para integrar a linha de comandos ao eclipse utilizei o seguinte tutorial:

http://www.avajava.c...ole.html?page=1

 

Para além disso tenho de atribuir um ip para cada dispositivo, visto que estão no meu localhost? Como o posso fazer?

 

Obrigado pela ajuda

 



#2 pedronveloso

pedronveloso

    Veloso

  • Administradores
  • 1578 mensagens
  • S8

Mensagem publicada 09 May 2013 - 21:44

Boa tarde,

Estou com problemas em ligar 2 dispositivos virtuais no eclipse para testar uma aplicação de servidor-cliente chat.

Já tentei ligar através do comando, no que gera um erro:

 

 

C:\>telnet localhost 5554
telnet localhost 5554
 
C:\>'telnet' is not recognized as an internal or external command,
operable program or batch file.

 

Para integrar a linha de comandos ao eclipse utilizei o seguinte tutorial:

http://www.avajava.c...ole.html?page=1

 

Para além disso tenho de atribuir um ip para cada dispositivo, visto que estão no meu localhost? Como o posso fazer?

 

Obrigado pela ajuda

 

Por equipamento virtual estás a referir-te a uma AVD? Se sim, então não precisas de fazer nada para que o Eclipse (assumindo que instalaste a plugin de desenvolvimento Android) reconheça ambos os equipamentos, porque o ADB (serviço que faz a ligação com equipamentos e AVDs de Android) vai detectar automaticamente as tuas instâncias de emulador.



#3 rubendk

rubendk

    Membro

  • Membros
  • PipPip
  • 10 mensagens

Mensagem publicada 18 May 2013 - 11:34

Mesmo tendo o ADB instalado  não estou a conseguir realizar a comunicação entre os dois AVD.

Como exemplo vou colocar um dos códigos que possuo. Pode ser que o problema esteja aqui:

 

MainActivity.java

 

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
 
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.TextView;
 
@SuppressLint("NewApi")
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.mattcao.messenger";
private EditText editText;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String redirectedServerPort = deviceDetect();
editText = (EditText) findViewById(R.id.editText1);
try{
 
ServerSocket serverSocket = new ServerSocket(10000);
Log.e("l1", "start server");
new ServerTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, serverSocket); 
}catch (IOException e) {
 
}
 
editText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
boolean handle = false;
if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
keyCode == KeyEvent.KEYCODE_ENTER) {
String msgs = editText.getText().toString() + "\n";
editText.setText("");
TextView textView = (TextView) findViewById(R.id.textView1);
msgs = nameEncode(redirectedServerPort) + ":" + msgs;
textView.append(msgs);
 
Log.e("l1", "start client");
new ClientTask().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, msgs, redirectedServerPort);
handle = true;
}
return handle;
}
} );
}
 
public String deviceDetect() {
TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String portStr = tel.getLine1Number().substring(tel.getLine1Number().length() - 4);
final String redirectedServerPort;
if(portStr.equals("5554")) {
redirectedServerPort = "11112";
}
else {
redirectedServerPort = "11108";
}
return redirectedServerPort;
}
 
public String nameEncode(String port) {
String name;
if(port.equals("11112")) {
name = "Ellen";
} else {
name = "Alex";
}
return name;
}
 
public void sendMessage(View view) {
final String redirectedServerPort = deviceDetect();
editText = (EditText) findViewById(R.id.editText1);
String msgs = editText.getText().toString() + "\n";
editText.setText("");
TextView textView = (TextView) findViewById(R.id.textView1);
msgs = nameEncode(redirectedServerPort) + ":" + msgs;
textView.append(msgs);
 
 
Log.e("l1", "start client");
new ClientTask().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, msgs, redirectedServerPort);
}
 
private class ServerTask extends AsyncTask<ServerSocket, String, Void> {
@Override
protected Void doInBackground(ServerSocket... sockets){
String msgs = null;
ServerSocket serverSocket = sockets[0];
Socket socket;
try {
while(true) {
socket = serverSocket.accept();
 
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
msgs = in.readLine();
publishProgress(msgs);
socket.close();
}
} catch (IOException e) {
 
}
return null;
}
 
protected void onProgressUpdate(String... string){
TextView textView = (TextView) findViewById(R.id.textView1);
textView.append(string[0] + "\n");
return;
}
}
 
private class ClientTask extends AsyncTask<String, Void, Void>{
private String serverIpAddress = "10.0.2.2";
 
protected Void doInBackground(String... string){
try {
Socket socket = new Socket(InetAddress.getByName(serverIpAddress), Integer.parseInt(string[1]));
Log.e("l1", "created a socket");
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);;
   out.println(string[0]);
   Log.e("l1", "Client sent message");
   Log.e("l1", string[0]);
   out.flush();
   
}catch (Exception e) {
e.printStackTrace();
} return null;
}
 
 
}
 
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
 
}
 
 
layout.xml
 
<RelativeLayout xmlns:android="http://schemas.andro...apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" 
        android:layout_above="@+id/editText1"/>
 
    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/button1"
        android:ems="10"
        android:hint="@string/hint"
        android:imeOptions="actionSend"
        android:inputType="textMultiLine" />
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/editText1"
        android:text="@string/button"
        android:onClick="sendMessage" />
 
</RelativeLayout>
 
 
Manifest.xml
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.andro...apk/res/android"
    package="com.mattcao.messenger"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="16" />
    <uses-permission android:name="android.permission.INTERNET"> </uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> </uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.mattcao.messenger.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
 
 
Obrigado pela ajuda

 

 







Também marcado com uma ou mais destas tags: android, eclipse