Arduino+Bluetooth+Android Studio

 
 
 
Сообщения:1
Всем привет! Реализую один небольшой проектик на Arduino, с управлением через Bluetooth из мобильного приложения на Java(в котором УВЫ, пока не силён). Сначала написал его как шаблон в AppInventor'е . всё работало. Сейчас пытаюсь написать через Android Studio и встала загвоздка, сначала не мог отправлять команды поочереди, например 1, 2, 3..., с одной кнопки, это сделал, теперь проблема в том что команды не передаются вообще... ЧАсть кода честно взята с интернетов, часть написана с помощью хорошего человека. Короче, беда... Помогите чем сможете, ПОЖАЛУЙСТА!!!
package com.example.***.myapplication;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity implements View.OnClickListener{
    //Сокет, с помощью которого мы будем отправлять данные на Arduino
    BluetoothSocket clientSocket;
    //Эта функция запускается автоматически при запуске приложения
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Включаем bluetooth. Если он уже включен, то ничего не произойдет
        String enableBT = BluetoothAdapter.ACTION_REQUEST_ENABLE;
        startActivityForResult(new Intent(enableBT), 0);
        //Мы хотим использовать тот bluetooth-адаптер, который задается по умолчанию
        BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
        //Пытаемся проделать эти действия
        try{
            //Устройство с данным адресом - наш Bluetooth Bee
            //Адрес опредеяется следующим образом: установите соединение
            //между ПК и модулем (пин: 1234), а затем посмотрите в настройках
            //соединения адрес модуля. Скорее всего он будет аналогичным.
            BluetoothDevice device = bluetooth.getRemoteDevice("98:D3:31:FC:50:7A");
            //Инициируем соединение с устройством
            Method m = device.getClass().getMethod(
                    "createRfcommSocket", new Class[] {int.class});

            clientSocket = (BluetoothSocket) m.invoke(device, 1);
            clientSocket.connect();

            //В случае появления любых ошибок, выводим в лог сообщение
        } catch (IOException e) {
            Log.d("BLUETOOTH", e.getMessage());
        } catch (SecurityException e) {
            Log.d("BLUETOOTH", e.getMessage());
        } catch (NoSuchMethodException e) {
            Log.d("BLUETOOTH", e.getMessage());
        } catch (IllegalArgumentException e) {
            Log.d("BLUETOOTH", e.getMessage());
        } catch (IllegalAccessException e) {
            Log.d("BLUETOOTH", e.getMessage());
        } catch (InvocationTargetException e) {
            Log.d("BLUETOOTH", e.getMessage());
        }

        //Выводим сообщение об успешном подключении
        Toast.makeText(getApplicationContext(), "CONNECTED", Toast.LENGTH_LONG).show();

    }



    public static class ExampleActivity extends AppCompatActivity {

        private Button myButton;
        private List<Command> commands = new ArrayList<>();
        private int commandPos;

        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            myButton = (Button) findViewById(R.id.btn1);

            commands.add(() -> sendBluetoothCommand("Command 1"));
            commands.add(() -> sendBluetoothCommand("Command 2"));
            commands.add(() -> sendBluetoothCommand("Command 3"));

            myButton.setOnClickListener(v -> {
                if (commands.size() == 0) {
                    return;
                } else if (commandPos <= commands.size()) {
                    commandPos = 0;
                }

                commands.get(commandPos).execute();
                commandPos++;
            });
        }

        private void sendBluetoothCommand(String command) {
            System.out.println(command);
        }

        private interface Command {
            void execute();
        }
    }
}
 
Модераторы:demon_zxBeowulf13thShogun
Сейчас эту тему просматривают:Нет