Skip to content

Instantly share code, notes, and snippets.

View nosix's full-sized avatar

nosix nosix

View GitHub Profile
@nosix
nosix / Capture.kt
Created September 18, 2016 08:40
Taking a snapshot of the screen for Android (SDK 21) in Kotlin 1.0.3
View Capture.kt
package xxx
import android.content.Context
import android.graphics.Bitmap
import android.graphics.PixelFormat
import android.hardware.display.DisplayManager
import android.hardware.display.VirtualDisplay
import android.media.ImageReader
import android.media.projection.MediaProjection
import android.util.Log
@nosix
nosix / Application.kt
Last active February 22, 2023 01:04
Google App Engine Standard Environment in Java8 with Kotlin and SpringBoot
View Application.kt
package com.example
import com.example.mapper.json.JsonObjectMapper
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.web.support.SpringBootServletInitializer
import org.springframework.context.annotation.Bean
import org.thymeleaf.spring4.SpringTemplateEngine
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver
import org.thymeleaf.spring4.view.ThymeleafViewResolver
@nosix
nosix / coroutineSample.kt
Last active February 13, 2023 18:14
Promise and async/await sample in Kotlin/JS
View coroutineSample.kt
fun main(args: Array<String>) {
launch {
loadAllFiles()
}
}
fun launch(block: suspend () -> Unit) {
block.startCoroutine(object : Continuation<Unit> {
override val context: CoroutineContext get() = EmptyCoroutineContext
override fun resume(value: Unit) {}
@nosix
nosix / AndroidManifest.xml
Last active November 17, 2022 14:17
Writting to external storage (SD card) for Android (SDK 23) in Kotlin 1.0.3.
View AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="xxx">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
@nosix
nosix / limitedExtensions.kt
Created September 7, 2017 04:23
How to limit the scope of extension functions in Kotlin.
View limitedExtensions.kt
interface Extension
// Why is keyword `class` instead of `object`?
// Because we can use the `foo` function after importing `FooExtension.foo`.
class FooExtension : Extension {
fun String.foo(): String = "Foo${this}"
}
class BarExtension : Extension {
fun String.bar(): String = "Bar${this}"
@nosix
nosix / AndroidManifest.xml
Last active September 24, 2021 06:42
Floating App for Android (SDK 21) in Kotlin 1.0.3
View AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
...
<service android:name=".FloatingAppService"/>
View AudioSourceLoader.cs
using UnityEditor;
using UnityEngine;
using UnityEngine.AddressableAssets;
namespace AssetLoader
{
[RequireComponent(typeof(AudioSource))]
public class AudioSourceLoader : MonoBehaviour
{
[SerializeField] private AssetReferenceAudioClip audioClip;
@nosix
nosix / LiveDataEditor.kt
Created October 9, 2019 06:16
How to make MutableLiveData declaration unnecessary in ViewModel.
View LiveDataEditor.kt
package com.example.android.livedata
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
abstract class LiveDataEditor<R> {
fun <T> propertyOf() = LiveDataProperty<T>()
@nosix
nosix / capture.bat
Last active June 24, 2019 04:10
Batch file to start Android device screen capture. Please put it in the scrcpy folder and execute it.
View capture.bat
@echo off
cd %~dp0
setlocal
set CMD=adb devices
for /f "usebackq tokens=1,2,3*" %%a in (`%CMD%`) do (
if "%%b" == "device" (
set DEVICE_ID=%%a
@nosix
nosix / AndroidManifest.xml
Last active November 13, 2018 18:40
How to resolve the memory leak for Android (SDK 22) in Kotlin 1.0.2. (InputMethodManager refer to RecyclerView)
View AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="xxx">
<application
android:name=".MyApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
...