连接android M设备时出现Alljoyn文件传输问题

时间:2016-12-19 12:25:32

标签: android networking android-ndk file-transfer alljoyn

在尝试发送表单alljoyn示例演示时,我无法发送和接收文件。

我已使用jar提供的16.4 .soalljoyn文件。

此处提供了jar.so https://github.com/onbiron/AllJoyn

尝试加入会话时,我遇到了这种错误。

12-19 17:42:04.371 14705-14823/org.alljoyn.cops.filetransfer.sampleapp E/PERMISSION_MGR:    1.906 ****** ERROR PERMISSION_MGR lepDisp2_0 ...ndroid/PermissionDB.cc:182 | Failed to open /data/system/packages.xml: ER_FAIL
12-19 17:42:35.739 14705-14867/org.alljoyn.cops.filetransfer.sampleapp E/ALLJOYN_OBJ:   33.275 ****** ERROR ALLJOYN_OBJ JoinS-2       .../router/AllJoynObj.cc:2870 | SendAttachSession failed: ER_BUS_REPLY_IS_ERROR_MESSAGE
12-19 17:42:35.739 14705-14865/org.alljoyn.cops.filetransfer.sampleapp E/ALLJOYN_OBJ:   33.275 ****** ERROR ALLJOYN_OBJ JoinS-1       .../router/AllJoynObj.cc:2870 | SendAttachSession failed: ER_BUS_REPLY_IS_ERROR_MESSAGE
12-19 17:42:35.744 14705-14867/org.alljoyn.cops.filetransfer.sampleapp E/ALLJOYN_OBJ:   33.280 ****** ERROR ALLJOYN_OBJ JoinS-2       .../router/AllJoynObj.cc:1110 | Failed to attach session 3934278432 to :LL5lO2PF.2: ER_BUS_REPLY_IS_ERROR_MESSAGE
12-19 17:42:35.744 14705-14865/org.alljoyn.cops.filetransfer.sampleapp E/ALLJOYN_OBJ:   33.280 ****** ERROR ALLJOYN_OBJ JoinS-1       .../router/AllJoynObj.cc:1110 | Failed to attach session 3934278432 to :LL5lO2PF.2: ER_BUS_REPLY_IS_ERROR_MESSAGE
12-19 17:42:36.206 14705-17188/org.alljoyn.cops.filetransfer.sampleapp E/LOCAL_TRANSPORT:   33.742 ****** ERROR LOCAL_TRANSPORT lepDisp2_0 ...src/LocalTransport.cc:597 | LocalEndpoint::DoPushMessage failed: ER_BUS_UNMATCHED_REPLY_SERIAL
12-19 17:42:36.209 14705-17225/org.alljoyn.cops.filetransfer.sampleapp E/LOCAL_TRANSPORT:   33.745 ****** ERROR LOCAL_TRANSPORT lepDisp2_1 ...src/LocalTransport.cc:597 | LocalEndpoint::DoPushMessage failed: ER_BUS_UNMATCHED_REPLY_SERIAL
12-19 17:42:37.869 14705-14747/org.alljoyn.cops.filetransfer.sampleapp E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb9327058
12-19 17:42:39.866 14705-14747/org.alljoyn.cops.filetransfer.sampleapp E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb944b690

1 个答案:

答案 0 :(得分:1)

请注意,AllJoyn文件传输服务应用程序在3年内未提交,并标记为旧版/已存档。它不活跃。

您提到的问题似乎是加入请求期间的超时。这对我来说并不是一个重大问题(只在几天内看过一次,解决方法是简单地重试加入会议然后成功)。我相信当网络中出现拥塞/延迟时,这种超时很少发生。

但是,在Android 6.0上运行此应用程序时,我确实遇到了其他几个问题,导致文件传输无法正常工作。其中包括:

  • 无法从设备读取/写入文件。需要在运行时请求读/写权限,即使它们已经在清单中。从Android 6.0及更高版本(API级别23+)开始,这似乎是必要的。请参阅https://stackoverflow.com/a/38989237/7281796
  • 该应用使用/ mnt / sdcard的硬编码保存目录路径。运行6.0.1的Nexus 5上不存在此路径。需要使用Environment.getExternalStorageDirectory()绝对路径而不是使用硬编码路径。
  • 重新启动两个应用程序中的一个将导致对等体之间的文件传输不再起作用(除非另一个应用程序也重新启动)。需要使用SessionListener释放连接对象,并在收到会话丢失时重置GUI视图。
  • 处理从托管应用程序收到多个并发发现广告时发生重复联接会话处理的情况。这导致可用对等体的GUI列表视图显示重复的对等项。当app尝试通过会话发送alljoyn信号时,还会导致“共享文件”因ER_BUS_NO_SUCH_OBJECT而失败。

我的github存储库(AllJoyn文件传输服务应用程序的分支)中提供了对这些问题的修复:https://github.com/psigurdson/alljoyn-services-filetransfer