Skip to content

Instantly share code, notes, and snippets.

class MainActivity : AppCompatActivity() {
val TAG = MainActivity::class.java.simpleName
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val handler = Handler(Looper.getMainLooper())
Log.d(TAG, "Before post delayed:${System.currentTimeMillis()}")
handler.postDelayed(
{
val source = ImageDecoder.createSource(assets, "image.jpg")
val listener = ImageDecoder.OnHeaderDecodedListener { decoder, info, src ->
decoder.setPostProcessor { canvas ->
// This will create rounded corners.
val path = Path()
path.fillType = Path.FillType.INVERSE_EVEN_ODD
val width = canvas.width
val height = canvas.height
path.addRoundRect(0f, 0f, width.toFloat(), height.toFloat(), width / 2.toFloat(), height / 2.toFloat(), Path.Direction.CW)
val paint = Paint()
val listener = ImageDecoder.OnHeaderDecodedListener { decoder, imageinfo, source ->
decoder.setTargetSize(100, 100)
//you can use setTargetSampleSize(2) to create a image with half of original height and width
}
val drawable = ImageDecoder.decodeDrawable(source, listener);
@BALUSANGEM
BALUSANGEM / HelloARActivity_modifiedforVideo.java
Last active June 14, 2018 13:37
Using this activity and ViewRenderer.java you can play video in ARCore scene
public class HelloArActivity extends AppCompatActivity implements GLSurfaceView.Renderer {
private static final String TAG = HelloArActivity.class.getSimpleName();
// Rendering. The Renderers are created here, and initialized when the GL surface is created.
private GLSurfaceView surfaceView;
private boolean installRequested;
private final VideoRenderer videoRenderer = new VideoRenderer();
@BALUSANGEM
BALUSANGEM / ViewRenderer.java
Created June 14, 2018 12:36
This class renders video in ARCore, So you can use this gist to play Videos inside ARCore Scene
public class VideoRenderer implements SurfaceTexture.OnFrameAvailableListener {
private SurfaceTexture videoTexture;
private int mTextureId;
private static final int TEXCOORDS_PER_VERTEX = 2;
private static final int COORDS_PER_VERTEX = 3;
private String TAG = VideoRenderer.class.getSimpleName();
private int mQuadProgram;
private final Object lock = new Object();
public void draw(float[] cameraView, float[] cameraPerspective) {
if (done || !prepared) {
return;
}
synchronized (this) {
if (frameAvailable) {
videoTexture.updateTexImage();
frameAvailable = false;
if (videoTexture != null) {
public void update(float[] modelMatrix) {
float[] scaleMatrix = new float[16];
Matrix.setIdentityM(scaleMatrix, 0);
float SCALE_FACTOR = 1f;
scaleMatrix[0] = SCALE_FACTOR;
scaleMatrix[5] = SCALE_FACTOR;
scaleMatrix[10] = SCALE_FACTOR;
Matrix.multiplyMM(this.mModelMatrix, 0, modelMatrix, 0, scaleMatrix, 0);
}
public void createOnGlThread() {
// 1 texture to hold the video frame.
int textures[] = new int[1];
GLES20.glGenTextures(1, textures, 0);
mTextureId = textures[0];
int mTextureTarget = GLES11Ext.GL_TEXTURE_EXTERNAL_OES;
GLES20.glBindTexture(mTextureTarget, mTextureId);
GLES20.glTexParameteri(mTextureTarget, GLES20.GL_TEXTURE_MIN_FILTER,
class LoginActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
goto_main_screen_button.setOnClickListener {
gotoMainScreen()
}
}
private fun gotoMainScreen() {
@BALUSANGEM
BALUSANGEM / BLE
Last active February 6, 2018 09:16
open class BaseGhattCallback : BluetoothGattCallback() {
var mIsDeviceConnected = false
internal var mCommandCharacteristic: BluetoothGattCharacteristic? = null
open val TAG = BaseGhattCallback::class.java.simpleName
private val SUBSCRIBE_CHARACTERISTIC: Int = 0
private val READ_CHARACTERISTIC: Int = 1
private val WRITE_CHARACTERISTIC: Int = 2
fun queueReadDataFromCharacteristic(gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic) {