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();
}
}
}
Мне кажется что мы работаем над одним и тем же проектом, хотя я могу и ошибатся.
Круто)) а над каким? И как ваши успехи?