android 获取当前位置

时间:2023-03-08 16:12:29
android 获取当前位置

1. Android开发位置感知应用程序
方式:
1. GPS 定位     精确度高,仅适用于户外,严重消耗电量。
如果手机内置GPS接受模块,即使手机处于信号盲区,依然可以获取位置信息。

2. NETWORK_PROVIDER   网络定位,室内室外都可以使用,响应速度快,耗电量少。

下面演示 根据条件,自动选择最优的定位方式

package demo.map4;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast; /* 获取当前位置信息
*/ public class Map4Activity extends Activity
{
private TextView textView = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView) findViewById(R.id.loc);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// 返回所有已知的位置提供者的名称列表,包括未获准访问或调用活动目前已停用的。
List<String> lp = lm.getAllProviders();
for (String item:lp)
{
Log.i("8023", "可用位置服务:"+item);
} Criteria criteria = new Criteria();
criteria.setCostAllowed(false);
//设置位置服务免费
criteria.setAccuracy(Criteria.ACCURACY_COARSE); //设置水平位置精度
//getBestProvider 只有允许访问调用活动的位置供应商将被返回
String providerName = lm.getBestProvider(criteria, true);
Log.i("8023", "------位置服务:"+providerName); if (providerName != null)
{
Location location = lm.getLastKnownLocation(providerName);
Log.i("8023", "-------"+location);
//获取维度信息
double latitude = location.getLatitude();
//获取经度信息
double longitude = location.getLongitude();
textView.setText("定位方式: "+providerName+" 维度:"+latitude+" 经度:"+longitude);
}
else
{
Toast.makeText(this, "1.请检查网络连接 \n2.请打开我的位置", Toast.LENGTH_SHORT).show();
}
} } 添加访问网络权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />