mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-06-05 21:59:27 +02:00
add handling for local contact photo storing/retrieving
This commit is contained in:
@ -1,10 +1,11 @@
|
|||||||
package com.simplemobiletools.contacts.pro.helpers
|
package com.simplemobiletools.contacts.pro.helpers
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import com.simplemobiletools.contacts.pro.extensions.applyRegexFiltering
|
import android.graphics.Bitmap
|
||||||
import com.simplemobiletools.contacts.pro.extensions.config
|
import android.graphics.BitmapFactory
|
||||||
import com.simplemobiletools.contacts.pro.extensions.contactsDB
|
import android.net.Uri
|
||||||
import com.simplemobiletools.contacts.pro.extensions.getEmptyContact
|
import android.provider.MediaStore
|
||||||
|
import com.simplemobiletools.contacts.pro.extensions.*
|
||||||
import com.simplemobiletools.contacts.pro.models.Contact
|
import com.simplemobiletools.contacts.pro.models.Contact
|
||||||
import com.simplemobiletools.contacts.pro.models.LocalContact
|
import com.simplemobiletools.contacts.pro.models.LocalContact
|
||||||
import com.simplemobiletools.contacts.pro.models.Organization
|
import com.simplemobiletools.contacts.pro.models.Organization
|
||||||
@ -21,6 +22,21 @@ class LocalContactsHelper(val activity: Activity) {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getPhotoByteArray(uri: String): ByteArray {
|
||||||
|
if (uri.isEmpty()) {
|
||||||
|
return ByteArray(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
val photoUri = Uri.parse(uri)
|
||||||
|
val bitmap = MediaStore.Images.Media.getBitmap(activity.contentResolver, photoUri)
|
||||||
|
|
||||||
|
val thumbnailSize = activity.getPhotoThumbnailSize()
|
||||||
|
val scaledPhoto = Bitmap.createScaledBitmap(bitmap, thumbnailSize * 2, thumbnailSize * 2, false)
|
||||||
|
val scaledSizePhotoData = scaledPhoto.getByteArray()
|
||||||
|
scaledPhoto.recycle()
|
||||||
|
return scaledSizePhotoData
|
||||||
|
}
|
||||||
|
|
||||||
private fun convertLocalContactToContact(localContact: LocalContact): Contact {
|
private fun convertLocalContactToContact(localContact: LocalContact): Contact {
|
||||||
val filterDuplicates = activity.config.filterDuplicates
|
val filterDuplicates = activity.config.filterDuplicates
|
||||||
val filteredPhoneNumbers = ArrayList<PhoneNumber>()
|
val filteredPhoneNumbers = ArrayList<PhoneNumber>()
|
||||||
@ -28,6 +44,16 @@ class LocalContactsHelper(val activity: Activity) {
|
|||||||
localContact.phoneNumbers.mapTo(filteredPhoneNumbers) { PhoneNumber(it.value.applyRegexFiltering(), 0, "") }
|
localContact.phoneNumbers.mapTo(filteredPhoneNumbers) { PhoneNumber(it.value.applyRegexFiltering(), 0, "") }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val contactPhoto = if (localContact.photo == null) {
|
||||||
|
null
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
BitmapFactory.decodeByteArray(localContact.photo, 0, localContact.photo!!.size)
|
||||||
|
} catch (e: OutOfMemoryError) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return activity.getEmptyContact().apply {
|
return activity.getEmptyContact().apply {
|
||||||
id = localContact.id!!
|
id = localContact.id!!
|
||||||
prefix = localContact.prefix
|
prefix = localContact.prefix
|
||||||
@ -45,6 +71,7 @@ class LocalContactsHelper(val activity: Activity) {
|
|||||||
starred = localContact.starred
|
starred = localContact.starred
|
||||||
contactId = localContact.id!!
|
contactId = localContact.id!!
|
||||||
thumbnailUri = ""
|
thumbnailUri = ""
|
||||||
|
photo = contactPhoto
|
||||||
notes = localContact.notes
|
notes = localContact.notes
|
||||||
groups = localContact.groups
|
groups = localContact.groups
|
||||||
organization = Organization(localContact.company, localContact.jobPosition)
|
organization = Organization(localContact.company, localContact.jobPosition)
|
||||||
@ -63,6 +90,7 @@ class LocalContactsHelper(val activity: Activity) {
|
|||||||
surname = contact.surname
|
surname = contact.surname
|
||||||
suffix = contact.suffix
|
suffix = contact.suffix
|
||||||
nickname = contact.nickname
|
nickname = contact.nickname
|
||||||
|
photo = getPhotoByteArray(contact.photoUri)
|
||||||
phoneNumbers = contact.phoneNumbers
|
phoneNumbers = contact.phoneNumbers
|
||||||
emails = contact.emails
|
emails = contact.emails
|
||||||
events = contact.events
|
events = contact.events
|
||||||
|
Reference in New Issue
Block a user