android经纬度是0,经度和纬度在Android中显示为0

************* TrackGPS.java *****************************

import android.app.AlertDialog;

import android.app.Service;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.os.IBinder;

import android.provider.Settings;

import android.support.v4.app.ActivityCompat;

import android.util.Log;

import android.widget.Toast;

/**

* Created by ANQ on 8/8/2016.

*/

public class TrackGPS extends Service implements LocationListener {

private final Context mContext;

boolean checkGPS = false;

boolean checkNetwork = false;

boolean canGetLocation = false;

Location loc;

double latitude;

double longitude;

private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;

private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1;

protected LocationManager locationManager;

public TrackGPS(Context mContext) {

this.mContext = mContext;

getLocation();

}

private Location getLocation() {

try {

locationManager = (LocationManager) mContext

.getSystemService(LOCATION_SERVICE);

// getting GPS status

checkGPS = locationManager

.isProviderEnabled(LocationManager.GPS_PROVIDER);

// getting network status

checkNetwork = locationManager

.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

if (!checkGPS && !checkNetwork) {

Toast.makeText(mContext, "No Service Provider Available", Toast.LENGTH_SHORT).show();

} else {

this.canGetLocation = true;

// First get location from Network Provider

if (checkNetwork) {

Toast.makeText(mContext, "Network", Toast.LENGTH_SHORT).show();

try {

locationManager.requestLocationUpdates(

LocationManager.NETWORK_PROVIDER,

MIN_TIME_BW_UPDATES,

MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

Log.d("Network", "Network");

if (locationManager != null) {

loc = locationManager

.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

}

if (loc != null) {

latitude = loc.getLatitude();

longitude = loc.getLongitude();

}

}

catch(SecurityException e){

}

}

}

// if GPS Enabled get lat/long using GPS Services

if (checkGPS) {

Toast.makeText(mContext,"GPS",Toast.LENGTH_SHORT).show();

if (loc == null) {

try {

locationManager.requestLocationUpdates(

LocationManager.GPS_PROVIDER,

MIN_TIME_BW_UPDATES,

MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

Log.d("GPS Enabled", "GPS Enabled");

if (locationManager != null) {

loc = locationManager

.getLastKnownLocation(LocationManager.GPS_PROVIDER);

if (loc != null) {

latitude = loc.getLatitude();

longitude = loc.getLongitude();

}

}

} catch (SecurityException e) {

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

return loc;

}

public double getLongitude() {

if (loc != null) {

longitude = loc.getLongitude();

}

return longitude;

}

public double getLatitude() {

if (loc != null) {

latitude = loc.getLatitude();

}

return latitude;

}

public boolean canGetLocation() {

return this.canGetLocation;

}

public void showSettingsAlert() {

AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

alertDialog.setTitle("GPS Not Enabled");

alertDialog.setMessage("Do you wants to turn On GPS");

alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

mContext.startActivity(intent);

}

});

alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

}

});

alertDialog.show();

}

public void stopUsingGPS() {

if (locationManager != null) {

locationManager.removeUpdates(TrackGPS.this);

}

}

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onLocationChanged(Location location) {

}

@Override

public void onStatusChanged(String s, int i, Bundle bundle) {

}

@Override

public void onProviderEnabled(String s) {

}

@Override

public void onProviderDisabled(String s) {

}

}

************* MainActivity.java ****************

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private Button b_get;

private TrackGPS gps;

double longitude;

double latitude;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

b_get = (Button)findViewById(R.id.get);

b_get.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

gps = new TrackGPS(MainActivity.this);

if(gps.canGetLocation()){

longitude = gps.getLongitude();

latitude = gps .getLatitude();

Toast.makeText(getApplicationContext(),"Longitude:"+Double.toString(longitude)+"\nLatitude:"+Double.toString(latitude),Toast.LENGTH_SHORT).show();

}

else

{

gps.showSettingsAlert();

}

}

});

}

@Override

protected void onDestroy() {

super.onDestroy();

gps.stopUsingGPS();

}

}

解决方法:

请管理所需的棉花糖许可.

首先,您在清单文件中添加此权限

在您的活动之后首先这样声明两个变量,

private static final int REQUEST_CODE_PERMISSION = 1;

String mPermission = Manifest.permission.ACCESS_FINE_LOCATION;

在onCreate方法之后

if(Build.VERSION.SDK_INT>= 23) {

if (checkSelfPermission(mPermission) != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(MainActivity.this,

new String[]{mPermission,

},

REQUEST_CODE_PERMISSION);

return;

}

else

{

*here manage your code if permission already access

}

}

标签:gps,location,latitude-longitude,android

来源: https://codeday.me/bug/20191111/2020546.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值