2013-07-30 73 views
3

所以我试图在我的应用程序中实现一个地图片段。该应用程序在我的Galaxy S4上完美工作,但不会在我的Xperia Z上工作。该片段显示空白,没有地图。和logcat的规定:谷歌地图V2与奇怪的logcat错误

07-31 00:20:07.265: E/Google Maps Android API(8763): Failed to load map. Error contacting 
Google servers. This is probably an authentication issue (but could be due to network errors). 

所以我检查,如果谷歌播放-services_lib被引用正确的,我不这么认为。所有权限都可以,并且一切都应该正常工作。 (我认为自从在S4上工作以来,认证问题是伪造的?)。

我再检查logcat的无滤波器和我得到的文本作出任何SENCE垃圾邮件:

07-31 00:23:45.398: E/LocSvc_adapter(705): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 89 QMI_LOC_EVENT_POSITION_REPORT_IND_V02 
07-31 00:23:45.438: E/LocSvc_adapter(705): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 89 QMI_LOC_EVENT_NMEA_IND_V02 
07-31 00:23:45.438: E/LocSvc_eng(705): I/<=== nmea_cb line 1681 0x74211aa0 
07-31 00:23:45.448: E/LocSvc_adapter(705): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 89 QMI_LOC_EVENT_NMEA_IND_V02 
07-31 00:23:45.448: E/LocSvc_eng(705): I/<=== nmea_cb line 1681 0x7331d878 
07-31 00:23:45.458: E/LocSvc_adapter(705): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 89 QMI_LOC_EVENT_NMEA_IND_V02 
07-31 00:23:45.458: E/LocSvc_eng(705): I/<=== nmea_cb line 1681 0x74211aa0 
07-31 00:23:45.458: E/LocSvc_adapter(705): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 89 QMI_LOC_EVENT_NMEA_IND_V02 
07-31 00:23:45.458: E/LocSvc_eng(705): I/<=== nmea_cb line 1681 0x74211aa0 
07-31 00:23:45.478: E/LocSvc_adapter(705): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 89 QMI_LOC_EVENT_NMEA_IND_V02 
07-31 00:23:45.478: E/LocSvc_eng(705): I/<=== nmea_cb line 1681 0x7331d878 
07-31 00:23:45.478: E/LocSvc_adapter(705): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 89 QMI_LOC_EVENT_NMEA_IND_V02 
07-31 00:23:45.478: E/LocSvc_eng(705): I/<=== nmea_cb line 1681 0x7331d878 
07-31 00:23:45.488: E/LocSvc_adapter(705): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 89 QMI_LOC_EVENT_GNSS_SV_INFO_IND_V02 
07-31 00:23:45.488: E/LocSvc_afw(705): I/<=== sv_status_cb - line 1043 14 

它只是继续走这样的。我无法理解它。如果我删除与地图有关的所有内容,错误就会停止。所以它的谷歌地图的东西会触发错误。这里是包含Gmaps代码的类:

的java文件:

package com.nordoid.tracephone; 

import android.content.Context; 
import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.WindowManager; 
import android.widget.TextView; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class Mfragment_main extends Fragment 
{ 
    TextView settings; 
    TextView home; 
    TextView friends; 
    final int RQS_GooglePlayServices = 1; 
    MapFragment myMapFragment; 
    private GoogleMap map; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
     View view = inflater.inflate(R.layout.mainmenu_main, container, false); 

     map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map1)).getMap(); 
     map.setMyLocationEnabled(true); 
     setUpMap(); 

            /*** Statiske posisjoner til MAPS ***/ 

     final LatLng Pune = new LatLng(58.341907, 8.584957); 
     @SuppressWarnings("unused") 
     Marker pune = map.addMarker(new MarkerOptions() 
            .position(Pune) 
            .title("Friend 1") 
            .snippet("Christian") 
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));  

     final LatLng Pune1 = new LatLng(58.421157,7.400101); 
     @SuppressWarnings("unused") 
     Marker pune1 = map.addMarker(new MarkerOptions() 
            .position(Pune1) 
            .title("Friend 2") 
            .snippet("Howie") 
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET))); 

     final LatLng Pune2 = new LatLng(36.724576,-4.452317); 
     @SuppressWarnings("unused") 
     Marker pune2 = map.addMarker(new MarkerOptions() 
            .position(Pune2) 
            .title("Christian på ferie!") 
            .snippet("Partyyløva.") 
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));  
     return view; 
    } 

    private void setUpMap() 
    { 
     // Enable MyLocation Layer of Google Map 
     map.setMyLocationEnabled(true); 

     // Get LocationManager object from System Service LOCATION_SERVICE 
     LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE); 

     // Create a criteria object to retrieve provider 
     Criteria criteria = new Criteria(); 

     // Get the name of the best provider 
     String provider = locationManager.getBestProvider(criteria, true); 

     // Get Current Location 
     Location myLocation = locationManager.getLastKnownLocation(provider); 

     // Get latitude of the current location 
     double latitude = 60.0426;//myLocation.getLatitude(); 

     // Get longitude of the current location 
     double longitude = 6.3286;//myLocation.getLongitude(); 

     // Create a LatLng object for the current location 
     LatLng latLng = new LatLng(latitude, longitude);  

     // Show the current location in Google Map   
     map.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 

     // Zoom in the Google Map 
     map.animateCamera(CameraUpdateFactory.zoomTo(3)); 

//  map.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("You are here!")); 
    } 

} 

.xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/slider" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.32" > 

     <RelativeLayout 
      android:id="@+id/relativeLayout1" 
      android:layout_width="216dp" 
      android:layout_height="75dp" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_marginBottom="381dp" 
      android:layout_marginLeft="14dp" 
      android:layout_marginRight="18dp" 
      android:layout_marginTop="83dp" 
      android:background="@drawable/inputfield" 
      android:gravity="left" 
      android:paddingTop="0dp" > 

      <TextView 
       android:id="@+id/textView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       android:paddingLeft="7dp" 
       android:paddingTop="5dp" 
       android:text="QUICK TRACK" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="#33b5e5" /> 

      <SearchView 
       android:id="@+id/searchView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       android:iconifiedByDefault="false" 
       android:paddingBottom="20dp" 
       android:paddingLeft="-15dp" > 

      </SearchView> 

     </RelativeLayout> 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignLeft="@+id/relativeLayout1" 
      android:layout_alignParentBottom="true" 
      android:layout_alignRight="@+id/relativeLayout1" 
      android:layout_alignTop="@+id/relativeLayout1" 
      android:layout_marginBottom="50dp" 
      android:layout_marginTop="113dp" 
      android:background="@drawable/inputfield" > 

      <fragment 
       android:id="@+id/map1" 
       android:layout_width="200dp" 
       android:layout_height="100dp" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true" 
       android:layout_marginBottom="14dp" 
       android:layout_marginLeft="3dp" 
       android:layout_marginRight="3dp" 
       android:layout_marginTop="3dp" 
       class="com.google.android.gms.maps.SupportMapFragment" /> 
     </RelativeLayout> 
    </RelativeLayout> 
</LinearLayout> 

我的清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.nordoid.tracephone" 
    android:versionCode="9" 
    android:versionName="1.1.45" > 

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

    <permission 
    android:name="com.nordroid.tracephone.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature"/> 

    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.SEND_SMS" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.RECORD_VIDEO" /> 
    <uses-feature android:name="android.hardware.camera" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.CAMERA"/> 
    <uses-permission android:name="android.permission.RECORD_AUDIO"/> 
    <uses-permission android:name="android.permission.RECORD_VIDEO"/> 
    <uses-permission android:name="com.nordroid.tracephone.permission.MAPS_RECEIVE"/> 
    <uses-feature android:name="android.hardware.camera"/> 


    <uses-feature android:name="android.hardware.camera.autofocus" /> 
    <uses-feature 
     android:name="android.hardware.telephony" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.location.gps" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.location.network" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.screen.portrait" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.touchscreen" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.location" 
     android:required="false" /> 
    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true"/> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     > 

      <activity android:name="com.nordoid.tracephone.install.MainInstaller" 
      android:configChanges="orientation" 
      android:label="@string/title_activity_main" 
      android:noHistory="true" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.Holo.Light.NoActionBar" 
      android:windowSoftInputMode="stateUnchanged" 
      > 

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

     <activity 
      android:name="com.google.ads.AdActivity" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" > 
     </activity> 
     <activity 
      android:name="com.nordoid.tracephone.Settings" 
      android:configChanges="orientation" 
      android:screenOrientation="portrait" /> 
     <activity 
      android:name="com.nordoid.tracephone.MainMenu" 
      android:configChanges="orientation" 
     android:theme="@android:style/Theme.Holo.Light.NoActionBar" 
      android:windowSoftInputMode="stateVisible|adjustPan" 
      android:screenOrientation="portrait" /> 
     <activity 
      android:name="com.nordoid.tracephone.background.ReceiveSMS2VideoActivityHidden" 
      android:theme="@style/Theme.someName" /> 
     <activity 
      android:name="com.nordoid.tracephone.background.CameraActivityHidden" 
      android:theme="@style/Theme.someName2" /> 
     <activity 
      android:name="com.nordoid.tracephone.FriendList" 
      android:theme="@style/Theme.someName2" /> 
     <activity 
      android:name="com.nordoid.tracephone.googleplay" 
      android:theme="@style/Theme.someName2" /> 
     <activity 
      android:name="com.nordoid.tracephone.Friend" 
      android:theme="@style/Theme.someName2" /> 
     <activity android:name="com.nordoid.tracephone.background.CameraPreviewHidden" > 

     </activity> 
     <activity android:name="com.tapfortap.TapForTapActivity" /> 

     <receiver 
      android:name="com.nordoid.tracephone.background.hidden_gps_and_mail" 
      android:enabled="true" > 
      <intent-filter> 
       <action android:name="intent.action.HIDDEN_GPS_AND_MAIL" > 
       </action> 
      </intent-filter> 
     </receiver> 
     <receiver 
      android:name="com.nordoid.tracephone.background.ReceiveSMS" 
      android:exported="true" > 
      <intent-filter android:priority="1000" > 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 
     <receiver 
      android:name="com.nordoid.tracephone.background.ReceiveSMS2" 
      android:exported="true" > 
      <intent-filter android:priority="1000" > 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 

     <meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="THE MAPS API KEY"/> 
    </application> 



</manifest> 

我意识到可怕的编码,现在它非常混乱。对不起! )

+0

[检查此](http://stackoverflow.com/questions/17679317/android-google-maps-v2-authentication-error/17684309#17684309),看看它是否修复你的问题 –

+0

是的,一些疯狂的缓存会在那里。清除了所有内容,并开始工作。尽管如此,仍然在logCat中产生恼人的输出。 – chriskvik

回答

1

This may be the answer:

注意:不能膨胀的布局成片段时布局包括片段。只有在动态添加到片段时才支持嵌套片段。

此外,当玩嵌套片段时,请使用getChildFragmentManager()

你的情况,它可能工作(但是它不应该,但你幸运的话),银河S4,但不会上的Xperia Z.工作

1

关于NMEA信息,请参阅我的answerrelated question也在StackOverflow中。

我在这里链接它能够跟踪这两个答案。

底线:您可以放心地忽略此日志。