Skip to content

Instantly share code, notes, and snippets.

kingargyle /
Last active Jun 1, 2022
Example of Unit Testing classes with Hilt @EntryPoints
public class SchoolViewHolder extends RecyclerView.ViewHolder {
private ItemSchoolBinding binding;
// @VisibleForTesting
// protected EventBus eventBus = EventBus.getDefault();
private EventBus eventBus;
public SchoolViewHolder(@NonNull View itemView) {
kingargyle / CoroutinesRule.kt
Created Jul 31, 2020
A JUnit 4 test rule for working with testing coroutines.
View CoroutinesRule.kt
package com.abercrombie.testing.ui.rules
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.TestCoroutineScope
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runBlockingTest
import kotlinx.coroutines.test.setMain
import org.junit.rules.TestRule
kingargyle / spotless.gradle
Created May 16, 2020
Configure XML formatting for Android Layout files
View spotless.gradle
subprojects {
apply plugin: "com.diffplug.gradle.spotless"
spotless {
format 'xml', {
target '**/layout*/*.xml'
eclipseWtp('xml').configFile rootProject.file('spotless.xml.prefs')
kingargyle / gist:460bd53b5c6096fc43866020a9bde4d9
Created Oct 12, 2019
Capture Image from HLS stream using FFMPeg
View gist:460bd53b5c6096fc43866020a9bde4d9
ffmpeg -loglevel 99 -i "" -ss 00:00:14.435 -vframes 1 -strftime 1 "%Y-%m-%d_%H-%M-%S_crew_stadium.png"
View commit-msg
error_msg="Aborting commit. Your commit message is missing a JIRA ticket ('PP-1234')"
if ! grep -iqE "$commit_regex" "$1";
echo "$error_msg" >&2
exit 1
kingargyle / PlainAndroidRunner.kt
Created Feb 19, 2019
A bare bones RobolectrictTestRunner that only starts up a sandbox and does not attempt to load any resources. This is good for non-ui tests where you still need portions of the android library but not any of the resources. Reduces robolectric startup time to 2 seconds. This comes from the following google group post:…
View PlainAndroidRunner.kt
package us.nineworlds.serenity.testrunner
import org.junit.runners.model.FrameworkMethod
import org.junit.runners.model.InitializationError
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.internal.SandboxTestRunner
import org.robolectric.internal.bytecode.Sandbox
import java.lang.reflect.Method
kingargyle / MediaCodecInfoUtil.kt
Created Jan 13, 2019
Detect Media Codecs on Device
View MediaCodecInfoUtil.kt
import android.util.Log
class MediaCodecInfoUtil {
val supportedContainers = hashMapOf<String, Boolean>("video/mkv" to true, "video/mp4" to true, "video/avi" to false, "video/webm" to true, "video/ogg" to true, "video/mv4" to true)
kingargyle /
Created Nov 29, 2018 — forked from JakeWharton/
An adapter base class that uses a new/bind pattern for its views.
// Apache 2.0 licensed.
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
/** An implementation of {@link BaseAdapter} which uses the new/bind pattern for its views. */
public abstract class BindableAdapter<T> extends BaseAdapter {
kingargyle / AnimatingDialogFragment.kt
Last active Nov 18, 2018
A DialogFragment that support Animations useful for TV development
View AnimatingDialogFragment.kt
* Dialog Fragment with hide animations
class AnimatingDialogFragment : DialogFragment() {
override fun onCreate(savedInstanceState: Bundle?) {
kingargyle / FocusableLinearLayoutManager.kt
Created Oct 31, 2018
Focusable Linear Smooth Scrolling for use with Android TV and Recycler View
View FocusableLinearLayoutManager.kt
* The MIT License (MIT)
* Copyright (c) 2018 David Carver
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions: