AndroidデバイスのペアリングされたすべてのBluetoothデバイスのリストを返すコードを作成しました。ペアリングされたBluetoothデバイスのリストの1つは、私のラップトップでもあります。
今私の質問は
ラップトップとAndroidデバイス間のBluetooth接続ステータスを監視できる方法はありますか.Bluetooth接続が存在する場合は「接続済み」、Bluetooth接続がない場合は「切断済み」という出力が必要です
Android版は2.1.Eclairです
先に進む前に、いくつか質問があります。
-> USB 経由でラップトップとデバイスを接続するときに、このアプリケーションをテストする必要がありますか? ->別のスレッドまたは AsyncTask から実行するには? -> デバイスとラップトップを USB 経由で接続してからアプリケーションを起動すると、上記のコードが機能しません。ラップトップと電話が近くにあり、ペアリングされていても、電話で接続ステータスを確認できません。
私が書いたコードは次のとおりです
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bluetooth_);
out = (TextView) findViewById(R.id.textView1);
// Getting the Bluetooth adapter
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
// out.append("\nAdapter: " + adapter);
// Check for Bluetooth support in the first place
// Emulator doesn't support Bluetooth and will return null
if (adapter == null) {
out.append("\nBluetooth NOT supported. Aborting.");
return;
}
// Starting the device discovery
out.append("\nStarting discovery...");
adapter.startDiscovery();
out.append("\nDone with discovery...");
// Listing paired devices
out.append("\nDevices Pared:");
Set<BluetoothDevice> devices = BluetoothAdapter.getDefaultAdapter()
.getBondedDevices();
for (BluetoothDevice device : devices) {
out.append("\nFound device: " + device);
out.append("\n The name is: " + device.getName());
out.append("\n The type is: "
+ device.getBluetoothClass().getDeviceClass());
Method m;
try {
System.out.println("Trying to connect to " + device.getName());
m = device.getClass().getMethod("createInsecureRfcommSocket",
new Class[] { int.class });
BluetoothSocket socket = (BluetoothSocket) m.invoke(device, 1);
socket.connect();
out.append("Connected");
} catch (Exception e) {
e.printStackTrace();
out.append("\nDisconnected");
}
}
}