Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android java.io.IOException:未连接传输终结点_Java_Android_Bluetooth - Fatal编程技术网

android java.io.IOException:未连接传输终结点

android java.io.IOException:未连接传输终结点,java,android,bluetooth,Java,Android,Bluetooth,我需要向蓝牙设备发送一个字符串。但在发送时,我在java.io.OutputStream.write(byte[])方法上得到一个Exeptionjava.io.IOException:Transport端点未连接 代码如下所示。代码只是从配对设备列表和发送字符串中搜索特定设备 public class MainActivity extends Activity { TextView out; private static final int REQUEST_ENABLE_BT

我需要向蓝牙设备发送一个字符串。但在发送时,我在
java.io.OutputStream.write(byte[])
方法上得到一个Exeption
java.io.IOException:Transport端点未连接

代码如下所示。代码只是从配对设备列表和发送字符串中搜索特定设备

public class MainActivity extends Activity {

    TextView out;
    private static final int REQUEST_ENABLE_BT = 1;
    private BluetoothAdapter btAdapter;
    private ArrayList<BluetoothDevice> btDeviceList = new ArrayList<BluetoothDevice>();
    private ArrayAdapter<String> mPairedDevicesArrayAdapter;
    private ArrayAdapter<String> mNewDevicesArrayAdapter;
    BluetoothDevice device1;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        out = (TextView) findViewById(R.id.out);
        btAdapter = BluetoothAdapter.getDefaultAdapter();
        ListpairedDevices();
    }

    /* This routine is called when an activity completes. */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_ENABLE_BT) {
            CheckBTState();
        }
    }

    public void ListpairedDevices() {
        Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevices();

        // If there are paired devices, add each one to the ArrayAdapter
        if (pairedDevices.size() > 0) {
            out.append("\nPaired Devices \n");
            for (BluetoothDevice device : pairedDevices) {
                out.append("\n  Device123: " + device.getName() + "," + device);
                //mPairedDevicesArrayAdapter.add("\n  Device123: " + device.getName() + "," + device);
                String dv=device.toString();
                if(dv.contains("00:1B:EE:82:31:1E"))
                {
                device1=device;
                }
            }
        } else {
            out.append("\nNo Pared Device");
        }
        out.append("\nDiscovered Devices");
    }

    public void sendtext(View v) {//button click

    Set<BluetoothDevice> bd=btAdapter.getBondedDevices();
    sendDataToPairedDevice("message1");
    }
    private void sendDataToPairedDevice(String message ){       
        byte[] toSend = message.getBytes();
        try {
         UUID applicationUUID = UUID.fromString("8ce255c0-200a-11e0-ac64-0800200c9a66");
         BluetoothSocket socket = device1.createInsecureRfcommSocketToServiceRecord(applicationUUID);
         OutputStream mmOutStream = socket.getOutputStream();
         mmOutStream.write(toSend);
     } catch (IOException e) {
         Log.e( "Exception during write", e.toString());
     }
 }
}
公共类MainActivity扩展活动{
文本视图输出;
私有静态最终整数请求_ENABLE_BT=1;
私人蓝牙适配器;
private ArrayList btDeviceList=新ArrayList();
专用阵列适配器MPairedevicesArrayaAdapter;
专用阵列适配器mNewDevicesArrayAdapter;
蓝牙设备1;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
out=(TextView)findViewById(R.id.out);
btAdapter=BluetoothAdapter.getDefaultAdapter();
ListpairedDevices();
}
/*此例程在活动完成时调用*/
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==请求启用){
CheckBTState();
}
}
公共作废ListpairedDevices(){
Set pairedDevices=btAdapter.getBondedDevices();
//如果存在配对设备,请将每个设备添加到ArrayAdapter
如果(pairedDevices.size()>0){
out.append(“\n需要的设备\n”);
用于(蓝牙设备:pairedDevices){
out.append(“\n Device123:“+device.getName()+”,“+device”);
//MPairedDeviceArrayaAdapter.add(“\n Device123:“+device.getName()+”,“+device”);
字符串dv=device.toString();
如果(dv.包含(“00:1B:EE:82:31:1E”))
{
设备1=设备;
}
}
}否则{
out.append(“\n无配置设备”);
}
out.append(“\n发现的设备”);
}
公共void sendtext(视图v){//按钮单击
Set bd=btAdapter.getBondedDevices();
sendDataToPairedDevice(“消息1”);
}
私有void sendDataToPairedDevice(字符串消息){
字节[]toSend=message.getBytes();
试一试{
UUID applicationuid=UUID.fromString(“8ce255c0-200a-11e0-ac64-0800200c9a66”);
BluetoothSocket=device1.CreateSecurerCommsocketToServiceRecord(ApplicationUID);
OutputStream mmOutStream=socket.getOutputStream();
mmOutStream.write(toSend);
}捕获(IOE异常){
Log.e(“写入期间异常”,例如toString());
}
}
}
编辑:

您需要连接到套接字,然后才需要取消查找

 btAdapter.cancelDiscovery();
 socket.connect();
UUID为Kiran K J is工作

000011105-0000-1000-8000-00805F9B34FB


您尚未获得蓝牙适配器,您刚刚声明了它

使用静态工厂方法获取这样的蓝牙适配器

将此添加到onCreate中

btAdapter=BluetoothAdapter.getDefaultAdapter();

这是集合pairedDevices=btAdapter.getBondedDevices();listpaireddevice()方法的第一行您已经使用了adatper,但尚未获取适配器您已经声明了adatper,但它为null,因为您尚未获取它的对象。。在调用listpaireddevices()方法之前,将我发布的代码放在OnCreate方法中。这不是问题。在复制粘贴时,我忘记在stackoverflow中添加行。错误仍然相同。uuid是否有任何问题。我只是复制粘贴一个垃圾uuid。但设备地址是正确的。获取套接字后调用socket.connect()