2017-01-01 5 views
1

меня интегрировать карту в моей деятельности в настоящее время я хотел взять скриншот местоположения карты, но его не принимает скриншот правильно он просто показывает логотип Google на скриншоте Вот мой XMLПроблема в принятии Screeshot карты деятельности

<RelativeLayout 
android:id="@id/activity_main" 
android:layout_height="match_parent" 
android:layout_width="match_parent" 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:map="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/map" 
android:name="com.google.android.gms.maps.SupportMapFragment" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.apple.emergency.MapsActivity" /> 
</Relativelayout> 

и код класса Java

public class MapsActivity extends FragmentActivity implements   OnMapReadyCallback { 

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 


/** 
* Manipulates the map once available. 
* This callback is triggered when the map is ready to be used. 
* This is where we can add markers or lines, add listeners or move the camera. In this case, 
* we just add a marker near Sydney, Australia. 
* If Google Play services is not installed on the device, the user will be prompted to install 
* it inside the SupportMapFragment. This method will only be triggered once the user has 
* installed Google Play services and returned to the app. 
*/ 
@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in sudney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
// googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(34,15),1)); 
takeScreenshot(); 
} 
public Bitmap takeScreenshot() { 
    View rootView = findViewById(R.id.activity_main).getRootView(); 

    rootView.setDrawingCacheEnabled(true); 
    return rootView.getDrawingCache(); 
} 
} 
+1

Взгляните на http://stackoverflow.com/questions/40398602/googlemaps-coded-screenshot-returns-black-image/40398944#40398944 – antonio

ответ

0
mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() { 
     public void onMapLoaded() { 
      mMap.snapshot(new GoogleMap.SnapshotReadyCallback() { 
       public void onSnapshotReady(Bitmap bitmap) { 
        // Write image to disk 
       // FileOutputStream out = new FileOutputStream("/mnt/sdcard/map.png"); 
        // bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
        shareBitmap(bitmap,"my location"); 
       } 
      }); 
     } 
    }); 
} 

поделиться

private void shareBitmap (Bitmap bitmap,String fileName) { 
    try { 
     File file = new File(getBaseContext().getCacheDir(), fileName + ".png"); 
     FileOutputStream fOut = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.PNG.PNG, 100, fOut); 
     fOut.flush(); 
     fOut.close(); 
     file.setReadable(true, false); 
     final Intent intent = new Intent( android.content.Intent.ACTION_SEND); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); 
     intent.setType("image/png"); 
     startActivity(intent); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^