[英]Android File sharing via Bluetooth
我需要列出蓝牙上所有可用的设备,并将任何文件从android设备共享到所选设备。 我尝试使用以下代码
private void sharefile(String deviceAddress,String filePath){
File f = new File(filePath);
BluetoothAdapter objBluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();
BluetoothDevice device = objBluetoothAdapter
.getRemoteDevice(deviceAddress);
Log.v("Device", "" + device.getName());
final UUID uuid = UUID
.fromString("00001101-0000-1000-8000-00805F9B34FB");
try {
byte[] buffer = new byte[(int) f.length()];
FileInputStream fis = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(buffer, 0, (int) f.length());
BluetoothSocket socket = device
.createRfcommSocketToServiceRecord(uuid);
OutputStream os = socket.getOutputStream();
os.write(buffer, 0, buffer.length);
os.flush();
os.close();
socket.close();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
执行上述代码时,在Logcat上显示传输端点未连接消息。
06-11 18:26:49.960:W / System.err(9812):java.io.IOException:传输端点未连接06-11 18:26:49.960:W / System.err(9812):在android。 bluetooth.BluetoothSocket.writeNative(本机方法)06-11 18:26:49.960:W / System.err(9812):at android.bluetooth.BluetoothSocket.write(BluetoothSocket.java:346)06-11 18:26:49.960 :W / System.err(9812):在android.bluetooth.BluetoothOutputStream.write(BluetoothOutputStream.java:85)06-11 18:26:49.960:W / System.err(9812):在com.cit.bt ShareMessageActivity.connectDevice(ShareMessageActivity.java:138)06-11 18:26:49.960:W / System.err(9812):at com.cit.bt.ShareMessageActivity.shareFile(ShareMessageActivity.java:83)06-11 18: 26:49.960:W / System.err(9812):在com.cit.bt.ShareMessageActivity.onListItemClick(ShareMessageActivity.java:73)06-11 18:26:49.960:W / System.err(9812):在Android .app.ListActivity $ 2.onItemClick(ListActivity.java:319)06-11 18:26:49.960:W / System.err(9812):at android.widget.AdapterView.performItemClick(AdapterView.java:284) 06-11 18:26:49.960:W / System.err(9812):at android.widget.ListView.performItemClick(ListView.java:3736)06-11 18:26:49.960:W / System.err(9812) :位于android.widget.AbsListView $ PerformClick.run(AbsListView.java:1974)06-11 18:26:49.960:W / System.err(9812):位于android.os.Handler.handleCallback(Handler.java:587 )06-11 18:26:49.960:W / System.err(9812):在android.os.Handler.dispatchMessage(Handler.java:92)06-11 18:26:49.960:W / System.err(9812 ):位于android.os.Looper.loop(Looper.java:130)06-11 18:26:49.960:W / System.err(9812):位于android.app.ActivityThread.main(ActivityThread.java:3687) 06-11 18:26:49.960:W / System.err(9812):at java.lang.reflect.Method.invokeNative(本机方法)06-11 18:26:49.960:W / System.err(9812):在java.lang.reflect.Method.invoke(Method.java:507)06-11 18:26:49.960:W / System.err(9812):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run( ZygoteInit.java:867)06-11 18:26:49.960:W / System.err(9812):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:62 5)06-11 18:26:49.960:W / System.err(9812):在dalvik.system.NativeStart.main(本机方法)
并尝试使用以下替代代码连接设备,它连接了设备,但无法传输文件。
BluetoothDevice hxm = BluetoothAdapter.getDefaultAdapter()
.getRemoteDevice(deviceAddress);
Method m;
m = hxm.getClass().getMethod("createRfcommSocket",
new Class[] { int.class });
BluetoothSocket socket = (BluetoothSocket) m.invoke(hxm,
Integer.valueOf(1));
socket.connect();
我也在android清单中提供了必需的权限,但连接失败。 任何人都可以帮助我解决此问题。
谁能为我提供从Android市场进行蓝牙文件传输的逻辑依据。
谢谢!
蓝牙HMX设备不会偶然成为心率监测器吗? 无论哪种方式,我们都发布了一个不错的示例(摘自Google蓝牙聊天示例)。 它比他们的示例要精简得多,希望对您有所帮助。
http://ww2.cs.fsu.edu/~sposaro/mobile/resources/BeatConnect.zip
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.