2011-10-30 11 views
5

Ho un'applicazione in cui ho bisogno di inviare la mia posizione (longitudine e latitudine) ad un'altra persona al ricevimento di un sms da lui. In qualche modo otterrò la mia posizione (longitudine e latitudine) e metterla come testo in risposta sms e poi inviarlo ad altra persona. Ma ora mi trovo ad affrontare un problema su come ottenere la mia posizione e metterla come testo in risposta sms. Finora ho scritto un codice che invia un messaggio di risposta alla ricezione di un sms da altri persona. Qualcuno può dirmi come ottenere la mia posizione e metterla come messaggio di testo?Come inviare la mia posizione (longitudine e latitudine) come risposta a un altro utente?

Ecco il mio codice per inviare messaggio di risposta:

vuoto OnReceive (contesto contesto, l'intenzione Intent) pubblico {

Intent m=new Intent(context, ReceivelocationActivity.class);  
     PendingIntent pi=PendingIntent.getBroadcast(context, 0, m, 0); 
    Bundle bundle = intent.getExtras();   
    SmsMessage[] msgs = null; 
    String str = ""; 
    String str2=""; 
    String str3=""; 
    String autoReplyToken = "Request_Accepted"; 
    if (bundle != null) 
    { 
     //---retrieve the SMS message received--- 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length];    
     for (int i=0; i<msgs.length; i++){ 
      msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
      str += "SMS from " + msgs[i].getOriginatingAddress();      
      str2=msgs[i].getOriginatingAddress(); 
      str += " :"; 
      str += msgs[i].getMessageBody().toString(); 
     str3=msgs[i].getMessageBody().toString(); 
      str += "\n";   
     } 
     //---display the new SMS message--- 
     Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 

     SmsManager sms = SmsManager.getDefault(); 
     boolean isAutoReply = str3.startsWith(autoReplyToken); 
     /* As suggested by Dan J */ 
Criteria hdCrit = new Criteria(); 
hdCrit.setAccuracy(Criteria.ACCURACY_COARSE); 
hdCrit.setAltitudeRequired(false); 
hdCrit.setBearingRequired(false); 
hdCrit.setCostAllowed(true); 
hdCrit.setPowerRequirement(Criteria.POWER_LOW); 

hdLocMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

hdLocProvider = hdLocMgr.getBestProvider(hdCrit, true); 

Location location = hdLocMgr.getLastKnownLocation(hdLocProvider); 

Double dlat = location.getLatitude(); 
Double dlon = location.getLongitude(); 

     String msg = dlat + "," + dlon ; 
/* As suggested by Dan J */ 
     if (!isAutoReply) { 
      String autoReplyText = autoReplyToken + msg; 
      sms.sendTextMessage(str2, null, autoReplyText, pi, null); 
     } 

    }     
} 

Qualcuno può dirmi come inviare posizione attuale nella variabile "msg", invece di stringa "posizione". Qualcuno con qualche idea per favore fatemelo sapere? Grazie in anticipo.

+0

Anche io voglio sapere la risposta a questa domanda, vediamo se c'è qualcuno più esperto che può venire in soccorso. –

+1

hai capito come ottenere la posizione? dopo questo puoi semplicemente passare i numeri che ottieni dall'oggetto posizione http://developer.android.com/guide/topics/location/obtaining-user-location.html –

+0

L'ho provato come suggerito da Dan J e reso appropriato aggiunte nel mio codice ma ora non lo è nemmeno compilando. Se hai qualche idea su cosa sta andando a finire, per favore suggeriscimi? –

risposta

4

Vedi this answer per come ottenere la longitudine e la latitudine:

Poi basta cambiare

String msg = "location" ; 

a

String msg = dlat + ", " + dlon; 

Avrete anche bisogno di aggiungere le autorizzazioni appropriate per il vostro manifesto XML (ad es. Vedi la mia risposta here).

+0

Ho aggiunto quel pezzo di codice nel mio codice esistente, lo puoi vedere nei commenti/* Come suggerito da Dan J */ma non sta compilando. Mostra errore su questa riga hdLocMgr = (LocationManager) getSystemService (Context. SERVIZIO DI LOCALIZZAZIONE); sta dicendo create metodo getSystemService(). Sto facendo qualcosa di sbagliato qui.Si prega di correggermi dove ho sbagliato? Grazie in anticipo. –

+0

Provare a chiamare context.getSystemService(). Risolvere errori di compilazione dovrebbe essere piuttosto semplice: se il compilatore non riesce a trovare il metodo, è necessario scoprire quale Object offre quel metodo (solo Google) e chiamare il metodo su quell'oggetto. http://developer.android.com/reference/android/content/Context.html –

Problemi correlati