网站短信验证怎么做的,阿里巴巴国际站入口,做网站需要的执照,域名注册查询网站Android进程间通信经常会使用AIDL#xff0c;简单方便#xff0c;但是数据量有限制#xff0c;超过一定值会报错#xff1a; E !!! FAILED BINDER TRANSACTION !!! (parcel size 2073744) 可以通过使用AIDLMemoryFile传递大数据 新建AIDL接口#xff1a;
interface On…Android进程间通信经常会使用AIDL简单方便但是数据量有限制超过一定值会报错 E !!! FAILED BINDER TRANSACTION !!! (parcel size 2073744) 可以通过使用AIDLMemoryFile传递大数据 新建AIDL接口
interface OnFileListener{/*** Demonstrates some basic types that you can use as parameters* and return values in AIDL.*/void onFile(in ParcelFileDescriptor file);
}添加监听接口 void addFileListener(OnFileListener listener);服务端发送数据 MemoryFile imageFile new MemoryFile(System.currentTimeMillis()image.data,image.length);imageFile.writeBytes(image,0,0,image.length);ParcelFileDescriptor pfd getParcelFileDescriptor(imageFile);if (pfd!null){listener.sendFile(pfd);}fun getParcelFileDescriptor(memoryFile: MemoryFile): ParcelFileDescriptor? {return try {val method: Method MemoryFile::class.java.getDeclaredMethod(getFileDescriptor)method.setAccessible(true)val fd: FileDescriptor method.invoke(memoryFile) as FileDescriptorParcelFileDescriptor.dup(fd)} catch (e: Exception) {e.printStackTrace()null}}客户端接收数据 service.addFileListener(new OnFileListener.Stub() {Overridepublic void onFile(ParcelFileDescriptor pfd) throws RemoteException {try {FileInputStream fis new FileInputStream(pfd.getFileDescriptor());ByteArrayOutputStream bos new ByteArrayOutputStream();byte[] buf new byte[1920*1080];int len;while ((len fis.read(buf)) ! -1) {bos.write(buf, 0, len);} bos.close();fis.close();pfd.close();}catch (Exception e){e.printStackTrace();}}});实测实时传递Camera数据比较流畅