Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package edu.ualr.jlgraham2.magic8ball
- import android.content.Context
- import android.hardware.Sensor
- import android.hardware.SensorEvent
- import android.hardware.SensorEventListener
- import android.hardware.SensorManager
- import android.support.v7.app.AppCompatActivity
- import android.os.Bundle
- import android.widget.TextView
- import java.util.Random
- import kotlin.math.abs
- import kotlinx.android.synthetic.main.activity_main.*
- import android.os.PersistableBundle
- class MainActivity : AppCompatActivity(), SensorEventListener {
- // Sets up a Sensor and SensorManager
- var mySensorManager: SensorManager? = null
- var myAccelerometer: Sensor? = null
- //declare the initial values for the sensors
- var lastX = 0.0f
- var lastY = 0.0f
- var lastZ = 0.0f
- var lastTime = System.currentTimeMillis()
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- // Initializes Sensor and Sensor Manager
- mySensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
- myAccelerometer = mySensorManager!!.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
- }
- override fun onResume() {
- super.onResume()
- // Allows SensorManager to begin receiving readings
- mySensorManager!!.registerListener(this, myAccelerometer, SensorManager.SENSOR_DELAY_UI)
- }
- override fun onPause() {
- super.onPause()
- // This function call suspends the accelerometer to save battery life
- mySensorManager!!.unregisterListener(this)
- }
- override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
- // Implemented because SensorEventListener is an abstract class
- }
- override fun onSensorChanged(event: SensorEvent?) {
- // Initializes the message that will be output to the text view
- val randomMessage : TextView =
- findViewById(R.id.randomMessage)
- // Creates a randomizer that gives us a randomly generated number between two values
- val random = Random()
- fun randomizer(min: Int, max: Int): Int {
- return random.nextInt(max - min) + min
- }
- // Assigns the values grabbed by getResult to a message that is passed to randomMessage
- var currentTime = System.currentTimeMillis()
- if(currentTime - lastTime > 500) {
- val x = event!!.values[0]
- val y = event!!.values[1]
- val z = event!!.values[2]
- val changeInPosition = abs(x + y + z - lastX - lastY - lastZ)
- val changeInTime = currentTime - lastTime
- val speed = changeInPosition / changeInTime
- if(speed > 12){
- // getResult calls the randomizer function, passing 1 to min and 10 to max
- val getResult = randomizer(1, 10)
- when (getResult)
- {
- 1 -> randomMessage.text = "I don't think so."
- 2 -> randomMessage.text = "Reply hazy, try again."
- 3 -> randomMessage.text = "Very doubtful."
- 4 -> randomMessage.text = "Better not tell you now."
- 5 -> randomMessage.text = "Don't count on it."
- 6 -> randomMessage.text = "Definitely not."
- 7 -> randomMessage.text = "Outlook not so good."
- 8 -> randomMessage.text = "My sources say no."
- 9 -> randomMessage.text = "Extremely unlikely."
- 10 -> randomMessage.text = "Concentrate and ask again."
- }
- }
- lastX = x
- lastY = y
- lastZ = z
- lastTime = currentTime
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement