Skip to content

Instantly share code, notes, and snippets.

View blundell's full-sized avatar
😶‍🌫️

Paul Blundell blundell

😶‍🌫️
View GitHub Profile
@blundell
blundell / Otto event bus for Android Notification
Created October 23, 2013 10:46
Otto event bus for Notifications. Really easy to show a notification from an unrelated piece of code. Nice and easy to test. Good use of the bus!
public class ParseNotificationWatcher {
private final ParseNotificationManager notificationManager;
private final NotificationBuilder notificationBuilder;
public ParseNotificationWatcher(ParseNotificationManager notificationManager, NotificationBuilder notificationBuilder) {
this.notificationManager = notificationManager;
this.notificationBuilder = notificationBuilder;
}
@blundell
blundell / Navigator Pattern
Last active December 26, 2015 07:39
Navigator Pattern - not really copy and paste-able. Packages intents for re-use nicely. Helps testing? Redundant now we can use espresso?
public class Navigator {
private final ImplicitNavigator implicitNavigator;
private final ExplicitNavigator explicitNavigator;
private final AccountNavigator accountNavigator;
public Navigator(Activity activity, TescoLoginFacade tescoLoginFacade) {
implicitNavigator = new ImplicitNavigator(activity);
explicitNavigator = new ExplicitNavigator(activity);
accountNavigator = new AccountNavigator(activity, tescoLoginFacade);
println "test"
@blundell
blundell / SpotifyApiBuilder.java
Created June 20, 2015 15:40
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
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 17:57
Android ActivityLifecycleCallbacks that will only call back for a specific activity (not all activities)
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 March 30, 2015 18:27
Android Json Parsing of a YouTube response
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 / AndroidManifest.xml
Last active August 29, 2015 14:08
assertActivityRequiresPermission() Why doesn't this test pass?
<?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>
@blundell
blundell / Test.java
Last active August 29, 2015 14:05
Compare two Intents with FEST
import static org.fest.assertions.api.Assertions.assertThat;
assertThat(intentOne).usingComparator(new IntentComparator()).isEqualTo(intentTwo);
private static class IntentComparator implements Comparator<Intent> {
@Override
public int compare(Intent left, Intent right) {
return left.filterEquals(right) ? 0 : 1;
}
}
@blundell
blundell / Brittle-AndroidManifest.xml
Last active August 29, 2015 14:05
Your AndroidManifest is a public api
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blundell.brittle.example">
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
@blundell
blundell / 0-AdMobPokerExampleActivity.java
Last active August 29, 2015 14:04
Google Play Services AdMob loader - boiler plater saver
public class AdMobPokerExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AdMobPoker.track(findViewById(R.id.adView), savedInstanceState);
}