diff options
author | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-09-10 20:59:49 +0200 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-09-26 13:47:28 +0200 |
commit | 4148a5a91aefef20f28e520d1c0d4b6485cf0234 (patch) | |
tree | 0022bb210f3789c506d4f2b0f6a841ae4308f5a2 /platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com | |
parent | f1a094700719f4ab6edb789c977f4b522d1ddc95 (diff) | |
download | qtlocation-mapboxgl-4148a5a91aefef20f28e520d1c0d4b6485cf0234.tar.gz |
[android] expose offline database merge API
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt new file mode 100644 index 0000000000..9905733a68 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/MergeOfflineRegionsActivity.kt @@ -0,0 +1,129 @@ +package com.mapbox.mapboxsdk.testapp.activity.offline + +import android.Manifest +import android.content.pm.PackageManager +import android.os.Bundle +import android.support.v4.app.ActivityCompat +import android.support.v4.content.ContextCompat +import android.support.v7.app.AppCompatActivity +import android.widget.Toast +import com.mapbox.mapboxsdk.Mapbox +import com.mapbox.mapboxsdk.constants.Style +import com.mapbox.mapboxsdk.log.Logger +import com.mapbox.mapboxsdk.offline.OfflineManager +import com.mapbox.mapboxsdk.offline.OfflineRegion +import com.mapbox.mapboxsdk.testapp.R +import kotlinx.android.synthetic.main.activity_merge_offline_regions.* +import java.io.File +import java.io.FileOutputStream + +class MergeOfflineRegionsActivity : AppCompatActivity() { + companion object { + private const val TEST_DB_FILE_NAME = "offline.db" + private const val PERMISSIONS_REQUEST_CODE = 11 + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_merge_offline_regions) + + // forcing offline state + Mapbox.setConnected(false) + + mapView.setStyleUrl(Style.SATELLITE) + + mapView.onCreate(savedInstanceState) + load_region_btn.setOnClickListener { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, + arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), PERMISSIONS_REQUEST_CODE) + } else { + mergeDb() + } + } + } + + override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + if (requestCode == PERMISSIONS_REQUEST_CODE) { + for (result in grantResults) { + if (result != PackageManager.PERMISSION_GRANTED) { + finish() + } + } + mergeDb() + } + } + + private fun mergeDb() { + // copy db asset to internal memory + copyAsset() + + OfflineManager.getInstance(this).mergeOfflineRegions( + this.filesDir.absolutePath + "/" + TEST_DB_FILE_NAME, + object : OfflineManager.MergeOfflineRegionsCallback { + override fun onMerge(offlineRegions: Array<OfflineRegion>) { + mapView.setStyleUrl(Style.SATELLITE) + Toast.makeText( + this@MergeOfflineRegionsActivity, + String.format("Merged %d regions.", offlineRegions.size), + Toast.LENGTH_LONG).show() + } + + override fun onError(error: String) { + Logger.e("MBGL_OFFLINE_DB_MERGE", error) + } + }) + } + + private fun copyAsset() { + val bufferSize = 1024 + val assetManager = this.assets + val inputStream = assetManager.open(TEST_DB_FILE_NAME) + val outputStream = FileOutputStream(File(this.filesDir, TEST_DB_FILE_NAME)) + + try { + inputStream.copyTo(outputStream, bufferSize) + } finally { + inputStream.close() + outputStream.flush() + outputStream.close() + } + } + + override fun onStart() { + super.onStart() + mapView.onStart() + } + + override fun onResume() { + super.onResume() + mapView.onResume() + } + + override fun onPause() { + super.onPause() + mapView.onPause() + } + + override fun onStop() { + super.onStop() + mapView.onStop() + } + + override fun onLowMemory() { + super.onLowMemory() + mapView.onLowMemory() + } + + override fun onDestroy() { + super.onDestroy() + mapView.onDestroy() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) + } +} |