Skip to content

Instantly share code, notes, and snippets.

View patrickhammond's full-sized avatar

Patrick Hammond patrickhammond

View GitHub Profile
@patrickhammond
patrickhammond / PRESENTATION.md
Last active August 29, 2015 14:15
Getting started with RemarkJS. See instructions.md for details

class: center, middle, title-slide

Visit for remarkjs.com for syntax

import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import com.google.analytics.tracking.android.EasyTracker;
public class MainApplication extends Application {
private boolean locationNeedsUpdated = true;
private int createdActivityInstanceCount = 0;
@patrickhammond
patrickhammond / Optional.java
Created February 27, 2015 16:08
Optional implementation pillaged from Java 8 for when you don't have Java 8 APIs available. Optionally (ha!), you could take a look at Guava's Optional (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Optional.html)
/**
* In the absence of Java 8, here is our Optional duplicated code. Other than the package name,
* this should be a subset of this API, http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html
*/
public final class Optional<T> {
public static <T> Optional<T> of(T value) {
if (value == null) {
return Optional.empty();
}
@patrickhammond
patrickhammond / GsonParser.java
Last active August 29, 2015 14:16
Jackson parser behavior when encountering integer, nulls, and empty strings.
import com.google.gson.Gson;
import java.io.IOException;
public class GsonParser implements Parser {
@Override
public <T> T parse(String json, Class<T> clazz) throws IOException {
return new Gson().fromJson(json, clazz);
}
}
@patrickhammond
patrickhammond / gist:0b13ec35160af758d98c
Created March 8, 2015 02:30
Sample for how to use the Google Play Services dynamic security provider to keep the SSL library that the app will use to up date.
package com.mycompany.myapp.app;
import android.app.Application;
import android.content.Intent;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.security.ProviderInstaller;
import com.google.android.gms.security.ProviderInstaller.ProviderInstallListener;
public class MainApplication extends Application {
@patrickhammond
patrickhammond / recreate.sh
Last active August 29, 2015 14:16
Migrates a project from one package to another.
#!/bin/sh
rm -rf app
mkdir -p app/src/main/java/com/mycompany/myapp
echo "import com.mycompany.myapp.R;" > app/src/main/java/com/mycompany/myapp/Test.java
echo "com.mycompany.myapp.SomeActivity" > app/AndroidManifest.xml
@patrickhammond
patrickhammond / TextViewHelper.java
Created March 12, 2015 13:51
Helper class that makes setting up links easier.
import android.text.Selection;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.view.View.OnAttachStateChangeListener;
import android.widget.TextView;
@patrickhammond
patrickhammond / close_slide_enter.xml
Created March 25, 2015 16:31
Slide in and slide out animations.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="-100%"
android:toXDelta="0" />
</set>
@patrickhammond
patrickhammond / NoSSLv3Util.java
Last active August 29, 2015 14:18
Workaround to https://code.google.com/p/android/issues/detail?id=78187 where a connection from the upgraded Play Services SSL provider will be downgraded to use SSLv3 on older versions of Android and result in a connection failure if the server does not accept that protocol (and it shouldn't due to POODLE).
import android.os.Build;
import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
package com.androidfu.nowplaying.app.api;
import android.content.Context;
import com.androidfu.nowplaying.app.util.Log;
import com.androidfu.nowplaying.app.util.Preconditions;
import com.jakewharton.byteunits.DecimalByteUnit;
import com.squareup.okhttp.Cache;
import com.squareup.okhttp.OkHttpClient;