Ciao sto lavorando ad un'app per Android che richiede l'invio di una stringa tramite Wi-Fi al PC con conseguente simulazione dei tasti della tastiera. Qualche idea su come posso ottenere questo compito?come inviare una stringa da Android a PC tramite Wi-Fi
risposta
Si dovrà scrivere un programma server sul PC e utilizzare un ServerSocket per accettare una connessione da e scrivere un filo per il vostro telefono Android che utilizza una presa normale (con la stessa porta come la fine del PC) e quindi gestirli utilizzando DataInputStream e DataOutputStream. Devi anche aprire le autorizzazioni sul tuo AndroidManifest.xml.
Per i permessi utilizzare questo:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
Per il codice qui è un piccolo esempio:
Server:
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();
ok ho effettuato la connessione socket del server client e il server mi ha avvisato se la connessione è stata stabilita, ma come posso fare in modo che il client mi avvisi della connessione? –
È possibile utilizzare socket.isConnected() –
Non posso offrirti il codice completo ma almeno posso guidarti nella giusta direzione. Per ottenere ciò, è necessario utilizzare Sockets. Ora se cerchi su Internet troverai molti articoli ed esempi relativi a questo argomento che specificano Android. Ad esempio this e this.
ok Ho effettuato la connessione socket del server client e il server mi ha avvisato se la connessione è stata stabilita, ma come posso fare in modo che il client mi avvisi della connessione? –
Probabilmente dovrai scrivere una sorta di programma per il PC che funge da "server" per l'app Android da inviare tramite Socket o Stream.
ok ho eseguito la connessione socket del server client e il server mi ha avvisato se la connessione è stata stabilita, ma come posso fare in modo che il client mi avvisi della connessione? –
La parte di comunicazione è piuttosto semplice. Apri un server TCP sul PC e disponi di un client TCP sul dispositivo Android inviandolo stringhe/comandi. È possibile trovare un buon tutorial here, ma sarà necessario modificarlo in base alle proprie esigenze.
Si noti che quando si lavora con TCP, non dovrebbe essere fatto dal thread principale, ma da un thread in background. Un buon metodo per questo è AsyncTask (quando ci arriverete).
L'altra parte è la simulazione della tastiera. Per questo è necessario utilizzare la classe java.awt.Robot.
Grazie ma ho bisogno anche della stringa da ricevere sul PC il mio PC funzionerà come un server? come potrebbero comunicare l'app per android e l'app per PC? –
Questo è esattamente ciò che i socket TCP sono per. perché entrambi i dispositivi comunichino. – MByD
ok ho eseguito la connessione socket del server client e il server mi ha avvisato se la connessione è stata stabilita, ma come posso fare in modo che il client mi avvisi della connessione? –
, sulla base di web s erver design o usi una comunicazione restful o sapone e poi invii i tuoi dati tramite protocollo HTTP al tuo servizio web e ottieni la risposta desiderata da esso. Ho scritto un servizio web asp per l'approccio soap che spiegherò di seguito.
Ecco il codice di esempio Java per lo standard di sapone:
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;
}
ora solo bisogno di chiamare questo metodo dall'attività appropriato e lasciate che il vostro servizio web fanno il resto. Qui è il servizio web ad esempio in C# lingua:
[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;
}
}
}
È possibile utilizzare questo link [inserire descrizione collegamento qui] (http://stackoverflow.com/questions/10388250/how-to-send-string- da-android-to-pc-over-wifi? noredirect = 1 & lq = 1) –
Scusami Puoi usare questo link: [inserisci la descrizione del link qui] (http://stackoverflow.com/questions/31611593/send-text- da-android-to-pc-via-wi-fi-connessione?noredirect = 1 & lq = 1) –