2012-04-30 17 views
8

Hola estoy trabajando en una aplicación de Android que requiere enviar una cadena a través de wifi a PC, lo que resulta en la simulación de teclados del teclado. ¿Alguna idea de cómo puedo lograr esta tarea?cómo enviar cadenas de Android a PC a través de wifi

+0

Usted puede utilizar este enlace [enter Descripción enlace aquí] (http://stackoverflow.com/questions/10388250/how-to-send-string- from-android-to-pc-over-wifi? noredirect = 1 & lq = 1) –

+0

Disculpe, puede utilizar este enlace: [introducir la descripción del enlace aquí] (http://stackoverflow.com/questions/31611593/send-text- from-android-to-pc-via-wi-fi-connection?noredirect = 1 & lq = 1) –

Respuesta

28

Usted tendría que escribir un programa de servidor en el PC y utilizar un ServerSocket para aceptar una conexión desde y escribir un hilo para su teléfono Android que utiliza un enchufe normal (con el mismo puerto que el extremo del PC) y luego administrarlos usando DataInputStream y DataOutputStream. También necesita abrir permisos en su AndroidManifest.xml.

Para los permisos de uso de este:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

Para el código aquí hay un pequeño ejemplo:

Servidor:

String msg_received; 

ServerSocket socket = new ServerSocket(1755); 
Socket clientSocket = socket.accept();  //This is blocking. It will wait. 
DataInputStream DIS = new DataInputStream(clientSocket.getInputStream()); 
msg_received = DIS.readUTF(); 
clientSocket.close(); 
socket.close(); 

Cliente:

Socket socket = new Socket("192.168.0.1",1755); 
DataOutputStream DOS = new DataOutputStream(socket.getOutputStream()); 
DOS.writeUTF("HELLO_WORLD"); 
socket.close(); 
+0

ok He hecho la conexión del socket del servidor cliente y el servidor me notifica si la conexión está establecida, pero ¿cómo puedo hacer que el cliente me notifique de la conexión? –

+0

Puede usar socket.isConnected() –

0

No puedo ofrecerle el código completo, pero al menos puedo guiarlo en la dirección correcta. Para lograr esto, debe usar Sockets. Ahora, si busca en Internet, encontrará muchos artículos y ejemplos relacionados con este tema que especifican Android. Por ejemplo, this y this.

+0

ok he hecho la conexión del socket del servidor cliente y el servidor me notifica si la conexión está establecida pero ¿cómo puedo hacer que el cliente me notifique de la conexión? –

0

Es probable que tenga que escribir algún tipo de programa para la PC que actúa como un "servidor" para que la aplicación de Android envíe a través de un Socket o Stream.

+0

ok He hecho la conexión de socket del servidor cliente y el servidor me notifica si la conexión está establecida, pero ¿cómo puedo hacer que el cliente me notifique de la conexión? –

1
  1. La parte de comunicación es bastante fácil. Abra un servidor TCP en la PC y tenga un Cliente TCP en el dispositivo Android enviándolo Cadenas/Comandos. Puede encontrar un buen tutorial en here, pero deberá modificarlo para sus necesidades.

    Observe que cuando se trabaja con TCP, no se debe hacer desde el hilo principal, sino desde un hilo de fondo. Un buen método para eso es AsyncTask (cuando llegue allí).

  2. La otra parte es la simulación del teclado. Para eso necesitas usar la clase java.awt.Robot.

+0

Gracias, pero también necesito la secuencia que se recibirá en la PC. ¿Mi PC funcionará como servidor? ¿Cómo se comunicaría la aplicación Android y la aplicación para PC? –

+0

Para eso son exactamente los sockets TCP. para que ambos dispositivos se comuniquen. – MByD

+0

ok He hecho la conexión del socket del servidor cliente y el servidor me notifica si la conexión está establecida, pero ¿cómo puedo hacer que el cliente me notifique de la conexión? –

1

en función de su web erver design o bien utiliza una comunicación tranquila o jabón y luego enviar sus datos a través de protocolo HTTP a su servicio web y obtener la respuesta deseada de la misma. He escrito un servicio web asp para el enfoque soap que explicaré a continuación.

Aquí está el ejemplo de código java para el estándar de jabón:

private static String NameSpace = "http://tempuri.org/"; 
    //below url must be your service url, mine is a local one 
    private static String URL = "http://192.168.2.213/hintsservice/service.asmx"; 
    private static String SOAP_ACTION = "http://tempuri.org/"; 

    public static String Invoke(String s) { 
    //respond string from server 
    String resTxt = ""; 
    //the name of your web service method 
    final String webMethName = "Hint"; 
    // Create request 
    SoapObject request = new SoapObject(NameSpace, webMethName); 
    // Property which holds input parameters 
    PropertyInfo PI = new PropertyInfo(); 
    // Set Name 
    PI.setName("s"); 
    // Set Value 
    PI.setValue(s); 
    // Set dataType 
    PI.setType(String.class); 
    // Add the property to request object 
    request.addProperty(PI); 
    // Create envelope 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
      SoapEnvelope.VER11); 
    //Set envelope as dotNet 
    envelope.dotNet = true; 
    // Set output SOAP object 
    envelope.setOutputSoapObject(request); 
    // Create HTTP call object 
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
    try { 
     // Invoke web servi.ce 
     androidHttpTransport.call(SOAP_ACTION + webMethName, envelope); 
     // Get the response 
     SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
     // Assign it to resTxt variable static variable 
     resTxt = response.toString(); 
    }catch (Exception e) { 
     //Print error 
     e.printStackTrace(); 
     //Assign error message to resTxt 
     resTxt = "Error occured"; 
    } 
    //Return resTxt to calling object 
    return resTxt; 
} 

Ahora sólo tiene que llamar a este método de actividad adecuada y dejar que su servicio web haga el resto. Aquí está el ejemplo de servicio web en lenguaje C#:

[WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService] 

    public class Service : System.Web.Services.WebService 
    { 
     public Service() { 
      //Uncomment the following line if using designed components 
      //InitializeComponent(); 
      [WebMethod] 
      public string Hint(string s) { 
       string response = string.Empty; 
       //todo: produce response 
       return response; 
      } 
     } 
    } 
Cuestiones relacionadas