2014-03-06 41 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);