Android谷歌地图api v2它在设备上的空白并在模拟器上显示

时间:2014-11-10 23:28:52

标签: android google-maps device

就像标题说我使用 google maps api v2 一样,它适用于我的 avd 但不适用于我的真实设备(在我的设备上它只是空白)

我在同一个主题上发现了很多问题,但没有一个对我的案例有帮助

任何想法?哦,当我用模拟器运行它时,我几乎忘记了我得到它的唯一错误

  

"未能找到com.google.settings"

的提供商信息

我已经尝试过再次安装新的api密钥,keystone,从我的设备上卸载应用程序......不知道还有什么。

感谢你至少阅读本文

编辑:我使用Lg g2不知道是否有帮助

EDIT2: Manifest,mapa.java和xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="Login.cyclingcenter"
android:versionCode="1"
android:versionName="1.0" >



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


<uses-permission android:name="android.permission.ViBRATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
<application

    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
     <activity 
        android:name="Swipe"


        ></activity>
    <activity
        android:name="Login"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <!-- Goolge Maps API Key -->
    <meta-data
     android:name="com.google.android.maps.v2.API_KEY"
     android:value="AIzaSyBtOk02dBY98C7S8BILmMyLLkMbUh8-jLs" />
    <meta-data 
     android:name="com.google.android.gms.version" 
   android:value="6171000" />


</application>

package Login.cyclingcenter;

import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMyLocationChangeListener;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.model.LatLng;



public class Mapa extends Fragment {

MapView mMapView;
private GoogleMap googleMap;


@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
          Bundle savedInstanceState) {
    View mapa = inflater.inflate(R.layout.fragment_map, container, false);

    mMapView = (MapView) mapa.findViewById(R.id.mapView);
    mMapView.onCreate(savedInstanceState);

     establecerMap();       

    return mapa;


}  


public void establecerMap(){
   if(googleMap==null){

       googleMap = mMapView.getMap();
       }
   else{
     //configuración mapa

       configuraMap();
}
}  
public void configuraMap(){
 //vista normal, puede ser satelite e hibrido
   googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

   //establezco mi posicion en el mapa
   googleMap.setMyLocationEnabled(true);

// Asigno un nivel de zoom
   CameraUpdate ZoomCam = CameraUpdateFactory.zoomTo(14);
   googleMap.animateCamera(ZoomCam);

// Establezco un listener para ver cuando cambio de posicion
   googleMap.setOnMyLocationChangeListener(new OnMyLocationChangeListener() {
       public void onMyLocationChange(Location pos) {
           // TODO Auto-generated method stub

           // Extraigo la Lat y Lon del Listener
           double lat = pos.getLatitude();
           double lon = pos.getLongitude();

           // Muevo la camara a mi posicion
           CameraUpdate cam = CameraUpdateFactory.newLatLng(new LatLng(
                   lat, lon));

           googleMap.moveCamera(cam);}});
}

@Override
public void onResume(){
   super.onResume();
   mMapView.onResume();
}

@Override
public void onPause(){
   super.onPause();
   mMapView.onPause();
}

@Override
public void onDestroy(){
   super.onDestroy();
   mMapView.onDestroy();
}

@Override
public void onLowMemory(){
   super.onLowMemory();
   mMapView.onLowMemory();
}





}

XML

<?xml version="1.0" encoding="utf-8"?>
    <com.google.android.gms.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:apiKey="AIzaSyBtOk02dBY98C7S8BILmMyLLkMbUh8-jLs"/>

2 个答案:

答案 0 :(得分:0)

您确定,您的应用正在使用所需的权限吗?像这样:

    <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"/>
<!-- 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"/>

关注this basic guide

如果您的应用在AVD上工作但在设备上没有 - 这可能是原因。

答案 1 :(得分:0)

我找到了解决方案,谷歌使用api密钥进行调试,一个用于发布,因为我使用的是自己的设备,即使我只是测试(谷歌也不知道哈哈),它被认为是一个版本,这就是它的另一个关键。