Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. package andriyadi.me.my1stthingslab
  2.  
  3. import android.app.Activity
  4. import android.content.Context
  5. import android.graphics.Bitmap
  6. import android.graphics.Canvas
  7. import android.graphics.Color
  8. import android.graphics.Paint
  9. import android.hardware.Sensor
  10. import android.hardware.SensorEvent
  11. import android.hardware.SensorEventListener
  12. import android.hardware.SensorManager
  13. import android.hardware.SensorManager.DynamicSensorCallback
  14. import android.os.Bundle
  15. import android.os.Handler
  16. import android.util.Log
  17. import com.google.android.things.contrib.driver.bmx280.Bmx280SensorDriver
  18. import com.google.android.things.contrib.driver.ssd1306.BitmapHelper
  19. import com.google.android.things.contrib.driver.ssd1306.Ssd1306
  20. import java.io.IOException
  21.  
  22. class SensorActivity : Activity() {
  23.  
  24. private val TAG = SensorActivity::class.java.simpleName
  25.  
  26. private var bmp280Driver: Bmx280SensorDriver? = null
  27. private lateinit var mSensorManager: SensorManager
  28.  
  29. private var mTemp: Float = 0.0f
  30. private var mPress: Float = 0.0f
  31.  
  32. override fun onCreate(savedInstanceState: Bundle?) {
  33. super.onCreate(savedInstanceState)
  34.  
  35. mSensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
  36.  
  37. val dynCb = object: DynamicSensorCallback() {
  38. override fun onDynamicSensorConnected(sensor: Sensor?) {
  39. super.onDynamicSensorConnected(sensor)
  40.  
  41. Log.i(TAG, "Registering ${sensor?.stringType}")
  42.  
  43. if (sensor?.type == Sensor.TYPE_AMBIENT_TEMPERATURE || sensor?.type == Sensor.TYPE_PRESSURE) {
  44. mSensorManager.registerListener(
  45. object: SensorEventListener {
  46. override fun onAccuracyChanged(theSensor: Sensor?, accuracy: Int) {
  47. Log.i(TAG, "Sensor accuracy changed: " + accuracy)
  48. }
  49.  
  50. override fun onSensorChanged(event: SensorEvent?) {
  51. if (event != null) {
  52. Log.i(TAG, "Sensor changed: ${event.sensor.stringType} = ${event.values[0]}")
  53.  
  54. if (event.sensor.type == Sensor.TYPE_AMBIENT_TEMPERATURE) {
  55. mTemp = event.values[0]
  56. } else if (event.sensor.type == Sensor.TYPE_PRESSURE) {
  57. mPress = event.values[0]
  58. }
  59.  
  60. mHandler.post(uiRunnable)
  61. }
  62. }
  63.  
  64. }, sensor, SensorManager.SENSOR_DELAY_NORMAL)
  65. }
  66. }
  67. }
  68.  
  69. mSensorManager.registerDynamicSensorCallback(dynCb)
  70.  
  71. //Then register BMP280
  72. try {
  73. bmp280Driver = Bmx280SensorDriver(BoardDefaults.i2cBus, 0x76)
  74. bmp280Driver?.registerTemperatureSensor()
  75. bmp280Driver?.registerPressureSensor()
  76. }
  77. catch (e: Exception) {
  78. Log.e(TAG, "Error registering BMP280")
  79. }
  80.  
  81. initScreen()
  82. }
  83.  
  84. //UI-related code
  85.  
  86. private val SCREEN_HEIGHT = 96
  87. private val SCREEN_WIDTH = 128
  88. private var mScreen: Ssd1306? = null
  89.  
  90. private val mHandler = Handler()
  91.  
  92. private fun initScreen() {
  93. try {
  94. mScreen = Ssd1306(BoardDefaults.i2cBus)
  95. } catch (e: IOException) {
  96. Log.e(TAG, "Error configuring screen", e)
  97. }
  98. }
  99.  
  100. private val uiRunnable = Runnable {
  101. if (mScreen == null) {
  102. return@Runnable
  103. }
  104.  
  105. mScreen?.clearPixels()
  106.  
  107. val text1 = "T: %.2f °C".format(mTemp)
  108. val text2 = "P: %.2f Pa".format(mPress)
  109.  
  110. //val paint = Paint(Paint.ANTI_ALIAS_FLAG)
  111. val paint = Paint()
  112. paint.textSize = 22f
  113. paint.color = Color.WHITE
  114. paint.textAlign = Paint.Align.LEFT
  115.  
  116. val textAsBitmap = Bitmap.createBitmap(SCREEN_WIDTH, SCREEN_HEIGHT, Bitmap.Config.ARGB_8888)
  117. val canvas = Canvas(textAsBitmap)
  118. canvas.drawText(text1, 0.0f, 0.0f + (24.0f), paint)
  119.  
  120. canvas.translate(0.0f, 50.0f)
  121.  
  122. canvas.drawText(text2, 0.0f, 0.0f, paint)
  123.  
  124. BitmapHelper.setBmpData(mScreen, 0, 0, textAsBitmap, true)
  125.  
  126. mScreen?.show()
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement