Малина Pi 3 включает поддержку BLE. Я подтвердил, что он работает
sudo hcitool lescan
который вернул MAC и BLE "полное локальное имя" для соседних рекламодателей.
Как получить доступ к программному обеспечению в Java?
Малина Pi 3 включает поддержку BLE. Я подтвердил, что он работает
sudo hcitool lescan
который вернул MAC и BLE "полное локальное имя" для соседних рекламодателей.
Как получить доступ к программному обеспечению в Java?
Чтобы использовать BLE на Raspberry Pi 3, вам нужно обновить bluez (ядро bluetooth в Raspbian linux), а затем использовать интерфейс Bluez D-Bus для взаимодействия с ним.
Я ищу для написания своего собственного java lib, но это очень сложно, потому что документации о D-Bus в java и о bluez мало.
Для bluez в последнем дистрибутиве есть только код образца.
На данный момент я написал простой script, обновляющий версию bluez до последней версии: https://gist.github.com/tongo/94338cebf4e6367d353439bca8d0a376
Я также нашел сообщение в блоге, в котором рассказывается о d-bus, java и bluez: http://smartspacestuff.blogspot.it/2016/02/i-got-figurin-out-dbus-bluez.html
Это было полезно, но не очень понятно для меня.
Надеюсь, это поможет.
Если вы нашли другую документацию, отправьте ее.
Я не думаю, что в это время есть ясный или простой ответ. Для интеграции с Bluetooth необходимы встроенные компоненты, которые не являются частью стандартного JDK.
Наиболее распространенной библиотекой, используемой для использования Bluetooth с Java в Linux, является BlueCove. BlueCove предоставляет дополнительные собственные библиотеки для работы с Bluetooth на linux: BlueCove-GPL или BlueCove-bluez (экспериментальный). Однако вам, вероятно, придется скомпилировать один из них самостоятельно для использования на вашем RPi. Способы выполнения будут зависеть от вашего дистрибутива и потребуют значительных знаний об Linux, компиляции собственного кода и т.д. Быстрый поиск в Google показывает некоторые рабочие примеры этого для предыдущих версий RPi. Неясно, будет ли он работать с BLE на RPi 3, хотя.
Другим может быть попытка использовать "компонент Camel Bluetooth ", который является оболочкой над Bluecove и ожидает установки libbluetooth-dev и blueman. Но опять же, непонятно, будет ли он работать с RPi 3.
Если не удается получить истинную интеграцию, другой вариант может заключаться в том, чтобы просто сделать внешний Process вызывать из Java в командной строке Утилиты Bluetooth, которые вы знаете, уже работают. Это зависит от вашего прецедента, если этот вариант, но я подозреваю, может быть достаточно для многих конкретных случаев использования BLE.
Вы можете сделать это очень просто, просто выполнив команду через Runtime и прочитав вывод с помощью BufferedReader.
Выполнение команды:
Process p;
p = Runtime.getRuntime().exec(command);
p.waitFor();
Полный код:
package your.package.rpicommand;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ExecuteShellCommand {
public static void main(String[] args) {
ExecuteShellCommand obj = new ExecuteShellCommand();
String domainName = "google.com";
//in mac oxs
String command = "ping -c 3 " + domainName;
//in windows
//String command = "ping -n 3 " + domainName;
String output = obj.executeCommand(command);
System.out.println(output);
}
private String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
}
Я бы хотел, чтобы я закодировал это для вас, но в Интернете уже есть много примеров.
Хотя это один из способов сделать это, вы должны использовать BlueCove или некоторую библиотеку для сканирования через устройства Bluetooth.
Источник: https://www.mkyong.com/java/how-to-execute-shell-command-from-java/