首页 > 解决方案 > 通过蓝牙接收的消息在android应用程序中拆分

问题描述

我正在开发一个 Android APP,它在 Android 设备和微控制器(Raspberry Pi)之间进行蓝牙通信,我正在使用这个来实现这一点。我可以正常发送数据而没有任何问题,但是,当我尝试从微控制器接收数据时,字符串被拆分为 2,例如:当我发送“Hello world!”时 从树莓派,我应该得到:

你好世界!

但我得到:

H

你好世界!

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import com.ahmedabdelmeged.bluetoothmc.BluetoothMC;
import com.ahmedabdelmeged.bluetoothmc.ui.BluetoothDevices;
import com.ahmedabdelmeged.bluetoothmc.util.BluetoothStates;
import com.google.android.material.bottomnavigation.BottomNavigationView;

public class MainActivity extends AppCompatActivity {

    public BluetoothMC mBluetoothmc = new BluetoothMC();
    private final HomeFragment mHomeFragment = new HomeFragment();
    private final MapFragment mMapFragment = new MapFragment();
    private final LogFragment mLogFragment = new LogFragment();

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

        BottomNavigationView BottomNav = findViewById(R.id.bottom_navigation);
        BottomNav.setOnNavigationItemSelectedListener(navListener);
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                mHomeFragment).commit();

        mBluetoothmc.setOnDataReceivedListener(new BluetoothMC.onDataReceivedListener() {
        @Override
        public void onDataReceived(String data) {
            log.e("Main", data);
        }
    });

    }

我之前使用过这个库,它工作正常,唯一的区别是我使用的是 linux 机器而不是 windows。图书馆的开发人员也处于非活动状态,所以我不能问他

标签: javaandroidbluetooth

解决方案


您好,您可以通过 Rfcomm 或 Gatt 接口连接到蓝牙设备,而无需使用任何第三方库。

当数据量较大时,首选 Rfcomm。当设备之间的距离较远时,首选蓝牙 Gatt


推荐阅读