Skip to content

Instantly share code, notes, and snippets.

View mikepyts's full-sized avatar
🎯
Focusing

Mike Pyts mikepyts

🎯
Focusing
  • Vancouver, Canada
View GitHub Profile
@mikepyts
mikepyts / Blinking LED with handler.kt
Last active November 4, 2018 23:17
Gist which demonstrate how to make blinking LED with peripheral manager and handler (Kotlin, Android Things)
package <package_name>
import android.app.Activity
import android.os.Bundle
import android.os.Handler
import android.util.Log
import com.google.android.things.pio.Gpio
import com.google.android.things.pio.PeripheralManager
import java.io.IOException
@mikepyts
mikepyts / Button events with peripheral manager.kt
Last active November 4, 2018 23:16
Gist which shows how to handle button events with callback method and peripheral manager (Kotlin, Android Things)
package <package_name>
import android.app.Activity
import android.os.Bundle
import android.util.Log
import com.google.android.things.pio.Gpio
import com.google.android.things.pio.GpioCallback
import com.google.android.things.pio.PeripheralManager
import java.io.IOException
@mikepyts
mikepyts / Button events with user-space driver.kt
Last active November 4, 2018 23:39
This gist demonstrate how to use user-space input driver to handle button event (Kotlin, Android Things)
package <package_name>
import android.app.Activity
import android.os.Bundle
import android.util.Log
import android.view.KeyEvent
import com.google.android.things.contrib.driver.button.Button
import com.google.android.things.contrib.driver.button.ButtonInputDriver
class InputDriver : Activity() {
@mikepyts
mikepyts / RGB LED.kt with button and event listener.kt
Last active November 4, 2018 23:24
Simply shows how to connect RGB LED to the button (Kotlin, Android Things)
package <package_name>
import android.app.Activity
import android.os.Bundle
import android.util.Log
import com.google.android.things.contrib.driver.button.Button
import com.google.android.things.pio.Gpio
import com.google.android.things.pio.PeripheralManager
import java.io.IOException
@mikepyts
mikepyts / Button events with user-space driver.kt
Last active November 4, 2018 23:27
Example how to use user-space driver for button events (Kotlin, Android Things)
package <package_name>
import android.app.Activity
import android.os.Bundle
import android.util.Log
import com.google.android.things.contrib.driver.button.Button
import java.io.IOException
class UserDriver : Activity() {
// Variables
@mikepyts
mikepyts / GoogleApi.kt
Created April 13, 2019 13:29
Authentificate and authorize to Google APIs
// Access scopes
private val accessScope = listOf("https://www.googleapis.com/auth/cloud-platform.read-only")
private var token = "Empty"
// Receive Google OAuth 2 token for API access
private fun authenticateAndAuthorize() {
doAsync {
val googleCredential = GoogleCredential
.fromStream(ctx.assets.open("service-account.json"))
.createScoped(accessScope)
@mikepyts
mikepyts / RetrofitSetUp.kt
Created April 13, 2019 18:00
Shows set up of Retrofit interface
// Retrofit interface
interface GCPService {
@GET("/bigquery/v2/projects/weather-231121/datasets/WeatherDataSet/tables/WeatherDataTable/data")
fun getTable(@Header("Authorization") token: String, @Query("startIndex") startIndex: Int): Call<JsonObject>
}
// Retrofit builder
private val retrofitBuilder = Retrofit.Builder()
.baseUrl("https://content.googleapis.com")
.addConverterFactory(GsonConverterFactory.create())
// Get table
fun pullData() {
when (token) {
"Empty" -> {
authenticateAndAuthorize()
}
else -> {
doAsync {
val apiCall = gcpService.getTable("Bearer $token", 15).execute()
Log.d("JSON", apiCall.body().toString())
// Data classes for JSON deserialization
data class JsonTable(@SerializedName("rows") val rows: List<Row>) {
data class Row(@SerializedName("f") val f: List<F>) {
data class F(@SerializedName("v") val v: String)
}
}
// Data holders
val temperatureData = mutableListOf<Float>()
val pressureData = mutableListOf<Float>()
val timeData = mutableListOf<Float>()
// Convert data from BigQuery JsonTable to data arrays
fun processData(tableData: JsonTable) {
tableData.rows.forEach {
it.f.forEachIndexed { index, element ->
when (index) {