android 经纬度获取为什么总是0

Android 码拜 6年前 (2015-05-11) 410次浏览 0个评论

package com.example.getlocation;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends Activity {

private LocationManager locationManager;
private TextView textView;
private double latitude = 0.0;
private double longitude = 0.0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.location_info);

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Location location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
} else {
LocationListener locationListener = new LocationListener() {

// Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {

}

// Provider被enable时触发此函数,比如GPS被打开
@Override
public void onProviderEnabled(String provider) {

}

// Provider被disable时触发此函数,比如GPS被关闭
@Override
public void onProviderDisabled(String provider) {

}

// 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.e(“Map”,
“Location changed : Lat: ”
+ location.getLatitude() + ” Lng: ”
+ location.getLongitude());
}
}
};
locationManager
.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
1000, 0, locationListener);
Location location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude(); // 经度
longitude = location.getLongitude(); // 纬度
}
}
textView.setText(“latitude:” + latitude + “,longitude” + longitude);
}

}

 <!– 连接互联网Internet权限 –>
    <uses-permission android:name=”android.permission.INTERNET” />
    <!– GPS定位权限 –>
    <uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION” />
    <uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />

设备支持么?
百度地图都能获取位置,我自己写的程序难道不行吗
哥们,我这边试了,没有问题
不信我给你看
5分
android 经纬度获取为什么总是0 ,你看
设备权限没给?
谢谢牛英雄和其他朋友们的热心帮助,但我的还不行啊,痛苦中。。。。。。。。。。。。。。。。。。。。android 经纬度获取为什么总是0
请问设备权限不是Manifest中的权限吗?
15分
你去室外试试吧,可能你公司信号不好,百度又不是靠你这个方法定位的,我有过经历,去室外就能测到了。。。
楼上哥们正解,真的是在室外就行,但是为什么室内不行呢?百度是用什么技术呢,定位能力那么强,呵呵android 经纬度获取为什么总是0
牛英雄也在北京吗,咱们两个经纬度差不多嘛
用Android自带的LocationManager和Location获取位置的时候,经常会有获取的location为null的情况,并且操作起来也不是很方便,在这个Demo里我使用了百度地图API中的定位SDK,可以一次性获取当前位置经纬度以及详细地址信息,还可以获取周边POI信息,同时可以设定位置通知点,当到达某一位置时,发出通知信息等方式来告知用户。。麻烦大家,下载一个baidumapapi.jar,代码如下,验证通过非常理想,学习使人进步,谢谢热心帮助的人。效果图如下:
android 经纬度获取为什么总是0

package BD.map;

import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.widget.TextView;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;

public class BaiduMap extends Activity {      
     public TextView tv1, tv2;
    public BMapManager mapManager;
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        tv1=(TextView)findViewById(R.id.result1);
        tv2 = (TextView) this.findViewById(R.id.result2);
        
        mapManager=new BMapManager(this);
        
        mapManager.init(“53351EE4BDE7BD870F41A0B4AF1480F1CA97DAF9”, new MyMKGeneralListener());
        
        
        mapManager.getLocationManager().setNotifyInternal(20, 5);

        mapManager.getLocationManager().requestLocationUpdates(new MyLocationListener());
        
        mapManager.start();
        
        
//      mapManager = new BMapManager(this);
//        mapManager.init(“EDB67AD764D300895C95ABA02A4DDC58D5485CCD”,
//                new MyMKGeneralListener());
//        // 设置通知间隔:iMaxSecond – 最大通知间隔,单位:秒;iMinSecond – 最小通知间隔,单位:秒
//        mapManager.getLocationManager().setNotifyInternal(20, 5);
//
//        mapManager.getLocationManager().requestLocationUpdates(
//                new MyLocationListener());
//        mapManager.start();
        
    }  
    // 定位自己的位置,只定位一次  
    class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location arg0) {
            
            double jindu1 = arg0.getLatitude();
            double weidu1 = arg0.getLongitude();
            
            int jindu = (int) (arg0.getLatitude()*1000000);
            int weidu = (int) (arg0.getLongitude()*1000000);
            tv1.setText(“经度:” + jindu1 + “,纬度:” + weidu1);
            System.out.println(“经度:” + jindu1 + “,纬度:” + weidu1);
            MKSearch search = new MKSearch();
            search.init(mapManager, new MyMKSearchListener());
            search.reverseGeocode(new GeoPoint(jindu, weidu));
        }

    }

    class MyMKSearchListener implements MKSearchListener {

        @Override
        public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
            if (arg0 == null) {
                tv2.setText(“没有获取想要的位置”);
            } else {
                GeoPoint point = arg0.geoPt;
                tv2.setText(“地址:” + arg0.strAddr + “,坐标:”
                        + point.getLatitudeE6() + “,” + point.getLongitudeE6());
            }
        }

        @Override
        public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
            // TODO Auto-generated method stub
            
        }

@Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
// TODO Auto-generated method stub

}

@Override
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
// TODO Auto-generated method stub

}

        

    }

    // 常用事件监听,用来处理通常的网络错误,授权验证错误等
    class MyMKGeneralListener implements MKGeneralListener {

        @Override
        public void onGetNetworkState(int arg0) {

        }

        @Override
        public void onGetPermissionState(int arg0) {

        }

    }
    }

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
    package=”BD.map”
    android:versionCode=”1″
    android:versionName=”1.0″ >

    <uses-sdk
        android:minSdkVersion=”8″
        android:targetSdkVersion=”17″ />

    <application
        android:allowBackup=”true”
        android:icon=”@drawable/ic_launcher”
        android:label=”@string/app_name”
        android:theme=”@style/AppTheme” >
        <activity
            android:name=”.BaiduMap”
            android:label=”@string/app_name” >
            <intent-filter>
                <action android:name=”android.intent.action.MAIN” />

                <category android:name=”android.intent.category.LAUNCHER” />
            </intent-filter>
        </activity>
    </application>

     <!– 访问网络的权限 –>
    <uses-permission android:name=”android.permission.INTERNET” />
<!– 访问精确位置的权限 –>
    <uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />
    <!– 访问网络状态的权限 –>
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />
    <!– 访问WIFI网络状态的权限 –>
    <uses-permission android:name=”android.permission.ACCESS_WIFI_STATE” />
    <!– 改变WIFI网络状态的权限 –>
    <uses-permission android:name=”android.permission.CHANGE_WIFI_STATE” />
    <!– 读写存储卡的权限 –>
    <uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
    <!– 读取电话状态的权限 –>
    <uses-permission android:name=”android.permission.READ_PHONE_STATE” />
    
    <!– 添加屏幕支持 –>>
    <supports-screens android:largeScreens=”true”
        android:normalScreens=”true” android:smallScreens=”true”
        android:resizeable=”true” android:anyDensity=”true”/>
    
    
</manifest>

哥,就只需要个jar包吗?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android 经纬度获取为什么总是0
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!