Tag: 蓝牙

在蓝牙扫描期间找不到设备

我试图实现一个蓝牙扫描仪和记录有关设备的信息。 我遇到了两个问题,第一个问题handler.postDelayed似乎无法正常工作,因为它立即执行stopBleScan()方法。 第二个问题map bleScanResults总是长度为0,这意味着扫描器没有发现任何设备。 PS。 我检查所有必要的权限(位置也)。 码: class MainActivity : AppCompatActivity(), AnkoLogger { lateinit var deviceBluetoothAdapter: BluetoothAdapter val REQUEST_ENABLE_BT = 1 val REQUEST_FINE_LOCATION = 2 val SCAN_PERIOD: Long = 6000 lateinit var bleScanner : BluetoothLeScanner lateinit var bleScanResults: Map<String, BluetoothDevice> lateinit var bleScanCallback: ScanCallback override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val bluetoothManager: BluetoothManager = […]

Bt套接字关闭异常

我建立一个应用程序,应该通过蓝牙套接字发送文件,但由于某种原因,我不断得到相同的例外。 错误消息说,套接字已经关闭,但我不明白如何或为什么它被关闭之前,我试图读取它。 用户将看到一个AlertDialog选项可供选择。 他们应该:1.配对设备。 2.发送文件到设备(目前在对话框中标记为“连接”)。 在选择连接选项后,设备配对后会发生异常。 当接收设备试图从套接字读取我得到这个异常: Process: com.example.zemcd.toofxchange, PID: 1074 java.io.IOException: bt socket closed, read return: -1 at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:588) at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:96) at java.io.BufferedInputStream.read1(BufferedInputStream.java:273) at java.io.BufferedInputStream.read(BufferedInputStream.java:334) at java.io.FilterInputStream.read(FilterInputStream.java:107) at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:101) at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:98) at kotlin.io.ByteStreamsKt.readBytes(IOStreams.kt:117) at com.example.zemcd.toofxchange.BluetoothUtils$Companion.receiveFile(BluetoothUtils.kt:82) at com.example.zemcd.toofxchange.ListenThread$run$acceptThread$1.run(BluetoothUtils.kt:104) at java.lang.Thread.run(Thread.java:761) 下面是用于pair,unpair和connect(用于发送数据)以及使用的线程子类的函数: class BluetoothUtils { companion object { var listener: ListenThread? = null val _UUID = […]

来自内部存储的Intent.ACTION_SEND PDF文件仅适用于某些应用程序

我尝试从Intent.ACTION_SEND发送到PrinterShare应用程序(我已经购买了声称可以从应用程序内部存储打印文件的高级版本),从应用程序的内部存储器打印PDF文件。 我已经看了这个 , 这是复制我的文件到内部缓存感谢这一点 ,似乎PrinterShare应用程序获取我的文件,但不是“完全” – 它无法呈现文件,当我打印,它只是推出一个空的文件。 随着共享意图,我可以选择其他应用程序,如Gmail和普通的蓝牙,然后我可以发送PDF文件作为电子邮件附件或通过蓝牙到我的个人电话,它完美呈现。 只是当我尝试将其分享到Google照片,环聊,然后还有PrinterShare应用时,出现了一些奇怪的错误。 那么,如何调试一个只发生在有时候的问题呢? 在我的代码之前,我在内部存储中创建文件,如下所示: val savePdf = File(view.filesDir, "printthis.pdf") 这是我的共享意图建设(Kotlin): override fun printPdf() { copyFileToInternal() val uri = Uri.parse("content://my.package.android.app/printthis.pdf") Log.d("Print PDF from $uri") val shareIntent = Intent(Intent.ACTION_SEND) shareIntent.type = "image/*" shareIntent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION shareIntent.putExtra(Intent.EXTRA_STREAM, uri) (view as Context).startActivity(Intent.createChooser(shareIntent, "Print PDF")) } 这是copyFileToInternal函数: private fun copyFileToInternal() { try { […]

蓝牙插座不断超时

我正在开发一些测试来计算关于Android上的蓝牙连接的指标。 我的问题是随机套接字无法连接到远程设备,特别是涉及两个以上的设备时。 具体来说,大多数时候,当我尝试打开一个套接字时,我得到了臭名昭着的错误 连接读取失败,套接字可能关闭或超时,读取ret:-1 我已经尝试应用涉及到Java反射的修复,并没有工作。 我正在尝试开发的测试包括在执行一些测量时在设备环中发送令牌。 这个问题发生的概率随着时间而增加。 第一次测试可能会给出一些结果,但最终通常会失败。 是否有其他人遭受同样的问题? 对于那些有兴趣的人来说,代码(在Kotlin开发)在这里: GitHub项目 代码涉及到测试本身

蓝牙客户端Socket每次得到相同的异常

我正在写一个Android应用程序,主要是在Kotlin应该扫描蓝牙设备,并与他们配对。 我也希望它在后台运行一个蓝牙服务器套接字来等待连接尝试。 不过,当我试图调用BluetoothSocket.connect()方法时,我仍然遇到了同样的异常。 例外是: 10-10 20:07:57.917 18643-27894/com.example.zemcd.toofxchange E/Pairing Thread: error connecting java.io.IOException: read failed, socket might closed or timeout, read ret: -1 at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:754) at android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:766) at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:388) at com.example.zemcd.toofxchange.PairingThread.run(BluetoothUtils.kt:83) 我读到,这可以解决类似的代码 btSocket = device.javaClass.getMethod("createRFcommSocket", Int::class).invoke(device, 1) as BluetoothSocket 但是这不起作用。 它导致应用程序崩溃,由NoSuchMethod引起的ReflectException 。 此外,我已经读过,这不是一个原因发布的方法,我想尝试使用发布的createRFcommSocketToServiceRecord()方法。 我不确定从哪里去,或者是什么导致IOException 。 此外,我甚至从来没有去配对屏幕。 我试图找出这个异常的原因,以及如何解决这个问题。 我的代码: class BluetoothUtils { companion object { val _UUID […]

消息没有收到蓝牙聊天。 我的处理程序是否坏了

我正在开发Android开发项目。 蓝牙的网站,它似乎是正确的发送消息,但没有收到他们。 过去,我试图创建另一个蓝牙应用程序,当连接到设备时,系统提示我确认连接,并显示PIN码。 在当前的应用程序工作时,我从来没有得到提示。 但是,它并没有出现任何异常情况,并且消息似乎正在发送。 这是我的Thread类用于管理连接: inner class ConnectedThread(val socket:BluetoothSocket, val socketType:String) : Thread(){ val inStream = socket.inputStream val outStream = socket.outputStream init { mState = STATE_CONNECTED } override fun run() { Log.i(TAG, "BEGIN mConnectedThread") val buffer = ByteArray(1024) var bytes:Int while (mState == STATE_CONNECTED){ try { bytes = inStream.read(buffer) mHandler.obtainMessage(Constants.MESSAGE_READ, bytes, -1, buffer) .sendToTarget() […]