android程序确定自己手机位置的问题?
MainActivity:
package com.example.archer.c11_locationtest;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TextView positionTextView;
private LocationManager locationManager;
private String provider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
positionTextView= (TextView) findViewById(R.id.positionId);
locationManager= (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//获取所有可用的位置提供器
List<String>providerList=locationManager.getProviders(true);
if (providerList.contains(LocationManager.GPS_PROVIDER)){
provider=LocationManager.GPS_PROVIDER;
}else if(providerList.contains(LocationManager.NETWORK_PROVIDER)){
provider=LocationManager.NETWORK_PROVIDER;
}else{
//当没有可用位置提供器时,弹出Toast提示用户
Toast.makeText(this,"No location provider to use ",Toast.LENGTH_SHORT).show();
return;
}
Location location=locationManager.getLastKnownLocation(provider);
if(location!=null){
//显示当前设备的位置信息
showLocation(location);
}
locationManager.requestLocationUpdates(provider,5000,1,locationListener);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (locationManager!=null){
//关闭程序时,将监听器移除
locationManager.removeUpdates(locationListener);
}
}
LocationListener locationListener=new LocationListener() {
@Override
public void onLocationChanged(Location location) {
//更新当前设备的位置信息
showLocation(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
private void showLocation(Location location) {
String currentPosition="latitude is "+location.getLatitude()+"\n"+"longitude is "+location.getLongitude();
positionTextView.setText(currentPosition);
}
}
activity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/positionId"
/>
</LinearLayout>
权限也给了:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
为什么就是拿不到自己位置的经纬度??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
应该是GPS信号不好的问题,你可以到室外去试一下。另外,你的代码中调用了网络定位API,需要加上另外两个权限。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
为什么不用百度地图的SDK。
室内 GPS 信号不好,测试时可以改成网络定位优先
同时记得在权限中加上
很显然你是看的“第一行代码”敲的