如何在android中获取纬度,经度和地址

时间:2011-12-31 14:44:55

标签: java android sms location

  

可能重复:
  How to retrieve the GPS location via SMS

我正在制作一个像这样的Android应用程序: 当用户键入包含例如“findmyphone”的文本消息或类似的任何内容(它不会响应其他正常文本消息)到运行应用程序的手机时,应用程序将自动响应具有纬度,经度和正在运行该应用程序的手机的地址。

我还需要一个按钮来测试它。一旦用户按下“测试”按钮,纬度,经度和地址将显示在2个文本框中,纬度和经度在一个中,而地址在另一个中。非常感谢!这就是我到目前为止所做的:

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class FindAndroidActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
Button Nextbutton1, Nextbutton2, TestLocationService;
TextView Cordinates, Adress, FindAndroid;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Nextbutton1 = (Button)findViewById(R.id.Nextbutton1);
    Nextbutton1.setOnClickListener(this);
}
public void onClick(View src) {
    switch (src.getId()) {
    case R.id.Nextbutton1:
        setContentView(R.layout.setup);
        Nextbutton2 = (Button)findViewById(R.id.Nextbutton2);
        Nextbutton2.setOnClickListener(this);
        TestLocationService = (Button)findViewById(R.id.TestLocationService);
        TestLocationService.setOnClickListener(this);
        break;
    case R.id.Nextbutton2:
        setContentView(R.layout.main);
        break;
    case R.id.TestLocationService:
        break;
    }
}
    public Address getAddressForLocation(Context context, Location location) throws IOException {

        if (location == null) {
            return null;
        }
        double latitude = location.getLatitude();
        double longitude = location.getLongitude();
        int maxResults = 1;

        Geocoder gc = new Geocoder(context, Locale.getDefault());
        List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults);

        if (addresses.size() == 1) {
            return addresses.get(0);
        } else {
            return null;
        }
}

}

1 个答案:

答案 0 :(得分:0)

我不会详细说明任何内容,因为您可以进行谷歌搜索或搜索StackOverflow以获取您需要的大部分信息。

要获取位置,您可以使用LocationManager并调用requestLocationUpdates。有很多教程可以解释如何执行此操作。

要接收短信,您需要在您的清单中声明BroadcastReceiver,如下所示:

<receiver android:name=".SmsReceiver">
                    <intent-filter>
                        <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
                    </intent-filter>
                </receiver>

在此收件人中,您将使用SmsMessage类从短信获取必要的信息。

然后要发送短信,您可以使用SmsManager并调用sendTextMessage

<强> BUT
你真的需要自己做这项工作。值得注意的是,市场上已经有一大堆手机定位器应用程序,所以这可能不是一个值得你做的应用程序。

同样,您可以搜索stackoverflow或Google以了解如何执行您需要的每件事。

如果您还没有进行任何实际的Android编程(因为您说您使用过app Inventor),那么您需要查看Developer's Guide