Arduino+Bluetooth+Android Studio
- Войдите на сайт для отправки комментариев
Сб, 20/01/2018 - 22:56
Всем привет! Реализую один небольшой проектик на 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(); } } }
Мне кажется что мы работаем над одним и тем же проектом, хотя я могу и ошибатся.
Круто)) а над каким? И как ваши успехи?