Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.67 KB | None | 0 0
  1. package dk.riisby.bluetoothcontroller
  2.  
  3. import android.app.ProgressDialog
  4. import android.bluetooth.BluetoothAdapter
  5. import android.bluetooth.BluetoothDevice
  6. import android.bluetooth.BluetoothSocket
  7. import android.content.Context
  8. import android.os.AsyncTask
  9. import android.support.v7.app.AppCompatActivity
  10. import android.os.Bundle
  11. import android.support.annotation.WorkerThread
  12. import android.util.Log
  13. import android.view.View
  14. import android.widget.SeekBar
  15. import io.github.controlwear.virtual.joystick.android.JoystickView
  16. import kotlinx.android.synthetic.main.activity_control.*
  17. import org.jetbrains.anko.toast
  18. import java.io.IOException
  19. import java.util.*
  20. import java.util.concurrent.Callable
  21. import java.util.concurrent.locks.Condition
  22. import kotlin.concurrent.schedule
  23. import kotlin.concurrent.scheduleAtFixedRate
  24. import kotlin.math.PI
  25. import kotlin.math.cos
  26. import kotlin.math.roundToInt
  27. import kotlin.math.sin
  28.  
  29. class ControlActivity : AppCompatActivity() {
  30. val s1 = Sender(128,128,128)
  31. companion object {
  32. var m_myUUID: UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")
  33. var m_bluetoothSocket: BluetoothSocket? = null
  34. lateinit var m_progress: ProgressDialog
  35. lateinit var m_bluetoothAdapter: BluetoothAdapter
  36. var m_isConnected: Boolean =false
  37. lateinit var m_address: String
  38. const val TAG: String = "con_debug"
  39. var result: Double = 0.toDouble()
  40. var result2: Double = 0.toDouble()
  41. val timer = Timer("schedule", true)
  42. }
  43.  
  44. override fun onCreate(savedInstanceState: Bundle?) {
  45. super.onCreate(savedInstanceState)
  46. setContentView(R.layout.activity_control)
  47. m_address = intent.getStringExtra(SelectDeviceList.EXTRA_ADDRESS)
  48. ConnectToDevice(this).execute()
  49. listen()
  50. timer.schedule(10000){
  51. s1.start()
  52. }
  53. timer.scheduleAtFixedRate(10100 , 100) {
  54. s1.run()
  55. }
  56. }
  57.  
  58. private fun disconnect () {
  59. if (m_bluetoothSocket != null){
  60. try {
  61. m_bluetoothSocket!!.close()
  62. m_bluetoothSocket= null
  63. m_isConnected = false
  64. } catch (e: IOException){
  65. e.printStackTrace()
  66. }
  67.  
  68. }
  69. finish()
  70. }
  71.  
  72. private inner class ConnectToDevice(c: Context) : AsyncTask<Void, Void, String>(){
  73. private var connectSuccess: Boolean = true
  74. private val context: Context
  75.  
  76. init {
  77. this.context = c
  78. }
  79. override fun onPreExecute() {
  80. super.onPreExecute()
  81. m_progress = ProgressDialog.show(context, "Connecting...", "please wait")
  82. }
  83.  
  84. override fun doInBackground(vararg p0: Void?): String? {
  85. try {
  86. if (m_bluetoothSocket == null || !m_isConnected){
  87. m_bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
  88. val device: BluetoothDevice = m_bluetoothAdapter.getRemoteDevice(m_address)
  89. m_bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(m_myUUID)
  90. BluetoothAdapter.getDefaultAdapter().cancelDiscovery()
  91. m_bluetoothSocket!!.connect()
  92. Log.i(TAG,"success")
  93. }
  94. }catch (e: IOException){
  95. connectSuccess = false
  96. e.printStackTrace()
  97. Log.i(TAG,"not so much")
  98. }
  99. return null
  100. }
  101.  
  102. override fun onPostExecute(result: String?) {
  103. super.onPostExecute(result)
  104. if(!connectSuccess){
  105. Log.i(TAG,"couldn't connect")
  106. } else{
  107. m_isConnected = true
  108. }
  109. m_progress.dismiss()
  110. }
  111. }
  112.  
  113. private fun listen(){
  114. control_led_disconnect.setOnClickListener{disconnect()}
  115. seekBar.setOnSeekBarChangeListener(object: SeekBar.OnSeekBarChangeListener{
  116.  
  117. override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
  118. s1.clawddata(progress)
  119. }
  120.  
  121. override fun onStartTrackingTouch(seekBar: SeekBar?) {
  122. }
  123.  
  124. override fun onStopTrackingTouch(seekBar: SeekBar?) {
  125. seekBar!!.progress = 50
  126. }
  127. })
  128.  
  129. joystickView.setOnMoveListener { direction, strength ->
  130. result = 128 + (strength * sin(direction.toDouble() * PI / 180))
  131.  
  132. result2 = if(result>128){
  133. 128 - (strength * cos(direction.toDouble() * PI / 180))/1.5
  134. }else{
  135. 128 + (strength * cos(direction.toDouble() * PI / 180))/1.5
  136. }
  137. s1.movementdata(result, result2)
  138. }
  139. }
  140.  
  141. inner class Sender(var power:Int?,var direction: Int?,var claw:Int?) :Thread(){
  142.  
  143. init {
  144. power= 128
  145. direction=128
  146. time=50
  147. }
  148.  
  149. override fun run() {
  150. super.run()
  151. sendCommand(power.toString()+","+ direction.toString()+","+claw.toString()+"A")
  152. }
  153.  
  154. fun power_dir(x:Double,y:Double){
  155. power = x.toInt();direction = y.toInt()
  156. }
  157.  
  158. public fun time(x:Int){
  159. time = x
  160. }
  161. private fun sendCommand(input: String) {
  162. if (m_bluetoothSocket != null) {
  163. try {
  164. m_bluetoothSocket!!.outputStream.write(input.toByteArray())
  165. Log.i(TAG, input)
  166. } catch (e: IOException) {
  167. e.printStackTrace()
  168. }
  169. }
  170. }
  171. }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement