我正在创建一个跟踪用户路径并在路径上绘制折线的应用。我的问题是,当用户完成他的轨道并按下停止时,地图缩小以包含整个折线,但它不会截取屏幕截图(当我调试时,它会跳过屏幕截图的代码并且不会执行它)。 / p>
我的问题是如何将截图截取到包含整个折线的地图
我的代码
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LatLngBounds.Builder builder= new LatLngBounds.Builder();
List<LatLng> latLngs = new ArrayList<LatLng>();
latLngs = polylineOptions.getPoints();
for(LatLng latLng : latLngs){
builder.include(latLng);
}
LatLngBounds bounds = builder.build();
int padding = 100;
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds,padding);
mMap.animateCamera(cameraUpdate);
final Intent[] intent = new Intent[1];
intent[0] = new Intent(getApplicationContext(),Results_Activity.class);
mMap.snapshot(new GoogleMap.SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap bitmap) {
intent[0].putExtra("image",bitmap);
}
});
startActivity(intent[0]);
}
});
答案 0 :(得分:0)
看起来你正在调用startActivity(intent [0]);在mMap.snapshot有机会完成回调之前。尝试移动startActivity(intent [0]);直接在intent [0] .putExtra(&#34; image&#34;,bitmap)之后;
答案 1 :(得分:0)
我设法截取屏幕截图并使用此代码将其发送到第二个活动
首次活动中的代码
stopButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
LatLngBounds.Builder builder= new LatLngBounds.Builder();
List<LatLng> latLngs = new ArrayList<LatLng>();
if(polylineOptions.getPoints()!= null){
latLngs = polylineOptions.getPoints();
for(LatLng latLng : latLngs){
builder.include(latLng);
}
LatLngBounds bounds = builder.build();
int padding = 100;
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds,padding);
mMap.animateCamera(cameraUpdate);
}
intent[0] = new Intent(getApplicationContext(),Results_Activity.class);
final SnapshotReadyCallback callback = new SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap snapshot) {
Bitmap image = snapshot;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
intent[0].putExtra("picture", byteArray);
startActivity(intent[0]);
}
};
mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
mMap.snapshot(callback);
}
});
return false;
}
});
第二项活动中的代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_results_);
Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
mapPreview = (ImageView) findViewById(R.id.TrackimageView);
mapPreview.setImageBitmap(bitmap);
}