Skip to content

Instantly share code, notes, and snippets.

View paramsen's full-sized avatar
🏠
Working from home

Pär Nils Amsen paramsen

🏠
Working from home
View GitHub Profile
@paramsen
paramsen / build.groovy
Last active January 17, 2024 08:17
Generate Android version code from git count in Gradle (build.gradle)
// Generate a minor version code from git commit count (for prod builds)
static def generateVersionCode() {
def result = "git rev-list HEAD --count".execute().text.trim() //unix
if(result.empty) result = "PowerShell -Command git rev-list HEAD --count".execute().text.trim() //windows
if(result.empty) throw new RuntimeException("Could not generate versioncode on this platform? Cmd output: ${result.text}")
return result.toInteger()
}
def majorVersion = 1
@paramsen
paramsen / LogView.java
Last active November 11, 2020 22:14
Android View for printing private logs in realtime, supports lifecycle methods (start->stop)
import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;
import android.support.annotation.LayoutRes;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ScrollView;
import android.widget.TextView;
@paramsen
paramsen / ExoPlayerFromAssets.kt
Created August 28, 2020 11:49
ExoPlayer play file from assets (in this case audio, repeat for eternity)
val assetFactory = DataSource.Factory { AssetDataSource(context) }
val source = ProgressiveMediaSource.Factory(assetFactory).createMediaSource(Uri.parse("assets:///alarm_sound_1.mp3"))
val exo = SimpleExoPlayer.Builder(context).build().apply {
repeatMode = Player.REPEAT_MODE_ALL
volume = 1f
audioAttributes = AudioAttributes.Builder().setContentType(C.CONTENT_TYPE_MUSIC).build()
prepare(source)
playWhenReady = true
}
@paramsen
paramsen / SlackBotToBitrise.js
Created April 29, 2019 12:05
Slack bot who triggers Bitrise, using Google Cloud Function as a messenger
const rp = require('request-promise-native')
const slackToken = '<SLACK TOKEN>'
const bitriseToken = '<BITRISE API TOKEN>'
const baseBitriseData = {
hook_info: {
type: 'bitrise',
build_trigger_token: bitriseToken
},
@paramsen
paramsen / raw_pcm_float32_average.py
Last active June 11, 2018 10:48
Script that reads a file with raw pcm data in little endian float32 and prints the mean.
import sys
import numpy
import struct
f = sys.argv[1]
avg = lambda f: numpy.mean(numpy.absolute(numpy.fromfile(f, '<f4')), dtype=numpy.float64)
print('average of %s: %.16f' % (f, avg(f)))
@paramsen
paramsen / basic_upload_apks_service_account.py
Last active April 5, 2018 08:00 — forked from machinekoder/Google Play Api - Apk Upload.md
This python script uploads an apk file into Google Play Store using Android Play Publisher API
#!/usr/bin/env python
#
# Copyright 2014 Marta Rodriguez.
#
# Licensed under the Apache License, Version 2.0 (the 'License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
@paramsen
paramsen / OkHttpFileDownloader.java
Last active February 13, 2018 22:20
Rx/OkHttp Android file downloader
import java.io.File;
import io.reactivex.Single;
import io.reactivex.schedulers.Schedulers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okio.BufferedSink;
import okio.BufferedSource;
import okio.Okio;
@paramsen
paramsen / batch-convert-dpi.kts
Last active January 15, 2018 12:06
[Android util] [kotlin script] Batch convert Android res from xxxhdpi to *dpi sizes using imagemagick
/**
* Batch conversion from one dpi to the others using imagemagick
* (got some Windows and personal machine hardcoded stuff, change that)
*
* Usage: kotlinc -script batch-convert-dpi.kts <output dir> <paths to input files (pngs)>
*/
import java.io.File
import jdk.nashorn.internal.runtime.ScriptingFunctions.readLine
import java.io.BufferedReader
@paramsen
paramsen / ConcurrentRequestSource.java
Last active January 11, 2018 12:17
Concurrent queue workers (download stuff synchronized in parallel)
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import java.util.concurrent.atomic.AtomicBoolean;
// MIT License
//
// Copyright(c) 2017 Pär Amsen
//
@paramsen
paramsen / Vector2Png.kt
Created January 9, 2018 15:00
Batch convert <vector> to png for mdpi..xxxhdpi using Canvas api
/**
* Run convertVectorsToPngs() test, get the pngs from the device by "adb pull <the path>" and paste the res folders
* into your android project.
*
* @author Pär Amsen 01/2018
*/
@RunWith(AndroidJUnit4::class)
class Vector2Png {
lateinit var context: Context
lateinit var baseDir: File