2011-10-30 12 views
5

Mam aplikację, w której muszę wysłać moją lokalizację (długość i szerokość geograficzną) do innej osoby po otrzymaniu od niego SMSa. W jakiś sposób zdobędę swoją lokalizację (długość i szerokość geograficzną) i umieściłem ją jako tekst w odpowiedzi sms a następnie wysłać go do innej osoby.Ale teraz mam do czynienia z problemem, w jaki sposób uzyskać moją lokalizację i umieścić go jako tekst w odpowiedzi sms. Do teraz napisałem kod, który wysyła wiadomość zwrotną po otrzymaniu sms od innych osoba. Czy ktoś może mi powiedzieć, jak uzyskać moją lokalizację i umieścić ją jako wiadomość tekstową?Jak wysłać moją lokalizację (długość i szerokość geograficzną) jako odpowiedź sms na inną osobę?

Oto mój kod, aby wysłać wiadomość Odpowiedz:

public void onReceive (kontekst kontekście Intent intent) {

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); 
     } 

    }     
} 

Czy ktoś może mi powiedzieć jak wysłać rzeczywistą lokalizację w "msg" zmiennej zamiast string "location". Anyone z jakimkolwiek pomysłem proszę dać mi znać? Z góry dziękuję.

+0

Nawet ja chcę znać odpowiedź na to pytanie, zobaczmy, czy jest ktoś bardziej doświadczony, kto może przyjść na ratunek. –

+1

Czy wiesz już, jak zdobyć lokalizację? po tym możesz po prostu przekazać liczby, które otrzymujesz z obiektu lokalizacji http://developer.android.com/guide/topics/location/obtaining-user-location.html –

+0

Próbowałem go zgodnie z sugestią Dana J i zrobiłem odpowiednie dodatki w moim kodzie, ale teraz to nawet nie jest kompilacja. Jeśli masz pojęcie, co się dzieje z Wronem, zasugeruj mi? –

Odpowiedz

4

Zobacz this answer jak uzyskać długość i szerokość geograficzna:

Następnie wystarczy zmienić

String msg = "location" ; 

do

String msg = dlat + ", " + dlon; 

Będziesz również dodać odpowiednie uprawnienia do manifestu XML (np. Zobacz moją odpowiedź here).

+0

Dodałem ten fragment kodu do istniejącego kodu, można go zobaczyć w komentarzach/* Jak sugeruje Dan J */ale nie kompiluje. Pokazuje błąd w tym wierszu hdLocMgr = (LocationManager) getSystemService (Kontekst. USŁUGA LOKALIZACJI); chodzi o metodę create getSystemService(). Czy robię coś złego tutaj. Proszę poprawić mnie tam, gdzie się mylę? Z góry dziękuję. –

+0

Spróbuj wywołać metodę context.getSystemService(). Rozwiązywanie błędów kompilacji powinno być całkiem łatwe - jeśli kompilator nie może znaleźć metody, musisz dowiedzieć się, co obiekt oferuje tej metodzie (tylko Google to) i wywołać metodę na tym obiekcie. http://developer.android.com/reference/android/content/Context.html –