2014-03-06 168 views
0

我正在構建一個Android應用程序,它將返回運行該應用程序的設備的當前位置。我目前有谷歌地圖顯示在屏幕上,但我與位置監聽器有問題,我在其中放置了斷點,並且它們從未被擊中。我將包括我的MainActivity.java和androidMainfest.xml。無法找到當前的GPS位置

MainActivity.java

package com.example.androidgooglemap; 

import com.google.android.gms.location.LocationListener; 
import com.google.android.gms.maps.GoogleMap; 

import android.location.Location; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.content.Context; 
import android.view.Menu; 
import android.widget.Toast; 

public class MainActivity extends FragmentActivity { 

public GoogleMap mMap; 
LocationManager location; 
public double latG; 
public double lonG; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    location = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    location.getLastKnownLocation(Context.LOCATION_SERVICE); 
    LocationListener locationListener = new LocationListener(){ 

     @Override 
     public void onLocationChanged(Location location) 
     { 
       if (location != null) 
       { 
        latG = location.getLatitude(); 
        lonG = location.getLongitude(); 
        Toast.makeText(MainActivity.this, 
          latG + " " + lonG, 
          Toast.LENGTH_LONG).show(); 
       } 
      }   
    }; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

/* Request updates at startup */ 
} 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.androidgooglemap" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="11" 
    android:targetSdkVersion="18" /> 

<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true"/> 

<permission 
android:name="com.example.androidgooglemap.permission.MAPS_RECEIVE" 
android:protectionLevel="signature"/> 
<uses-permission android:name="com.example.androidgooglemap.permission.MAPS_RECEIVE"/> 

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
<!-- The following two permissions are not required to use 
    Google Maps Android API v2, but are recommended. --> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <uses-library android:name="com.google.android.maps" /> 
    <activity 
     android:name="com.example.androidgooglemap.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="API-KEY"/> 
</application> 

</manifest> 

需要一些指導。謝謝

+0

是否在屏幕上顯示吐司消息? –

+0

我如何輸出吐司消息?在運行代碼時,由於某種原因它甚至不能訪問'onLocationChanged'!我真的很感謝這個事情的幫助 – user3374478

+0

public void onLocationChanged(Location location)這個方法。在它的身體內部,每當你的位置發生變化時,應該顯示吐司消息。可以 ? –

回答

2

您忘了將監聽器註冊到位置服務。在聲明locationListener變量之後添加此代碼。

if(location.isProviderEnabled("gps")) 
     location.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
if(location.isProviderEnabled("network")) 
     location.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);