Advertisement
Guest User

Untitled

a guest
Oct 17th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 KB | None | 0 0
  1. package edu.ualr.jlgraham2.magic8ball
  2.  
  3. import android.content.Context
  4. import android.hardware.Sensor
  5. import android.hardware.SensorEvent
  6. import android.hardware.SensorEventListener
  7. import android.hardware.SensorManager
  8. import android.support.v7.app.AppCompatActivity
  9. import android.os.Bundle
  10. import android.widget.TextView
  11. import java.util.Random
  12. import kotlin.math.abs
  13. import kotlinx.android.synthetic.main.activity_main.*
  14. import android.os.PersistableBundle
  15.  
  16. class MainActivity : AppCompatActivity(), SensorEventListener {
  17.  
  18. // Sets up a Sensor and SensorManager
  19.  
  20. var mySensorManager: SensorManager? = null
  21. var myAccelerometer: Sensor? = null
  22.  
  23.  
  24. //declare the initial values for the sensors
  25.  
  26. var lastX = 0.0f
  27. var lastY = 0.0f
  28. var lastZ = 0.0f
  29. var lastTime = System.currentTimeMillis()
  30.  
  31.  
  32.  
  33. override fun onCreate(savedInstanceState: Bundle?) {
  34. super.onCreate(savedInstanceState)
  35. setContentView(R.layout.activity_main)
  36.  
  37. // Initializes Sensor and Sensor Manager
  38.  
  39. mySensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
  40. myAccelerometer = mySensorManager!!.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
  41.  
  42. }
  43.  
  44.  
  45. override fun onResume() {
  46. super.onResume()
  47.  
  48. // Allows SensorManager to begin receiving readings
  49.  
  50. mySensorManager!!.registerListener(this, myAccelerometer, SensorManager.SENSOR_DELAY_UI)
  51.  
  52. }
  53.  
  54.  
  55. override fun onPause() {
  56. super.onPause()
  57.  
  58. // This function call suspends the accelerometer to save battery life
  59.  
  60. mySensorManager!!.unregisterListener(this)
  61. }
  62.  
  63.  
  64. override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
  65.  
  66. // Implemented because SensorEventListener is an abstract class
  67.  
  68. }
  69.  
  70.  
  71. override fun onSensorChanged(event: SensorEvent?) {
  72.  
  73. // Initializes the message that will be output to the text view
  74.  
  75. val randomMessage : TextView =
  76. findViewById(R.id.randomMessage)
  77.  
  78. // Creates a randomizer that gives us a randomly generated number between two values
  79.  
  80. val random = Random()
  81.  
  82. fun randomizer(min: Int, max: Int): Int {
  83. return random.nextInt(max - min) + min
  84. }
  85.  
  86.  
  87. // Assigns the values grabbed by getResult to a message that is passed to randomMessage
  88.  
  89. var currentTime = System.currentTimeMillis()
  90.  
  91. if(currentTime - lastTime > 500) {
  92. val x = event!!.values[0]
  93. val y = event!!.values[1]
  94. val z = event!!.values[2]
  95. val changeInPosition = abs(x + y + z - lastX - lastY - lastZ)
  96. val changeInTime = currentTime - lastTime
  97. val speed = changeInPosition / changeInTime
  98.  
  99. if(speed > 12){
  100.  
  101. // getResult calls the randomizer function, passing 1 to min and 10 to max
  102.  
  103. val getResult = randomizer(1, 10)
  104.  
  105. when (getResult)
  106. {
  107. 1 -> randomMessage.text = "I don't think so."
  108. 2 -> randomMessage.text = "Reply hazy, try again."
  109. 3 -> randomMessage.text = "Very doubtful."
  110. 4 -> randomMessage.text = "Better not tell you now."
  111. 5 -> randomMessage.text = "Don't count on it."
  112. 6 -> randomMessage.text = "Definitely not."
  113. 7 -> randomMessage.text = "Outlook not so good."
  114. 8 -> randomMessage.text = "My sources say no."
  115. 9 -> randomMessage.text = "Extremely unlikely."
  116. 10 -> randomMessage.text = "Concentrate and ask again."
  117. }
  118. }
  119.  
  120. lastX = x
  121. lastY = y
  122. lastZ = z
  123.  
  124. lastTime = currentTime
  125.  
  126. }
  127.  
  128. }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement