Bluetooth module | #6

DeviceListFragment

import android.app.Activity
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothManager
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import com.google.android.material.snackbar.Snackbar
import com.neco_dev.bt_def.databinding.FragmentListBinding

class DeviceListFragment : Fragment() {
private var bAdapter: BluetoothAdapter? = null
private lateinit var binding: FragmentListBinding
private lateinit var btLauncher: ActivityResultLauncher<Intent>

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentListBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.imBluetoothOn.setOnClickListener {
btLauncher.launch(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE))
}
registerBtLauncher()
initBtAdapter()
bluetoothState()
}

private fun initBtAdapter(){
val bManager = activity?.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
bAdapter = bManager.adapter
}

private fun bluetoothState(){
if (bAdapter?.isEnabled == true){
changeButtonColor(binding.imBluetoothOn, Color.GREEN)
}
}

private fun registerBtLauncher(){
btLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
){
if (it.resultCode == Activity.RESULT_OK){
changeButtonColor(binding.imBluetoothOn, Color.GREEN)
Snackbar.make(binding.root, "Блютуз включен!", Snackbar.LENGTH_LONG).show()
} else {
Snackbar.make(binding.root, "Блютуз выключен!", Snackbar.LENGTH_LONG).show()
}
}
}

}

3 комментария для “Bluetooth module | #6”

  1. Здравствуйте! Спасибо за уроки!
    Хотелось бы задать вопрос чуть-чуть не по теме данного урока. Есть собственный сервер, на котором “лежит” мой сайт, на самом сайте есть десяток обучающих видео и создано приложение на котлин, которое получает информацию с сайта и отображает видео уже в самом приложении, смотреть можно при наличии интернета, а можно сделать ли сохранения видео в офлайн, чтоб при отсутствии интернета у пользователя он смог смотреть это видео, что-то похожее на YouTube Premium, когда ты сохраняешь и смотреть когда удобно.

  2. Здравствуйте. Огромное спасибо за Ваш труд.
    Подскажите, в чем может быть причина, код включения блютуз не работает на 12 Андроиде (программа запускается но при нажатии на значок ни чего не происходит, при повторном нажатии система создаёт отчет об ошибке и предлагает его куда то отправить), на 10 Андроиде все работает. Спасибо.

  3. Привет. Уже голову сломал при решении одной проблемы. Система не выводит сообщение о разрешении включить блютуз. В логе ошибок указано на команду btLauncher.launch(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE))
    Permission Denial: starting Intent { act=android.bluetooth.adapter.action.REQUEST_ENABLE cmp=com.android.settings/.bluetooth.RequestPermissionActivity } from ProcessRecord{2763913 27819:com.andriiniechkin.bluetoothesp/u0a479} (pid=27819, uid=10479) requires android.permission.BLUETOOTH_CONNECT
    В манифесте разрешение BLUETOOTH_CONNECT указано.
    Принудительно в телефоне в настройках приложения указал разрешение на “Устройства рядом”. После этого приложение заработало и вышел список сопряжённых устройств.
    В чём причина? Да, на телефоне андроид 12 установлен

Добавить комментарий

Ваш адрес email не будет опубликован.