Capture captura de tela da GoogleMap Android API V2
Atualização final
A solicitação de recurso foi cumprida pelo Google. Por favor, vejaesta resposta abaixo.
Pergunta original
Usando a versão antiga da API do Google Maps para Android, consegui capturar uma captura de tela do mapa do google para compartilhar via mídia social. Eu usei o seguinte código para capturar a captura de tela e salvar a imagem em um arquivo e funcionou muito bem:
public String captureScreen()
{
String storageState = Environment.getExternalStorageState();
Log.d("StorageState", "Storage state is: " + storageState);
// image naming and path to include sd card appending name you choose for file
String mPath = this.getFilesDir().getAbsolutePath();
// create bitmap screen capture
Bitmap bitmap;
View v1 = this.mapView.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
OutputStream fout = null;
String filePath = System.currentTimeMillis() + ".jpeg";
try
{
fout = openFileOutput(filePath,
MODE_WORLD_READABLE);
// Write the string to the file
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
fout.flush();
fout.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
Log.d("ImageCapture", "FileNotFoundException");
Log.d("ImageCapture", e.getMessage());
filePath = "";
}
catch (IOException e)
{
// TODO Auto-generated catch block
Log.d("ImageCapture", "IOException");
Log.d("ImageCapture", e.getMessage());
filePath = "";
}
return filePath;
}
No entanto, o novo objeto GoogleMap usado pela V2 da API não tem um método "getRootView ()" como o MapView.
Eu tentei fazer isso:
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.basicMap);
View v1 = mapFragment.getView();
Mas a captura de tela que eu obtenho não tem nenhum conteúdo de mapa e é assim:
Alguém descobriu como tirar uma captura de tela da nova Google Maps Android API V2?
Atualizar
Eu também tentei obter o rootView dessa maneira:
View v1 = getWindow().getDecorView().getRootView();
Isso resulta em uma captura de tela que inclui a barra de ação na parte superior da tela, mas o mapa ainda está em branco, como a captura de tela que eu anexei.
Atualizar
Uma solicitação de recurso foi enviada ao Google. Por favor, faça a solicitação de recurso da estrela se isso é algo que você deseja que o Google adicione no futuro:Adicionar capacidade de captura de tela à API do Google Maps V2