就像标题说我使用 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"/>
答案 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"/>
如果您的应用在AVD上工作但在设备上没有 - 这可能是原因。
答案 1 :(得分:0)
我找到了解决方案,谷歌使用api密钥进行调试,一个用于发布,因为我使用的是自己的设备,即使我只是测试(谷歌也不知道哈哈),它被认为是一个版本,这就是它的另一个关键。