Skip to content

Instantly share code, notes, and snippets.

@mutkuensert
mutkuensert / Base64StringToInputStream.kt
Last active May 13, 2025 10:26
An example that converts base64 string to an input stream without creating a new byte array
import android.util.Base64
import android.util.Base64InputStream
import org.apache.commons.io.input.ReaderInputStream //implementation 'commons-io:commons-io:2.19.0' https://central.sonatype.com/artifact/commons-io/commons-io?smo=true
import tr.com.avivasa.mobileapp.base.BasePresenter
import java.io.StringReader
import java.nio.charset.StandardCharsets
val base64String = "someBase64String"
val inputStream = Base64InputStream(
ReaderInputStream.builder()
import android.graphics.Typeface
import android.text.Annotation
import android.text.SpannedString
import android.text.style.ForegroundColorSpan
import android.text.style.StrikethroughSpan
import android.text.style.StyleSpan
import android.text.style.UnderlineSpan
import androidx.annotation.StringRes
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import android.content.Intent
import android.net.Uri
import android.os.Handler
import android.os.Looper
import android.os.ParcelFileDescriptor
import androidx.activity.ComponentActivity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import timber.log.Timber
import java.io.ByteArrayInputStream
fun <T : Any> T.equalsAtLeastOne(arg1: T? = null, arg2: T? = null, arg3: T? = null): Boolean {
return this == arg1 || this == arg2 || this == arg3
}
@mutkuensert
mutkuensert / NullChecks.kt
Created February 19, 2025 11:58
Useful null check methods
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
@OptIn(ExperimentalContracts::class)
fun allNotNull(
arg1: Any?,
arg2: Any?,
arg3: Any? = Any(),
arg4: Any? = Any(),
arg5: Any? = Any()
@mutkuensert
mutkuensert / CommandLine.groovy
Created January 13, 2025 11:59
Command line helper for gradle prints process outputs
class CommandLine {
static execute(String command) {
command.execute().waitForProcessOutput(System.out, System.err)
}
}
@mutkuensert
mutkuensert / HexToBase64.kt
Last active December 27, 2024 06:54
HexCodeUtils
object HexToBase64 {
fun encode(hex: String): String {
return Base64.getUrlEncoder().encodeToString(hex.decodeHex())
}
private fun String.decodeHex(): ByteArray {
check(length % 2 == 0) { "Must have an even length" }
return chunked(2)
@mutkuensert
mutkuensert / KSerializerExample.kt
Created October 22, 2024 11:13
SerialDescriptor example
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.KSerializer
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.descriptors.buildClassSerialDescriptor
import kotlinx.serialization.descriptors.element
import kotlinx.serialization.encoding.CompositeDecoder
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.encoding.decodeStructure
@mutkuensert
mutkuensert / ChangeLog.groovy
Last active March 22, 2024 16:09
Change log methods
ext.getChangeLog = { lastCommitsCount = 10 ->
return formatGitLog(getGitLogUntilCommitNumber(lastCommitsCount))
}
ext.getReleaseChangeLog = {
def lastTag = getLastTag()
return formatGitLog(getGitLogUntilTag(lastTag))
}
@mutkuensert
mutkuensert / Memory.kt
Created March 20, 2024 13:17
Getting total memory of Android device
val activityManager = (context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager)
val memoryInfo = ActivityManager.MemoryInfo()
activityManager.getMemoryInfo(memoryInfo)
val totalMemory = memoryInfo.totalMem