Skip to content

Instantly share code, notes, and snippets.

View vovkab's full-sized avatar

Vladimir Baryshnikov vovkab

  • if(we)
  • San Francisco
View GitHub Profile
@vovkab
vovkab / gist:d9f76e3429cdf20a4e0c
Created January 13, 2016 18:05 — forked from ohmrefresh/gist:55149f68c41a148ae673
How to Server-side verification of Google Play subscriptions
1.create google app (google console)
Example:
Client ID xxx.apps.googleusercontent.com
Email address xxx@developer.gserviceaccount.com
Client secret xxx
Redirect URIs
https://localhost/oauth2callback
Javascript Origins
https://localhost
private String decodeBody(Response response) throws IOException {
final ResponseBody body = response.body();
if (body == null) return null;
if (isZipped(response)) {
return unzip(response.body());
} else {
return body.string();
}
}
@vovkab
vovkab / android_device_configuration
Last active February 2, 2020 11:58
Android device configurations
Google devices info:
https://design.google.com/devices/
===================== PHONES ======================
Nexus S:
{1.0 0mcc0mnc en_US sw320dp w320dp h460dp nrml port finger qwerty/v/v dpad/v s.4}
Nexus 4: xhdpi
{1.0 310mcc?mnc en_US ldltr sw384dp w384dp h567dp 320dpi nrml port finger -keyb/v/h -nav/h s.5}
@vovkab
vovkab / ExperimentDagger.java
Last active April 14, 2019 22:37
Example of using Dagger 2 in libraries
package com.example;
import java.lang.annotation.Retention;
import javax.inject.Inject;
import javax.inject.Scope;
import javax.inject.Singleton;
import dagger.Binds;
import dagger.BindsInstance;
gradlew :app:dependencyInsight --configuration testCompile --dependency kotlin-reflect
gradlew :tapp:dependencyInsight --configuration appDebugCompileClasspath --dependency okhttp
Resolve all dependencies. Force gradle to precache dependencies for all configurations:
```
allprojects {
task resolveAllDependencies {
doLast {
configurations.all { it.resolve() }
}
@vovkab
vovkab / MainThreadWatchDog.java
Created March 8, 2018 05:10
Monitors main thread for timeouts.
package io.wondrous.sns.utils;
import android.os.Handler;
import android.os.Looper;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
public class MainThreadWatchDog {
public static final long MAIN_THREAD_PING_INTERVAL = 200;
@vovkab
vovkab / genymotion_wmctrl
Last active November 27, 2017 05:54
Change size of Genymotion emulator
To make emulator looks crystal clear, easiest way - change window size to be exact size.
On linux there is command:
wmctrl -r "win" -e G,X,Y,W,H
G - gravity
X,Y - window coords
W - width
H - height
For 1280x800 window, command will be:
@vovkab
vovkab / repo
Created November 3, 2017 07:26
gerrit repo
Show traces:
$ repo --trace <command>
Upload for review with topic set to current branch name:
$ repo upload -t
or
review.URL.uploadtopic = true
Issues
@vovkab
vovkab / android-memory-class
Last active June 12, 2017 09:46
Android device memory class
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
int memoryClass = manager.getMemoryClass();
48 - Samsung Nexus S
64 - Samsung Galaxy Nexus
Samsung S2
Samsung S3
128 - Samsung S4
@vovkab
vovkab / android-recycler-merge-adapter-tools
Last active February 25, 2017 00:59
Tools for RecyclerMergeAdapter
/**
* Calculates correct item position based on RecyclerAdapter and ViewHolder adapter position.
* Takes in consideration RecyclerMergeAdapter and adjust position accordingly
*
* @param adapter RecyclerAdapter with access to RecyclerView instance
* @param viewHolder ViewHolder that was created by @adapter
* @return adjusted local position for viewHolder
*/
public static int getLocalPosition(RecyclerAdapter adapter, RecyclerView.ViewHolder viewHolder) {
int position = viewHolder.getAdapterPosition();