17

我使用下面的代碼來獲取當前位置(經度和緯度),但我沒有獲取當前位置(經度和緯度)。Android - 如何獲取當前位置(經度和緯度)?

任何人都知道爲什麼?

package com.ram.currentlocation; 

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.widget.Toast; 

public class Location_Gps extends Activity 
{ 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     /* Use the LocationManager class to obtain GPS locations */ 
     LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

     LocationListener mlocListener = new MyLocationListener(); 
     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 
    } 

    /* Class My Location Listener */ 
    public class MyLocationListener implements LocationListener 
    { 

     @Override 
     public void onLocationChanged(Location loc) 
     { 

     loc.getLatitude(); 
     loc.getLongitude(); 

     String Text = "My current location is: " + 
     "Latitud = " + loc.getLatitude() + 
     "Longitud = " + loc.getLongitude(); 

     Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onProviderDisabled(String provider) 
     { 
     Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onProviderEnabled(String provider) 
     { 
     Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) 
     { 

     } 
    } 
} 

P.S:我使用以下權限在manifest文件:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_CORSE_LOCATION"/> 
+1

首先提及您使用的是什麼權限以及您在設備或模擬器中檢查了哪些內容......? – 2011-05-23 10:34:12

+0

你有清單中的ACCESS_FINE_LOCATION嗎? – 2011-05-23 10:35:29

+0

我在清單中使用了兩個權限 我得到當前位置的緯度0.0和經度0.0 – Jeeva 2011-05-23 10:35:54

回答

25

您的清單文件中有錯誤。正確的是:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
+0

我有兩個,但我得到零緯度和經度 – 2013-07-25 12:16:36

3

在你的Android清單你設置的權限?你可能使用仿真器

android.permission.ACCESS_FINE_LOCATION 

至於只獲得了(0,0)共同ORDS。如果您使用的是eclipse,請轉到模擬器控件,然後在底部,您可以將假冒的合作伙伴發送到設備

1

您沒有使用正確的權限。正確的是:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

順便說一句,你的需求只能通過滿足:

<using-permission android:name="ACCESS_FINE_LOCATION" />

所以沒有必要ACCESS_COARSE_LOCATION

5

你必須發送位置修復模擬器,因爲模擬器是您需要提供位置修復的軟件。

如果你使用eclipse去

Window -> Show view -> Other

選擇Android的標籤和搜索模擬器控制。
當你看到模擬器控制窗口導航到位置控制。
正如你看到在下面的圖

sending loc fix

您發送祿修復程序後,您可以使用

Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

哪裏lmLocationManager對象,以90%的工作都做完了;)

乾杯!

+0

OFC你需要MOCKLOCATION,FINELOCATION,COURCELOCATION權限在清單 – 2012-02-26 07:22:41

相關問題