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.
Anche io voglio sapere la risposta a questa domanda, vediamo se c'è qualcuno più esperto che può venire in soccorso. –
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 –
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? –