Skip to content

Instantly share code, notes, and snippets.

Avatar

Paul Blundell blundell

View GitHub Profile
View gist:902d7283489a5eb2edda7823d4a38b05
class HellowWorldRepository {
interface Listener {
void onSomethingDone(String result);
}
public void doSomething(Listener listener) {
new Thread(new Runnable(){ // this is the worst way to do threading, google "android threading"
@Override
public void run() {
// do some stuff
@blundell
blundell / mailchimp.iframe
Last active Feb 9, 2019
Clean Mailchimp sign up form
View mailchimp.iframe
<!-- Begin Mailchimp Signup Form -->
<style type="text/css">
#mc_embed_signup { border: none; text-align: center; width: 100%; } /* Signup form container */
.mc-field-group { display: inline-block; } /* positions input field horizontally */
#mce-EMAIL { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 1em; ; border:none; border-bottom: 2px solid #000; color: #343434; background-color: transparent; padding: .7em 30em .7em 1em; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; display: inline-block; margin: 0; } /* Input Styles */
.clear { display: inline-block; } /* positions button horizontally in line with input */
@blundell
blundell / interleave Java 8.java
Created Nov 14, 2018
Interleave two streams of the same type in Java 8
View interleave Java 8.java
Stream<String> a = Stream.of("one", "three", "five");
Stream<String> b = Stream.of("two", "four", "six");
Stream<String> out = interleave(a, b);
/**
* https://stackoverflow.com/questions/53307682/how-to-interleave-merge-two-java-8-streams
**/
public static <T> Stream<T> interleave(Stream<T> streamA, Stream<T> streamB) {
return zip(streamA, streamB, (o1, o2) -> Stream.of(o1, o2)).flatMap(s -> s);
@blundell
blundell / 1_use.java
Created Apr 17, 2017
An AndroidThings button you can use to run something in a 1 liner call
View 1_use.java
Runnable somethingIWannaDo = new Runnable() {
@Override
public void run() {
Log.d("EZ", "I got ran");
}
};
// In Android Activity onCreate:
RunnableButton.create("BCM21", somethingIWannaDo).onCreateInjectInto(this);
@blundell
blundell / clear-android-things-apps.sh
Last active Nov 19, 2020
Uninstall all apps on an Android Device that have the intent-filter category IOT_LAUNCHER
View clear-android-things-apps.sh
#!/bin/bash
sp="/-\|"
sc=0
spin() {
printf "\b${sp:sc++:1}"
((sc==${#sp})) && sc=0
}
endspin() {
printf "\r"
}
@blundell
blundell / SpotifyApiBuilder.java
Created Jun 20, 2015
Creates a builder for the SpotifyApi allowing easier client creation & hiding retrofit implementation. Idea from: https://github.com/kaaes/spotify-web-api-android/pull/75
View SpotifyApiBuilder.java
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import kaaes.spotify.webapi.android.SpotifyApi;
import retrofit.android.MainThreadExecutor;
final class SpotifyApiBuilder {
private Executor executeExecutor;
private Executor callbackExecutor;
@blundell
blundell / UniqueActivityLifecycleCallbacks
Created May 23, 2015
Android ActivityLifecycleCallbacks that will only call back for a specific activity (not all activities)
View UniqueActivityLifecycleCallbacks
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import java.util.Locale;
public class UniqueActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
private final String activityName;
private final Application.ActivityLifecycleCallbacks lifecycleCallbacks;
@blundell
blundell / parsing
Created Mar 30, 2015
Android Json Parsing of a YouTube response
View parsing
private Vector<ContentValues> parseJson(String jsonStr) {
Vector<ContentValues> cVVector = new Vector<ContentValues>();
try {
JSONObject json = new JSONObject(jsonStr);
JSONObject data = json.getJSONObject("data");
JSONArray items = data.getJSONArray("items");
for (int i = 0; i < items.length(); i++) {
// Get the JSON object representing the day
JSONObject videoDetails = items.getJSONObject(i);
@blundell
blundell / ForegroundImageView.java
Created Jan 4, 2015
An ImageView which supports a centered foreground drawable. - Based on Jake Wharton's ForegroundImageView
View ForegroundImageView.java
/**
* https://gist.github.com/JakeWharton/0a251d67649305d84e8a
* <p/>
* Then modified to :
* not scale the foreground to the ImageView size
* draw the foreground centered
*/
public class ForegroundImageView extends ImageView {
private Drawable foreground;
@blundell
blundell / AndroidManifest.xml
Last active Aug 29, 2015
assertActivityRequiresPermission() Why doesn't this test pass?
View AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blundell.myapplication">
<application>
<activity
android:name=".SecondActivity"
android:permission="perm.foo.bar" />
</application>