ラズベリーパイ3にはBLEサポートが含まれています。私はそれが隣の広告主のためのMACおよびBLE「完全なローカル名を」が返さJavaを使用してRaspberry Pi 3のBLEにアクセスするには?
lescan
はsudo hcitoolことによって動作を確認しました。
これはプログラムでJavaにどのようにアクセスしますか?
ラズベリーパイ3にはBLEサポートが含まれています。私はそれが隣の広告主のためのMACおよびBLE「完全なローカル名を」が返さJavaを使用してRaspberry Pi 3のBLEにアクセスするには?
lescan
はsudo hcitoolことによって動作を確認しました。
これはプログラムでJavaにどのようにアクセスしますか?
現時点では、明確で簡単な回答はありません。 Bluetoothの統合には、標準のJDKに含まれていないネイティブコンポーネントが必要です。
LinuxでJavaでBluetoothを使用するために使用される最も一般的なライブラリはBlueCoveです。 BlueCoveは、Linux上でBluetoothを使用するための特別なネイティブライブラリを提供しています(BlueCove-GPLまたはBlueCove-bluez(実験的))。しかし、RPi上で使用するために、これらのいずれかをコンパイルする必要があります。 doの実行方法はあなたのディストリビューションに依存し、Linuxのかなりの知識、ネイティブコードのコンパイルなどが必要になります。簡単なgoogle検索では、これまでのRPiバージョンのいくつかの実例が示されています。 RPI 3のBLEで動作するかどうかは不明です。
もう1つは、Bluecoveの上にあるラッパーで、libbluetooth-devとbluemanをインストールすることを想定している "Camel Bluetooth Component"を試してみることです。しかしRP0 3で動作するかどうかはっきりしない。
真の統合作業ができない場合は、単に外部からProcessを呼び出して、Javaからコマンドラインに呼び出すこともできます。 。このオプションを使用する場合、使用するケースによって異なりますが、多くの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();
}
}
私は私があなたのためにこれをコード化することができますが、これについて、インターネット上の例の多くは、すでに存在したいです。
これはこれを行う1つの方法ですが、はでBlueCoveまたは一部のライブラリを使用してBluetoothデバイスをスキャンする必要があります。
出典:https://www.mkyong.com/java/how-to-execute-shell-command-from-java/
なぜ 'ping -c 3 google.com'を使用していますか? OPはBluetoothについて尋ねられ、あなたのコードは 'ping'を使っています!コピー貼り付けは役に立ちません。 –
申し訳ありませんが、彼は探しているコマンドを置き換えるだけで使用できます。 ping -c 3 google.comをsudo hcitool lescanに変更するのはかなり簡単です!私はそれをやっていないので、自分でコードを理解することができます。そして、これがなければmkyongが何の理由もなかったのと同じ正確なコードを書いていただろうから、コピーと貼り付けはこのケースで役に立ちます。また、私はPVSが私の答えで求めているものに焦点を当てていますが、www.mkyong.com/java/how-to-execute-shell-command-from-java/が書かれたものではありません。私はコードを変更して彼のために簡単にする必要がありましたが、私はしませんでした。私は正直にあなたのコメントを気にしない。 Wtv – laxerrrr
それはあなたの非常に甘いです –
それと対話するのbluez D-バスインタフェースを使用しますが、のbluez(RaspbianのLinuxのBluetoothコア)を更新する必要がラズベリーパイ3にBLE使用するには。
私は自分自身のJavaのlibを書こうとしていますが、javaのD-Busとbluezのドキュメントはほとんどないので、非常に難しいです。
bluezの場合は、最後のディストリビューションのサンプルコードのみです。 https://gist.github.com/tongo/94338cebf4e6367d353439bca8d0a376
私もブログ記事を発見したD-BUS、Javaとのbluezについて話: http://smartspacestuff.blogspot.it/2016/02/i-got-figurin-out-dbus-bluez.html
今の私は、最新ののbluezバージョンを更新し、簡単なスクリプトを作成してい
それは役に立ちましたが、私にとってはあまり明確ではありませんでした。
こちらがお役に立てば幸いです。
他のドキュメントがある場合は、それを投稿してください。
[Eclipse Kura](https://eclipse.github.io/kura/doc/bluetooth-le-example.html)を見たことがありますか? –
'ProcessBuilder'で' sudo hcitool lescan'を実行して出力を解析しようとしましたか? –