System directories
Method | Result |
---|---|
Environment.getDataDirectory() | /data |
Environment.getDownloadCacheDirectory() | /cache |
Environment.getRootDirectory() | /system |
External storage directories
System directories
Method | Result |
---|---|
Environment.getDataDirectory() | /data |
Environment.getDownloadCacheDirectory() | /cache |
Environment.getRootDirectory() | /system |
External storage directories
// Random terminal tip #1 | |
//You'll see this message if you git commit without a message (-m) | |
// You can get out of it with two steps: | |
// 1.a. Type a multi-line message to move foward with the commit. | |
// 1.b. Leave blank to abort the commit. | |
// 2. Hit "esc" then type ":wq" and hit enter to save your choice. Viola! | |
# Please enter the commit message for your changes. Lines starting | |
# with '#' will be ignored, and an empty message aborts the commit. |
new AsyncTask<Integer, Void, Void>(){ | |
@Override | |
protected Void doInBackground(Integer... params) { | |
// main logic | |
return null; | |
} | |
}.execute(0); |
[ | |
{ | |
"name": "Afghanistan", | |
"dial_code": "+93", | |
"code": "AF" | |
}, | |
{ | |
"name": "Aland Islands", | |
"dial_code": "+358", | |
"code": "AX" |
// UPDATE: Everyone finding this gist via Google! | |
// Modern kotlinx.coroutines has out-of-the-box support for asyncLazy with the following expression: | |
// val myLazyValue = async(start = CoroutineStart.LAZY) { ... } | |
// Use myLazyValue.await() when you need it | |
// ---------------- public api ---------------- | |
public interface AsyncLazy<out T> { | |
public suspend fun value(): T | |
public fun isInitialized(): Boolean |
package be.brol | |
import android.os.Binder | |
import android.os.Bundle | |
import android.support.v4.app.BundleCompat | |
import android.support.v4.app.Fragment | |
/** | |
* Eases the Fragment.newInstance ceremony by marking the fragment's args with this delegate | |
* Just write the property in newInstance and read it like any other property after the fragment has been created |
package com.github.irshulx.glitchtext; | |
import android.content.Context; | |
import android.content.res.TypedArray; | |
import android.graphics.Color; | |
import android.text.TextUtils; | |
import android.util.AttributeSet; | |
import android.util.TypedValue; | |
import android.view.Gravity; | |
import android.view.View; |
//4 bytes for "OggS", 2 unused bytes, 8 bytes for length | |
private const val OGG_OFFSET = 8 + 2 + 4 | |
private val OGGS_BYTES = "OggS".map(Char::toByte).toByteArray() | |
private val VORBIS_BYTES = "vorbis".map(Char::toByte).toByteArray() | |
fun ByteArray.slice(start: Int, len: Int) = copyOfRange(start, start + len) | |
@Throws(IOException::class) | |
fun calculateOggDuration(oggFile: File): Pair<Int, Int> { | |
var rate = -1 | |
var length = -1 |