最終更新
機能のリクエストは Google によって実現されました。以下のこの回答を参照してください。
元の質問
古いバージョンの Google Maps Android API を使用して、Google マップのスクリーンショットをキャプチャし、ソーシャル メディアで共有することができました。次のコードを使用してスクリーンショットをキャプチャし、画像をファイルに保存しましたが、うまくいきました。
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;
}
ただし、API の V2 で使用される新しい GoogleMap オブジェクトには、MapView のような「getRootView()」メソッドがありません。
私はこれをやろうとしました:
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.basicMap);
View v1 = mapFragment.getView();
しかし、取得したスクリーンショットにはマップ コンテンツがなく、次のようになります。
新しい Google Maps Android API V2 のスクリーンショットを撮る方法を見つけた人はいますか?
アップデート
また、この方法で rootView を取得しようとしました:
View v1 = getWindow().getDecorView().getRootView();
これにより、画面上部にアクション バーを含むスクリーンショットが作成されますが、添付したスクリーンショットのようにマップは空白のままです。
アップデート
機能リクエストが Google に送信されました。今後 Google に追加してほしい機能がある場合は、機能リクエストにスターを付けてください 。Google Maps API V2 にスクリーンショット機能を追加します。