java.io.IOException:读取失败,套接字可能关闭或超时,读取ret:-1-AndroidStudio和蓝牙

时间:2020-02-11 21:02:47

标签: java android bluetooth

我是AndroidStudio的新手,但是我需要创建一个连接到stm32的应用程序。

首先,我只是想知道如何创建一个向模块发送信号的应用程序,所以我在youtube上观看了本教程:https://www.youtube.com/watch?v=TLXpDY1pItQ

我一步一步做完,突然出现了这样的错误:

W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback
W/System.err: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
        at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:762)
        at android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:776)
W/System.err:     at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:399)
        at com.example.quiz.MainActivity2.onCreate(MainActivity2.java:52)
        at android.app.Activity.performCreate(Activity.java:7232)
        at android.app.Activity.performCreate(Activity.java:7221)
W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2964)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3119)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
W/System.err:     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1839)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6864)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

我的代码如下:

package com.example.quiz;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.view.View;
import android.widget.Button;

import java.io.IOException;
import java.util.UUID;

public class MainActivity2 extends AppCompatActivity {

    static final UUID mUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

    BluetoothSocket btSocket = null;

    BluetoothAdapter bluetoothAdapter;


    Button buttonLED;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);


        //przycisk
        buttonLED = findViewById(R.id.buttonL);


        //adapter
        bluetoothAdapter = bluetoothAdapter.getDefaultAdapter();

        //moduł
        final BluetoothDevice hc05 = bluetoothAdapter.getRemoteDevice("98:D3:31:FC:17:90");

        //socket
        int counter = 0;
        do {
            try {
                btSocket = hc05.createRfcommSocketToServiceRecord(mUUID);
                btSocket.connect();
                System.out.println(btSocket.isConnected());
            } catch (IOException e) {
                e.printStackTrace();
            }
            counter++;
        } while(!btSocket.isConnected() && counter < 3);


        try {
            btSocket.close();
            System.out.println(btSocket.isConnected());
        } catch (IOException e) {
            e.printStackTrace();

        }


        buttonLED.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                System.out.println(btSocket);

            }
        });



    }


}

我不知道该代码有什么问题,因为在本教程中一切正常。你能帮我吗?

0 个答案:

没有答案
相关问题