[銅貨アンドロイド]Googleマップキャプチャボタンの作成
12088 ワード
Googleマップを含むアプリケーションを作成するときに、マップクリップをキャプチャして画像として保存したい場合があります.
Googleでビューからビットマップを取得すると、黒い画面しか見えません.
Google map APIはすでに良い機能を持っており、簡単に使用できます.
地図計画のgetMapAsyncを使用してGoogleMapオブジェクトを要求します.
このパラメータを使用して、現在のオブジェクトのOnMapReadyCallbackをコールバックとして登録します.
地図オブジェクトの準備が完了すると、OnMapReadyCallbackは実装済みのOnMapReadyを実行します.
このgooglemapはずっと地図を使っているので、保存したほうがいいです.
スクリーンショットボタンを押すと、ボタンにOnClickListenerを付けてスクリーンショットします.
かっこに動作を書けばいいので、地図のコードを書けばいいです.
マップショットはGoogle Mapオブジェクトのsnapshotメソッドを使用できます.
パラメータはSnapshotReadyCallbackで、Ramda形式で関数を記述すればよい.
SnapshotReadyCallbackのonSnapshotReadyはNullable Bitmapからパラメータに移動します.
itと書いてあるのは来たBitmap
Nullableですか?セキュアコールを使用すると、空でない場合にのみストレージが実行されます.
saveMediaStorage()は、ビットマップを受信して格納する方法です.グーグルで見つけたものを下に書きます.
この画面で紫色のスクリーンショットをクリックします
スクリーンをきれいに切ることができます!
Googleでビューからビットマップを取得すると、黒い画面しか見えません.
Google map APIはすでに良い機能を持っており、簡単に使用できます.
1.地図オブジェクトの取得
class MainActivity : AppCompatActivity(), OnMapReadyCallback {
//캡쳐 버튼
private val screenShotButton: AppCompatButton by lazy {
findViewById<AppCompatButton>(R.id.screenShotButton)
}
...
override fun onCreate(savedInstanceState: Bundle?) {
// 프래그먼트를 xml에서 정적으로 추가한 경우
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
まず指導対象を取得する.地図計画のgetMapAsyncを使用してGoogleMapオブジェクトを要求します.
このパラメータを使用して、現在のオブジェクトのOnMapReadyCallbackをコールバックとして登録します.
地図オブジェクトの準備が完了すると、OnMapReadyCallbackは実装済みのOnMapReadyを実行します.
2.onMapReadyでボタンにリスナーを追加
override fun onMapReady(googleMap: GoogleMap) {
screenShotButton.setOnClickListener {
googleMap.snapshot {
it?.let{
saveMediaToStorage(it)
}
}
}
}
onMapReadyパラメータのgoogleMapを使用して地図を処理できます.このgooglemapはずっと地図を使っているので、保存したほうがいいです.
スクリーンショットボタンを押すと、ボタンにOnClickListenerを付けてスクリーンショットします.
かっこに動作を書けばいいので、地図のコードを書けばいいです.
マップショットはGoogle Mapオブジェクトのsnapshotメソッドを使用できます.
パラメータはSnapshotReadyCallbackで、Ramda形式で関数を記述すればよい.
SnapshotReadyCallbackのonSnapshotReadyはNullable Bitmapからパラメータに移動します.
itと書いてあるのは来たBitmap
Nullableですか?セキュアコールを使用すると、空でない場合にのみストレージが実行されます.
saveMediaStorage()は、ビットマップを受信して格納する方法です.グーグルで見つけたものを下に書きます.
3.saveMediaToStorageメソッド
private fun saveMediaToStorage(bitmap: Bitmap) {
// Generating a file name
val filename = "${System.currentTimeMillis()}.jpg"
// Output stream
var fos: OutputStream? = null
// For devices running android >= Q
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// getting the contentResolver
this.contentResolver?.also { resolver ->
// Content resolver will process the contentvalues
val contentValues = ContentValues().apply {
// putting file information in content values
put(MediaStore.MediaColumns.DISPLAY_NAME, filename)
put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg")
put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES)
}
// Inserting the contentValues to
// contentResolver and getting the Uri
val imageUri: Uri? = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
// Opening an outputstream with the Uri that we got
fos = imageUri?.let { resolver.openOutputStream(it) }
}
} else {
// These for devices running on android < Q
val imagesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
val image = File(imagesDir, filename)
fos = FileOutputStream(image)
}
fos?.use {
// Finally writing the bitmap to the output stream that we opened
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, it)
Toast.makeText(this , "Captured View and saved to Gallery" , Toast.LENGTH_SHORT).show()
}
}
渡されたビットマップを画像ファイルの関数として保存します.4.完了
この画面で紫色のスクリーンショットをクリックします
スクリーンをきれいに切ることができます!
Reference
この問題について([銅貨アンドロイド]Googleマップキャプチャボタンの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@jibmin/코틀린-안드로이드-구글-맵-캡쳐-버튼-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol