简体   繁体   English

LeJOS EV3和Android之间的蓝牙连接

[英]Bluetooth Connection between LeJOS EV3 and Android

I'm having trouble connecting my smartphone to my EV3 over bluetooth using an app. 我无法使用应用程序通过蓝牙将智能手机连接到EV3。

My situation: 我的情况:
I'm developing an App to send simple Strings to the EV3 which runs with leJOS 0.9.1-aplu11. 我正在开发一个应用程序,以将简单的字符串发送到与leJOS 0.9.1-aplu11一起运行的EV3。
My Problem is, I'm not really familiar with Bluetooth, so my app or my receiver-software doesn't work as well. 我的问题是,我对蓝牙不是很熟悉,因此我的应用程序或接收器软件无法正常工作。

My goal: 我的目标:
My goal is to create a Listener on the EV3 which is permanant listening for Strings from the app and an App that sends the strings when I press a button. 我的目标是在EV3上创建一个监听器,该监听器可以永久地从应用程序中监听字符串,而当我按下按钮时,该应用程序可以发送字符串。

I hope you can help me. 我希望你能帮助我。
I'm from germany so don't wonder about my beautifull writing skills! 我来自德国,所以不要怀疑我的美丽写作能力!

Here is my Code: 这是我的代码:
App: 应用程序:

public class MainActivity extends AppCompatActivity { 公共类MainActivity扩展了AppCompatActivity {

private final static String TAG = "MainActivity";
private BluetoothAdapter mBluetoothAdapter;
private static BluetoothDevice mDevice;
private Button mSendBN;

private final static String MY_UUID = "00001101-0000-1000-8000-00805f9b34fb";
private static BluetoothSocket mSocket = null;
private static String mMessage = "Stop";
private static PrintStream sender;

private void findBrick() {
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter
            .getBondedDevices();
    for (BluetoothDevice device : pairedDevices) {
        if (device.getName().equals("EV3"))
            this.mDevice = device;
    }
}

private void initBluetooth() {
    Log.d(TAG, "Checking Bluetooth...");
    if (mBluetoothAdapter == null) {
        Log.d(TAG, "Device does not support Bluetooth");
        mSendBN.setClickable(false);
    } else {
        Log.d(TAG, "Bluetooth supported");
    }
    if (!mBluetoothAdapter.isEnabled()) {
        mSendBN.setClickable(false);
        Log.d(TAG, "Bluetooth not enabled");
    } else {
        Log.d(TAG, "Bluetooth enabled");
    }
}

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Toast.makeText(this, "SpeechRecognizer gestartet", Toast.LENGTH_SHORT).show();
    setContentView(R.layout.activity_main);

    mSendBN = (Button) findViewById(R.id.button);
    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

    initBluetooth();
    findBrick();

    if (mDevice == null) {
        mSendBN.setClickable(false);
        Toast.makeText(this, "No Devices found or BT disabled", Toast.LENGTH_SHORT).show();
        Log.d("onC", "Connected to " + mDevice);
    }

    try {
        createSocket();
    } catch (IOException e) {
        e.printStackTrace();
    }
    startService();
}

private void startService() {
    if (PermissionHandler.checkPermission(this, PermissionHandler.RECORD_AUDIO)) {
        Intent i = new Intent(this, BackgroundRecognizerService.class);
        startService(i);
    }
}

public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == PermissionHandler.RECORD_AUDIO && grantResults.length > 0) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            startService();
        }
    }
}

public static void onSend(View view) throws IOException {
    try {
        OutputStream os = mSocket.getOutputStream();
        sender = new PrintStream(os);
        Log.d("onSend", "Message = " +  mMessage);
        sender.println(mMessage);
        sender.flush();
        Log.d("onSend", "Message sent");
        mSocket.close();
        Log.d("onSend", "Socket closed");
    } catch (IllegalStateException | NullPointerException e) {
        e.printStackTrace();
    }

}

public void createSocket() throws IOException {
    try {
        UUID uuid = UUID.fromString(MY_UUID);
        mSocket = mDevice.createRfcommSocketToServiceRecord(uuid);
    } catch (IOException e) {
        e.printStackTrace();
    }

    Log.d("createSocket", "Adapter");

    BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
    mSocket.connect();
    OutputStream os = mSocket.getOutputStream();
    sender = new PrintStream(os);

    Log.d("createSocket", "Fertig, " + "Socket: " + mSocket + " Sender: " + sender + " OutputStream: " + os + " mDevice: " + mDevice.getName());
}

protected void onDestroy() {
    super.onDestroy();
    Log.d("onDestroy", "App beendet");
    try {
        mSocket.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    Log.d("onDestroy", "App vollständig beendet");
}

} }

EV3: EV3:

public class BTJ {
public static void main(String[] args) {

    BTConnector connector = new BTConnector();

    System.out.println("0. Auf Signal warten");

    NXTConnection conn = connector.waitForConnection(0, NXTConnection.RAW);

    InputStream is = conn.openInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));

    String message = "";

    while (true){

        System.out.println("1. Schleife gestartet");
        message = "";

        try {
            message = br.readLine();
            System.out.println("2. Message: " + message);
        } catch (IOException e) {
            e.printStackTrace(System.out);
        }
    }
}

} }

I have the answer..! 我有答案..!

public class BTJ {

    public static void main(String[] args) {
        BTConnector connector = new BTConnector();

        System.out.println("0. Auf Signal warten");

        NXTConnection conn = connector.waitForConnection(0, NXTConnection.RAW);

        InputStream is = conn.openInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is), 1);

        String message = "";

        while (true){

            System.out.println("1. Schleife gestartet");
            message = "";

            try {
                message = br.readLine();
                System.out.println("2. Message: " + message);
            } catch (IOException e) {
                e.printStackTrace(System.out);

        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM