Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Capture view and Register to gallery

Capture view and Register to gallery

Avatar for umechanhika

umechanhika

January 17, 2020
Tweet

More Decks by umechanhika

Other Decks in Programming

Transcript

  1. Capture view view.isDrawingCacheEnabled = true val cache = view.drawingCache val

    bitmap = Bitmap.createBitmap(cache) val bitmap = view.drawToBitmap() val canvas = Canvas(bitmap) view.draw(canvas) Deprecated New https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/ src/main/java/com/example/addscreenshottogallery/ui/util/ScreenshotUtil.kt
  2. File storage access In this case: MediaStore API Is this

    ... Media file? Yes Shareable? Yes Removed on app uninstalled? No https://developer.android.com/training/data-storage
  3. Permission https://developer.android.com/training/data-storage No need on Android 10 or higher <uses-permission

    android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
  4. Register to gallery Android 10 or higher Android 9 or

    lower Create ContentValues Save bitmap Create ContentValues Save bitmap Register to MediaStore Register to MediaStore
  5. Register to gallery Android 10 or higher Android 9 or

    lower Create ContentValues Save bitmap Create ContentValues Save bitmap Register to MediaStore Register to MediaStore
  6. Register to gallery ContentValues().apply { put(MediaStore.Images.Media.DISPLAY_NAME, "fileName.jpg") put(MediaStore.Images.Media.TITLE, "fileName") put(MediaStore.Images.Media.MIME_TYPE,

    "image/jpeg") put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis() / 1_000) } Create ContentValues https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/ src/main/java/com/example/addscreenshottogallery/ui/util/ScreenshotUtil.kt Common
  7. Register to gallery ContentValues().apply { put(MediaStore.Images.Media.DISPLAY_NAME, "fileName.jpg") put(MediaStore.Images.Media.TITLE, "fileName") put(MediaStore.Images.Media.MIME_TYPE,

    "image/jpeg") put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis() / 1_000) } Create ContentValues https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/ src/main/java/com/example/addscreenshottogallery/ui/util/ScreenshotUtil.kt Common
  8. Register to gallery ContentValues().apply { put(MediaStore.Images.Media.DISPLAY_NAME, "fileName.jpg") put(MediaStore.Images.Media.TITLE, "fileName") put(MediaStore.Images.Media.MIME_TYPE,

    "image/jpeg") put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis() / 1_000) } Create ContentValues https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/ src/main/java/com/example/addscreenshottogallery/ui/util/ScreenshotUtil.kt Common
  9. Register to gallery ContentValues().apply { put(MediaStore.Images.Media.DISPLAY_NAME, "fileName.jpg") put(MediaStore.Images.Media.TITLE, "fileName") put(MediaStore.Images.Media.MIME_TYPE,

    "image/jpeg") put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis() / 1_000) } Create ContentValues https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/ src/main/java/com/example/addscreenshottogallery/ui/util/ScreenshotUtil.kt Common
  10. Register to gallery ContentValues().apply { put(MediaStore.Images.Media.DISPLAY_NAME, "fileName.jpg") put(MediaStore.Images.Media.TITLE, "fileName") put(MediaStore.Images.Media.MIME_TYPE,

    "image/jpeg") put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis() / 1_000) } Create ContentValues https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/ src/main/java/com/example/addscreenshottogallery/ui/util/ScreenshotUtil.kt Common
  11. Register to gallery Register to MediaStore contentValues.apply { put( MediaStore.Images.Media.RELATIVE_PATH,

    "${Environment.DIRECTORY_PICTURES}/DirectoryName" ) put(MediaStore.MediaColumns.IS_PENDING, 1) } contentResolver.run { uri = insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues) ?: return // ... } Android 10 or higher https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/ src/main/java/com/example/addscreenshottogallery/ui/util/ScreenshotUtil.kt
  12. Register to gallery Save bitmap contentResolver.run { uri = insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,

    contentValues) ?: return openOutputStream(uri).use { bitmap.compress(Bitmap.CompressFormat.JPEG, 100, it) } contentValues.put(MediaStore.MediaColumns.IS_PENDING, 0) update(uri, contentValues, null, null) } Android 10 or higher https://github.com/umechanhika/playground/blob/master/android/AddScreenshotToGallery/app/ src/main/java/com/example/addscreenshottogallery/ui/util/ScreenshotUtil.kt
  13. Drawing cache is deprecated. Use MediaStore API. No need permission

    on Android 10 or higher Register process is different from Android 10 or higher Summary