我的HC 05蓝牙模块在接收侧与8051连接。 我想使用android mobile将简单文本文件发送到HC 05模块。 我该怎么办?
答案 0 :(得分:0)
如果您使用Java。
首先,您应该获得默认的蓝牙适配器:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
接下来,您应该获得HC-05的MAC地址,您可以在手机的蓝牙设置中的连接列表中检查它,或者可以在应用中扫描附近的设备并检查其名称:
/* Check HC-05 in paired devices */
public void findInPairedDevices() {
Set<BluetoothDevice> pairedDevices = adapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
if (device.getName().equals("HC-05")) {
MACaddress = device.getAddress();
}
}
}
}
/* Scan nearby devices for HC-05 */
public void findInAvailableDevices() {
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (device.getName().equals("HC-05")) {
MACaddress = device.getAddress();
adapter.cancelDiscovery();
}
}
}
};
activity.registerReceiver(broadcastReceiver, filter);
int MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 1;
/* Permission for Bluetooth search */
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
adapter.startDiscovery();
}
获得MAC地址后,您可以得到HC-05:
BluetoothDevice device = adapter.getRemoteDevice(MACaddress);
并可以创建套接字:
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(myUUID);
myUUID
是您可以使用的UUID:
myUUID = UUID.fromString("Your UUID string");
最后,启动套接字:
socket.connect();
接下来,您可以使用InputStream
和OutputStream
与HC-05通信:
if (socket.isConnected()) {
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
}
用于阅读输入消息:
byte[] buffer = new byte[256];
int bytes;
bytes = inputStream.read(buffer);
String inMsg = new String(buffer, 0, bytes);
用于编写输出消息:
String outStr = "Meow";
outputStream.write(outStr.getBytes());
下班后,您应该关闭流和套接字:
inputStream.close();
outputStream.close();
socket.close();
注意:您一定不要忘记例外。