import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import javax.bluetooth.*;
import javax.microedition.io.*;
import javax.swing.*;
/**
* 蓝牙发送文件
*/
public class BluetoothFileTransfer {
public static void main(String[] args) {
JFrame frame = new JFrame("Bluetooth File Transfer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
JPanel panel = new JPanel(new BorderLayout());
frame.add(panel);
// 文件选择器
JFileChooser fileChooser = new JFileChooser();
panel.add(fileChooser, BorderLayout.NORTH);
// 发送文件按钮
JButton sendButton = new JButton("Send File");
panel.add(sendButton, BorderLayout.SOUTH);
sendButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File file = fileChooser.getSelectedFile();
if (file != null) {
try {
// 搜索蓝牙设备
LocalDevice localDevice = LocalDevice.getLocalDevice();
DiscoveryAgent agent = localDevice.getDiscoveryAgent();
RemoteDevice[] devices = agent.retrieveDevices(DiscoveryAgent.PREKNOWN);
// 找到手机设备
RemoteDevice phoneDevice = null;
for (RemoteDevice device : devices) {
System.out.println("device = " + device.getFriendlyName(false));
if (device.getFriendlyName(false).contains("齐天大圣")) {
phoneDevice = device;
break;
}
}
if (phoneDevice != null) {
// 建立蓝牙连接
// UUID uuid = new UUID("1101", true);
String url = "btgoep://" + phoneDevice.getBluetoothAddress() + ":1;authenticate=false;encrypt=false;master=false";
StreamConnection conn = (StreamConnection) Connector.open(url);
OutputStream os = conn.openOutputStream();
// 文件传输
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.flush();
os.close();
fis.close();
conn.close();
JOptionPane.showMessageDialog(frame, "File sent successfully!");
} else {
JOptionPane.showMessageDialog(frame, "Phone device not found!");
}
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(frame, "Error: " + ex.getMessage());
}
} else {
JOptionPane.showMessageDialog(frame, "Please select a file!");
}
}
});
frame.setVisible(true);
}
}