Skip to content

Instantly share code, notes, and snippets.

View niusounds's full-sized avatar
🤘

Yuya Matsuo niusounds

🤘
View GitHub Profile
@niusounds
niusounds / OrientationLiveData.kt
Created June 29, 2018 03:08
Device orientation sensor data for LiveData.
import android.arch.lifecycle.LiveData
import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
data class Orientation(
val azimuth: Float,
val pitch: Float,
@niusounds
niusounds / LocationLiveData.kt
Created June 29, 2018 03:06
Location wrapper for LiveData
import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.arch.lifecycle.LiveData
import android.content.Context
import android.content.pm.PackageManager
import android.location.Location
import android.os.Looper
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
@niusounds
niusounds / 1 IPlayer.kt
Created December 6, 2017 07:06
Player interface abstracts MediaPlayer and ExoPlayer.
import android.content.Context
import android.graphics.SurfaceTexture
import android.net.Uri
import android.view.Surface
interface IPlayer {
/**
* コンテンツの全体時間を取得する。単位はミリ秒。
*/
@niusounds
niusounds / RingBuffer.kt
Last active April 20, 2022 22:53
RingBuffer in Kotlin
class RingBuffer(val capacity: Int) {
private val storage = ByteArray(capacity)
/**
* Convenient version of [read].
* This method allocates new array every time. Do not use this in heavy loop.
*
* @param startPosition Start position. Can be over than capacity.
* @param size Result data size.
@niusounds
niusounds / AudioInputStream.kt
Last active March 31, 2024 17:22
AudioInputStream and AudioOutputStream for Android. These wrap AudioRecord and AudioTrack.
import android.media.AudioFormat
import android.media.AudioRecord
import android.media.MediaRecorder
import java.io.IOException
import java.io.InputStream
class AudioInputStream(
audioSource: Int = MediaRecorder.AudioSource.DEFAULT,
sampleRate: Int = 44100,
channelConfig: Int = AudioFormat.CHANNEL_IN_MONO,
@niusounds
niusounds / GvrArmModel.java
Last active August 7, 2017 05:08
Google VR Arm model in Java. It requires JOML.
import org.joml.Quaternionf;
import org.joml.Vector3f;
/**
* Arm model from https://github.com/EpicGames/UnrealEngine/tree/release/Engine/Plugins/Runtime/GoogleVR/GoogleVRController/Source/GoogleVRController/Private/ArmModel
*/
public class GvrArmModel {
private static final Vector3f FORWARD = new Vector3f(0.0f, 0.0f, -1.0f);
private static final Vector3f UP = new Vector3f(0.0f, 1.0f, 0.0f);
@niusounds
niusounds / MainActivity.java
Last active March 9, 2017 11:12
Minimum ExoPlayer video playing
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.view.SurfaceView;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.ExoPlayerFactory;
@niusounds
niusounds / MainActivity.java
Created December 26, 2016 05:04
Using Rajawali (and AndroidAnnotations) to play 360 video.
import android.app.Activity;
import android.media.MediaPlayer;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Bean;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.ViewById;
import org.rajawali3d.view.SurfaceView;
import java.io.IOException;
@niusounds
niusounds / angular-js-tree.js
Created December 16, 2016 09:02
Use jsTree as a component for Angular 1.
angular.module('jsTree', [])
.component('jsTree', {
template: '<div id="js-tree"></div>',
bindings: {
core: '<',
pluginsConf: '<',
plugins: '<',
onInit: '&',
onLoading: '&',
onLoaded: '&',
@niusounds
niusounds / BufferedData.java
Last active July 20, 2016 09:38
細切れの配列データを少しずつ書き込み、バッファがいっぱいになったときに通知を受けるクラス。
public class BufferedData {
public interface OnBufferFilledListener {
void onBufferFilled(float[] buffer);
}
private final float[][] buffers;
private int currentBufferIndex;
private int indexInCurrentBuffer;
private OnBufferFilledListener listener;