Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android改型中上载文件时如何显示进度条_Java_Android_Http Post_Retrofit_Retrofit2 - Fatal编程技术网

Java 在android改型中上载文件时如何显示进度条

Java 在android改型中上载文件时如何显示进度条,java,android,http-post,retrofit,retrofit2,Java,Android,Http Post,Retrofit,Retrofit2,我正在开发一款使用改型的android应用程序。我想上传任何类型的文件到我的服务器参数。例如,在我的应用程序中有文本字段,如电子邮件和文件上载字段。当我输入字段并单击提交按钮时。它显示上载文件并将文件和数据发送到服务器的百分比。当上传过程进行时,它希望显示完成文件的百分比。怎么可能呢? 有没有参考网站或教程? 请帮助我?创建此界面 public interface ProgressListener { void transferred(long num);

我正在开发一款使用改型的android应用程序。我想上传任何类型的文件到我的服务器参数。例如,在我的应用程序中有文本字段,如电子邮件和文件上载字段。当我输入字段并单击提交按钮时。它显示上载文件并将文件和数据发送到服务器的百分比。当上传过程进行时,它希望显示完成文件的百分比。怎么可能呢? 有没有参考网站或教程? 请帮助我?

创建此界面

public interface ProgressListener {
                void transferred(long num);
            }
这个班呢

    public class CountingTypedFile extends TypedFile {

        private static final int BUFFER_SIZE = 4096;

        private final ProgressListener listener;

        public CountingTypedFile(String mimeType, File file, ProgressListener listener) {
            super(mimeType, file);
            this.listener = listener;
        }

        @Override
        public void writeTo(OutputStream out) throws IOException {

            byte[] buffer = new byte[BUFFER_SIZE];
            FileInputStream in = new FileInputStream(super.file());
            long total = 0;

            try {

                int read;
                while ((read = in.read(buffer)) != -1) {

                    total += read;
                    out.write(buffer, 0, read);

                    try{
                        if (this.listener != null)
                            this.listener.transferred(total);
                    }catch (Exception e){

                    }

                }
            } finally {
                in.close();
            }
        }
    }
定义此方法

@POST("/{path}")
    public JsonObject makeRequestForAttachmentsUpload(@Path(value = "path", encode = false) String path, @Body MultipartTypedOutput multipartTypedOutput);
然后像这样调用upload方法

    RestClient restClient = new RestClient();
    ApiService apiService = restClient.getApiService();

MultipartTypedOutput multipartTypedOutput = new MultipartTypedOutput();
    // add and string parameters            
    for (String key : requestParams.keySet()) {
                    multipartTypedOutput.addPart(key, new TypedString(requestParams.get(key)));
                }

    // add attchments
                multipartTypedOutput.addPart(attachmentName, new CountingTypedFile(attachmentType, new File(attachmentPath), listener));
apiService.makeRequestForAttachmentsUpload(requestName, multipartTypedOutput);
并通过定义此侦听器来侦听进度

listener = new DPAPIService.ProgressListener() {
                @Override
                public void transferred(long num) {
                    publishProgress(((num / (float) fileSize)));
                }
        };

谢谢你,沙比尔。我是新装修的。那么你能告诉我android studio的gradle代码是什么吗?你可以在这里阅读所有的细节@shabir你的代码使用的是旧的改装。TypedFile不支持新的改装。我想要新的改装代码。