android中的Gps定位
我正在使用LocationManager获取android中的当前位置android中的Gps定位,android,Android,我正在使用LocationManager获取android中的当前位置 mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); GPS_提供程序作为服务提供。执行时,它返回null并在日志中连续显示以下内容 V/libgps(116):延迟操作线程pthread\u cond\u等待返回 提前感谢。测试此代码,如果成功,请告诉我 LocationManager locatio
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
GPS_提供程序作为服务提供。执行时,它返回null并在日志中连续显示以下内容
V/libgps(116):延迟操作线程pthread\u cond\u等待返回
提前感谢。测试此代码,如果成功,请告诉我
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
updateWithNewLocation(location);
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
}
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider){
updateWithNewLocation(null);
}
public void onProviderEnabled(String provider){ }
public void onStatusChanged(String provider, int status,
Bundle extras){ }
};
并使用以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
这两个在马那边很好用。。你应该试试这些 公共类HomeActivity扩展活动实现LocationListener{
public class HomeActivity extends Activity implements LocationListener{
public static Context mContext;
private double latitude, longitude;
public LocationManager mLocManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
mContext=this;
super.onCreate(savedInstanceState);
setContentView(R.layout.homelayout);
mLocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
this);
mLocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0,
0, this);
locationUpdate();
((Button) this.findViewById(R.id.ButtonHome))
.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
startActivity(new Intent(HomeActivity.this,
DefaultDisplay.class));
}
});
((Button) this.findViewById(R.id.ButtonProfile))
.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
if (GUIStatics.boolLoginStatus) {
startActivity(new Intent(HomeActivity.this,
MyProfile.class));
} else {
Intent intent=new Intent(HomeActivity.this,
Login.class);
intent.putExtra("moveTo","MyProfile");
startActivity(intent);
}
}
});
((Button) this.findViewById(R.id.ButtonNotifications))
.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
if (GUIStatics.boolLoginStatus) {
startActivity(new Intent(HomeActivity.this,
ShowAllNotificationActiviry.class));
} else {
Intent intent=new Intent(HomeActivity.this,
Login.class);
intent.putExtra("moveTo","ShowAllNotificationActiviry");
startActivity(intent);
}
}
});
((Button) this.findViewById(R.id.ButtonFavorites))
.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
if (GUIStatics.boolLoginStatus) {
startActivity(new Intent(HomeActivity.this,
FavoritesActivity.class));
} else {
Intent intent=new Intent(HomeActivity.this,
Login.class);
intent.putExtra("moveTo","FavoritesActivity");
startActivity(intent);
}
}
});
((Button) this.findViewById(R.id.ButtonMore))
.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
startActivity(new Intent(HomeActivity.this,
MoreListActivity.class));
}
});
}
public void locationUpdate()
{
CellLocation.requestLocationUpdate();
}
public void getAddress(double lat, double lng) {
Geocoder geocoder = new Geocoder(HomeActivity.mContext, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
Address obj = addresses.get(0);
String add = obj.getAddressLine(0);
GUIStatics.currentAddress = obj.getSubAdminArea() + ","
+ obj.getAdminArea();
GUIStatics.latitude = obj.getLatitude();
GUIStatics.longitude = obj.getLongitude();
GUIStatics.currentCity= obj.getSubAdminArea();
GUIStatics.currentState= obj.getAdminArea();
add = add + "\n" + obj.getCountryName();
add = add + "\n" + obj.getCountryCode();
add = add + "\n" + obj.getAdminArea();
add = add + "\n" + obj.getPostalCode();
add = add + "\n" + obj.getSubAdminArea();
add = add + "\n" + obj.getLocality();
add = add + "\n" + obj.getSubThoroughfare();
Log.v("IGA", "Address" + add);
// Toast.makeText(this, "Address=>" + add,
// Toast.LENGTH_SHORT).show();
// TennisAppActivity.showDialog(add);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
public void onLocationChanged(Location location) {
latitude = location.getLatitude();
longitude = location.getLongitude();
GUIStatics.latitude=location.getLatitude();
GUIStatics.longitude= location.getLongitude();
Log.v("Test", "IGA" + "Lat" + latitude + " Lng" + longitude);
//mLocManager.r
getAddress(latitude, longitude);
if(location!=null)
{
mLocManager.removeUpdates(this);
}
// Toast.makeText(this, "Lat" + latitude + " Lng" + longitude,
// Toast.LENGTH_SHORT).show();
}
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
Toast.makeText(HomeActivity.this, "Gps Disabled", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
if(arg1 ==
LocationProvider.TEMPORARILY_UNAVAILABLE) {
Toast.makeText(HomeActivity.this,
"LocationProvider.TEMPORARILY_UNAVAILABLE",
Toast.LENGTH_SHORT).show();
}
else if(arg1== LocationProvider.OUT_OF_SERVICE) {
Toast.makeText(HomeActivity.this,
"LocationProvider.OUT_OF_SERVICE", Toast.LENGTH_SHORT).show();
}
}
公共静态语境;
私人双纬度、经度;
公共场所经理;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
mContext=这个;
super.onCreate(savedInstanceState);
setContentView(R.layout.homelayout);
mLocManager=(LocationManager)getSystemService(Context.LOCATION\u服务);
mLocManager.RequestLocationUpdate(LocationManager.GPS_提供程序,0,0,
这),;
mLocManager.RequestLocationUpdate(LocationManager.NETWORK_提供程序,0,
0,这个);
位置更新();
((按钮)this.findviewbyd(R.id.ButtonHome))
.setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
startActivity(新意图)(HomeActivity.this、,
DefaultDisplay.class);
}
});
((按钮)此.findViewById(R.id.ButtonProfile))
.setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
if(GUIStatics.boolLoginStatus){
startActivity(新意图)(HomeActivity.this、,
MyProfile.class);
}否则{
意向意向=新意向(HomeActivity.this,
登录类);
意图。putExtra(“moveTo”、“MyProfile”);
星触觉(意向);
}
}
});
((按钮)this.findViewById(R.id.ButtonNotifications))
.setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
if(GUIStatics.boolLoginStatus){
startActivity(新意图)(HomeActivity.this、,
showallNotificationActivity.class));
}否则{
意向意向=新意向(HomeActivity.this,
登录类);
意图。putExtra(“移动到”、“显示所有通知活动”);
星触觉(意向);
}
}
});
((按钮)this.findViewById(R.id.ButtonFavorites))
.setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
if(GUIStatics.boolLoginStatus){
startActivity(新意图)(HomeActivity.this、,
FavoritesActivity.class));
}否则{
意向意向=新意向(HomeActivity.this,
登录类);
意向。putExtra(“移动到”、“偏好活动”);
星触觉(意向);
}
}
});
((按钮)this.findviewbyd(R.id.ButtonMore))
.setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
startActivity(新意图)(HomeActivity.this、,
MoreListActivity.class);
}
});
}
公共无效位置更新()
{
CellLocation.requestLocationUpdate();
}
公共地址(双lat,双lng){
Geocoder Geocoder=新的Geocoder(HomeActivity.mContext,Locale.getDefault());
试一试{
列表地址=地理编码器。getFromLocation(lat,lng,1);
地址obj=地址。获取(0);
字符串add=obj.getAddressLine(0);
GUIStatics.currentAddress=obj.getSubAdminArea()+“,”
+obj.getAdminArea();
GUIStatics.latitude=obj.getLatitude();
GUIStatics.longitude=obj.getLongitude();
GUIStatics.currentCity=obj.getSubAdminArea();
GUIStatics.currentState=obj.getAdminArea();
add=add+“\n”+obj.getCountryName();
add=add+“\n”+obj.getCountryCode();
add=add+“\n”+obj.getAdminArea();
add=add+“\n”+obj.getPostalCode();
add=add+“\n”+obj.getSubAdminArea();
add=add+“\n”+obj.getLocation();
add=add+“\n”+obj.getSubthoroughe();
日志v(“IGA”、“地址”+添加);
//Toast.makeText(这个“Address=>”+add,
//吐司。长度(短)。show();
//TennisAppActivity.showDialog(添加);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
Toast.makeText(this,e.getMessage(),Toast.LENGTH_SHORT.show();
}
}
已更改位置上的公共无效(位置){
纬度=位置。getLatitude();
longitude=location.getLongitude();
GUIStatics.latitude=location.getLatitude();
GUIStatics.longitude=location.getLongitude();
对数v(“测试”、“IGA”+“纬度”+“Lng”+经度);
//mLocManager.r
getAddress(纬度、经度);
如果(位置!=null)
{
mLocManager.RemoveUpdate(此);
}
//Toast.makeText(这是“纬度”+纬度+“液化天然气”+经度,
//吐司。长度(短)。show();
}
公共无效onProviderDisabled(字符串arg0){
//TODO自动生成的方法存根
Toast.makeText(HomeActivity.this,“Gps禁用”,Toast.LENGTH_SHORT.show();
意图=新意图(
android.provider.Settings.ACTION\u LOCATION\u SOURCE\u Settings);
星触觉(int)