Skip to content
Snippets Groups Projects
Commit 013553e1 authored by Greisa Ajdini's avatar Greisa Ajdini
Browse files

nearest beacon setup

parent 27ad13a5
No related branches found
No related tags found
No related merge requests found
......@@ -4,19 +4,19 @@ import android.Manifest
import android.app.Activity
import android.app.AlertDialog
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothDevice
import android.bluetooth.BluetoothManager
import android.bluetooth.le.ScanCallback
import android.bluetooth.le.ScanFilter
import android.bluetooth.le.ScanResult
import android.bluetooth.le.ScanSettings
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import org.altbeacon.beacon.BeaconManager
......@@ -26,7 +26,11 @@ private const val LOCATION_PERMISSION_REQUEST_CODE = 2
abstract class BaseActivity : AppCompatActivity() {
private var addresses = arrayOf("AC:23:3F:88:10:51", "AC:23:3F:88:10:53", "AC:23:3F:88:10:57")
private var beaconManager: BeaconManager? = null
private var filters: MutableList<ScanFilter> = mutableListOf()
private val scanResults = mutableListOf<ScanResult>()
var nearestBeacon: BluetoothDevice? = null
private var isScanning = false
......@@ -43,13 +47,9 @@ abstract class BaseActivity : AppCompatActivity() {
bluetoothManager.adapter
}
val isLocationPermissionGranted
private val isLocationPermissionGranted
get() = hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onResume() {
super.onResume()
if (checkPermissions()) {
......@@ -86,7 +86,11 @@ abstract class BaseActivity : AppCompatActivity() {
if (isLocationPermissionGranted) {
return
}
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)){
if (!ActivityCompat.shouldShowRequestPermissionRationale(
this,
Manifest.permission.ACCESS_FINE_LOCATION
)
) {
val alertDialogBuilder = AlertDialog.Builder(this)
alertDialogBuilder.setTitle(R.string.location_permission_alert_title)
alertDialogBuilder.setMessage(R.string.location_permission_alert_message)
......@@ -103,23 +107,38 @@ abstract class BaseActivity : AppCompatActivity() {
private val scanCallback = object : ScanCallback() {
override fun onScanResult(callbackType: Int, result: ScanResult) {
Log.i("ScanCallBack", result.device.toString())
with(result.device) {
Log.i("ScanCallback", "Found BLE device! Name: ${name ?: "Unnamed"}, address: $address $")
}
scanResults.add(result)
scanResults.sortByDescending { it.rssi }
nearestBeacon = scanResults[0].device
// Log.i("ScanCallback",scanResults[0].toString())
// with(result.device) {
// Log.i(
// "ScanCallback",
// "Found BLE device! Name: ${name ?: "Unnamed"}, address: $address ${result.rssi} $"
// )
// }
}
}
private fun doBleScan() {
//todo delete
Toast.makeText(this, "heyyyyy",
Toast.LENGTH_SHORT).show()
Toast.makeText(
this, "hey",
Toast.LENGTH_SHORT
).show()
scanResults.clear()
for (i in addresses.indices) {
val filter = ScanFilter.Builder().setDeviceAddress(addresses[i]).build()
filters.add(filter)
}
bleScanner.startScan(filters, scanSettings, scanCallback)
isScanning = true
bleScanner.startScan(null, scanSettings, scanCallback)
}
fun Context.hasPermission(permissionType: String): Boolean {
private fun Context.hasPermission(permissionType: String): Boolean {
return ContextCompat.checkSelfPermission(this, permissionType) ==
PackageManager.PERMISSION_GRANTED
}
......
......@@ -25,12 +25,12 @@ class MainActivity : BaseActivity() {
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.nav_fragment) as NavHostFragment
navController = navHostFragment.navController
val bottomNavigationView = findViewById<BottomNavigationView
>(R.id.bottom_navigation_view)
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation_view)
setupActionBarWithNavController(navController)
bottomNavigationView.setupWithNavController(navController)
val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
val mOnNavigationItemSelectedListener =
BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.camera -> {
val intent = Intent(this, BarcodeScannerActivity::class.java)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment