У меня проблема с Android 10.
DATE_TAKEN возвращает нормальное значение, когда я делаю снимок в приложении камеры по умолчанию.
, но всегда возвращает ноль, когда я вставляю изображение в свой код .
Что я должен сделать, чтобы получить нормальное значение DATE_TAKEN?
// при чтении
val cursor = context!!.contentResolver.query(data, null, null, null, null, null)
val date_taken = cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATE_TAKEN))
Toast.makeText(context, date_taken, Toast.LENGTH_SHORT).show()
// сохранить код
val now = System.currentTimeMillis()
val value = ContentValues().apply {
put(MediaStore.Images.Media.RELATIVE_PATH, DCIM/customPath)
put(MediaStore.Images.Media.DISPLAY_NAME, "image.jpeg")
put(MediaStore.Images.Media.MIME_TYPE, "image/*")
put(MediaStore.Images.Media.DATE_ADDED, now / 1000)
put(MediaStore.Images.Media.DATE_TAKEN, now)
put(MediaStore.Images.Media.IS_PENDING, 1)
}
val item: Uri = contentResolver.insert(collection, value)!!
try {
val pdf = contentResolver.openFileDescriptor(item, "w", null)
if (pdf != null) {
val inputStream = getImageInputStream(agreePaper2)
val strToByte = getBytes(inputStream)
FileOutputStream(pdf.fileDescriptor).use { it.write(strToByte) }
inputStream.close()
pdf.close()
contentResolver.update(item, value, null, null)
}
} catch (e: FileNotFoundException) {
e.printStackTrace()
} catch (e: IOException) {
e.printStackTrace()
}
value.clear()
value.put(MediaStore.Images.Media.IS_PENDING, 0)
contentResolver.update(item, value, null, null)
/ / getImageInputStream
private fun getImageInputStream(bitmap: Bitmap): InputStream {
val bytes = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes)
val bitmapData = bytes.toByteArray()
return ByteArrayInputStream(bitmapData)
}
// getBytes
private fun getBytes(inputStream: InputStream): ByteArray {
val byteBuffer = ByteArrayOutputStream()
val bufferSize = 1024
val buffer = ByteArray(bufferSize)
var len = inputStream.read(buffer)
while (len != -1) {
byteBuffer.write(buffer, 0, len);
len = inputStream.read(buffer)
}
return byteBuffer.toByteArray()
}