Skip to content

Commit

Permalink
Listing bluetooth devices
Browse files Browse the repository at this point in the history
  • Loading branch information
tainfante committed Aug 10, 2019
1 parent 567034a commit e3750d8
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 5 deletions.
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.rehabapp">


<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

<application
android:allowBackup="true"
Expand Down
14 changes: 14 additions & 0 deletions app/src/main/java/com/example/rehabapp/ComFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ import android.view.ViewGroup
import android.widget.Button
import androidx.fragment.app.Fragment
import android.app.Activity
import android.bluetooth.BluetoothDevice
import android.widget.ArrayAdapter
import android.widget.Spinner

class ComFragment : Fragment() {

Expand All @@ -17,9 +20,20 @@ class ComFragment : Fragment() {
): View {
val view : View=inflater.inflate(R.layout.com_layout, container, false)


val selectDeviceSpinner: Spinner = view.findViewById(R.id.spinner)
val startButton:Button=view.findViewById(R.id.startButton)
val stopButton:Button=view.findViewById(R.id.stopButton)

val devicesList: ArrayList<BluetoothDevice> = (activity as MainActivity).pairedDeviceList()
val devicesNamesList: ArrayList<String> = ArrayList()
for(device:BluetoothDevice in devicesList){
devicesNamesList.add(device.name)
}
val adapter=ArrayAdapter((activity as MainActivity).applicationContext,android.R.layout.simple_spinner_item, devicesNamesList)
adapter.setNotifyOnChange(true)
selectDeviceSpinner.adapter=adapter

startButton.setOnClickListener(View.OnClickListener {
(activity as MainActivity).startChronometer()
})
Expand Down
55 changes: 55 additions & 0 deletions app/src/main/java/com/example/rehabapp/DatabaseHelper.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.example.rehabapp

import android.content.ContentValues
import android.content.Context
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.os.Build
import android.widget.Toast
import androidx.annotation.RequiresApi

val EMG_DATABASE_NAME = "emgDatabase.db"
val EMG_TABLE_NAME = "emg_data"
val EMGCOL1 = "ID"
val EMGCOL2 = "VALUE_RAW"
val EMGCOL3 = "VALUE_FILTRED"


@RequiresApi(Build.VERSION_CODES.P)
class DatabaseHelper(private val context: Context) :
SQLiteOpenHelper(context, EMG_DATABASE_NAME, null, 1) {



override fun onCreate(p0: SQLiteDatabase?) {

val createTable="CREATE TABLE " + EMG_TABLE_NAME + " (" + EMGCOL1 + " INTEGER PRIMARY KEY AUTOINCREMENT," + EMGCOL2 + " INTEGER," + EMGCOL3 + " INTEGER)"
p0?.execSQL(createTable)
}


override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) {

}

fun insertData(emgRaw: Int, emgFiltred: Int){
val db = this.writableDatabase
var cv = ContentValues()
cv.put(EMGCOL2, emgRaw)
cv.put(EMGCOL3, emgFiltred)
var result = db.insert(EMG_TABLE_NAME, null, cv)
if(result==-1.toLong()){
Toast.makeText(context, "Failed to insert", Toast.LENGTH_SHORT).show()
}
}

fun getRawEmgValues():Cursor{
val db = this.writableDatabase
val data: Cursor = db.rawQuery("SELECT * FROM " + EMG_TABLE_NAME, null)
return data
}



}
15 changes: 12 additions & 3 deletions app/src/main/java/com/example/rehabapp/EmgFragment.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.example.rehabapp

import android.database.Cursor
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.RequiresApi
import androidx.fragment.app.Fragment
import com.example.rehabapp.ValuesToLoad.Companion.emgEntries
import com.example.rehabapp.ValuesToLoad.Companion.rawEmgEntries
import com.example.rehabapp.ValuesToLoad.Companion.fftEntries
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.data.Entry
Expand All @@ -18,6 +21,7 @@ class EmgFragment : Fragment() {
lateinit var emgChart: LineChart
lateinit var fftChart: LineChart

@RequiresApi(Build.VERSION_CODES.P)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
Expand All @@ -26,8 +30,13 @@ class EmgFragment : Fragment() {
val view: View = inflater.inflate(R.layout.emg_layout, container, false)

emgChart=view.findViewById(R.id.emgChart)

val emgDataSet=LineDataSet(emgEntries, "Random")
val context = (activity as MainActivity).applicationContext
var db = DatabaseHelper(context)
val data: Cursor = db.getRawEmgValues()
while(data.moveToNext()){
rawEmgEntries.add(Entry(1.0F, data.getInt(1).toFloat()))
}
val emgDataSet=LineDataSet(rawEmgEntries, "Raw EMG")

val emgLineData= LineData(emgDataSet)
emgChart.data = emgLineData
Expand Down
57 changes: 57 additions & 0 deletions app/src/main/java/com/example/rehabapp/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,21 @@ import androidx.viewpager.widget.ViewPager
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.tabs.TabLayout
import android.R.attr.start
import android.app.Activity
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothDevice
import android.content.Intent
import android.os.Build
import android.os.SystemClock
import android.util.Log
import android.widget.Chronometer
import android.widget.Toast
import androidx.annotation.RequiresApi
import com.example.rehabapp.ValuesToLoad.Companion.logText
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.*
import kotlin.collections.ArrayList


class MainActivity : AppCompatActivity() {
Expand All @@ -26,6 +32,14 @@ class MainActivity : AppCompatActivity() {
var running = false
lateinit var chronometer: Chronometer

private var bluetoothAdapter: BluetoothAdapter?=null
private lateinit var pairedDevices: Set<BluetoothDevice>
private val REQUEST_ENABLE_BLUETOOTH = 1

companion object{
val EXTRA_ADDRESS:String = "Device_address"
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Expand All @@ -41,8 +55,24 @@ class MainActivity : AppCompatActivity() {
chronometer=findViewById(R.id.chronometer)
chronometer.format = "Time: %s"
chronometer.base = SystemClock.elapsedRealtime()

bluetoothAdapter= BluetoothAdapter.getDefaultAdapter()
if(bluetoothAdapter==null){
Toast.makeText(this, "This device doesn't support bluetooth", Toast.LENGTH_LONG).show()
}
if(!bluetoothAdapter!!.isEnabled){
val enableBluetoothIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
startActivityForResult(enableBluetoothIntent, REQUEST_ENABLE_BLUETOOTH)
}

}

@RequiresApi(Build.VERSION_CODES.P)
fun insertEmgData(emgRaw: Int, emgFiltred: Int){
val context = this
var db = DatabaseHelper(context)
db.insertData(emgRaw, emgFiltred)
}

fun addLog(log: String) {
val calendar = Calendar.getInstance()
Expand Down Expand Up @@ -78,4 +108,31 @@ class MainActivity : AppCompatActivity() {
}
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode==REQUEST_ENABLE_BLUETOOTH){
if(resultCode==Activity.RESULT_OK){
if(bluetoothAdapter!!.isEnabled){
Toast.makeText(this, "Bluetooth enabled", Toast.LENGTH_LONG).show()
} else {
Toast.makeText(this, "Bluetooth disabled", Toast.LENGTH_LONG).show()
}
} else if(resultCode==Activity.RESULT_CANCELED){
Toast.makeText(this, "Bluetooth enabling canceled", Toast.LENGTH_LONG).show()
}
}
}

fun pairedDeviceList():ArrayList<BluetoothDevice>{
pairedDevices=bluetoothAdapter!!.bondedDevices
val list: ArrayList<BluetoothDevice> = ArrayList()
if(pairedDevices.isNotEmpty()){
for(device:BluetoothDevice in pairedDevices){
list.add(device)
Log.i("device", ""+device)
}
}
return list
}

}
3 changes: 2 additions & 1 deletion app/src/main/java/com/example/rehabapp/ValuesToLoad.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ class ValuesToLoad {

companion object{
var logText: String = ""
val emgEntries = ArrayList<Entry>()
val rawEmgEntries = ArrayList<Entry>()
val filtredEmgEntries = ArrayList<Entry>()
val fftEntries = ArrayList<Entry>()
val accEntries = ArrayList<Entry>()
val gyrEntries = ArrayList<Entry>()
Expand Down

0 comments on commit e3750d8

Please sign in to comment.