新しい車両セキュリティ アプリのプログラムを書いています。このアプリにより、ユーザーは電話アプリを介してロック/ロック解除操作を制御できます。ユーザーの携帯電話の Bluetooth が最初にオフになっているとします。その場合、アプリを開くと、電話の Bluetooth アダプターが自動的にオンになり、車両に固定された Bluetooth モジュールに接続されます。私が行ったコードによると、電話のBTアダプターのプログラムによる有効化は正常に機能します。ただし、車両の BT モジュールへの接続は行われません。
ただし、携帯電話の BT アダプターが既にオンになっているときにユーザーがアプリを開くと、車両と携帯電話の間の接続が自動的に確立されます。
BT アダプターがプログラムでオンになっているときに接続が行われない理由を知る必要があります。
注 - 電話と車両 BT モジュールがペアリングされています。Bluetooth モジュールの MAC アドレスは、コーディングでハードコーディングされています。コーディングは以下の通りです。必要な部分だけ貼りました。私の問題を理解して解決するために必要なものがすべてここにあることを願っています。私がコードを投稿した方法はかなりめちゃくちゃです。申し訳ありません。それが明確であることを願っています。私はこれが初めてです。
private static final UUID MY_UUID =
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
// Insert bluetooth devices MAC address
private static String address = "00:19:5D:EF:03:79";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btAdapter = BluetoothAdapter.getDefaultAdapter();
btAdapter.enable();
@Override
public void onResume() {
super.onResume();
btAdapter.enable();
// Set up a pointer to the remote node using it's address.
BluetoothDevice device = btAdapter.getRemoteDevice(address);
// Two things are needed to make a connection:
// A MAC address, which we got above.
// A Service ID or UUID. In this case we are using the
// UUID for SPP.
try {
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
errorExit("Fatal Error", "In onResume() and socket create failed: " + e.getMessage() + ".");
}
// Make sure Discovery isn't going on when you attempt to connect and pass your message.
btAdapter.cancelDiscovery();
// Establish the connection. This will block until it connects.
try {
btSocket.connect();
} catch (IOException e) {
try {
btSocket.close();
} catch (IOException e2) {
errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + ".");
}
}
// Create a data stream so we can talk to server.
try {
outStream = btSocket.getOutputStream();
} catch (IOException e) {
errorExit("Fatal Error", "In onResume() and output stream creation failed:" + e.getMessage() + ".");
}
}