Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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_Percentage_Progress - Fatal编程技术网

Java Android上传图像进度条

Java Android上传图像进度条,java,android,percentage,progress,Java,Android,Percentage,Progress,我试图找到一种方法来显示上传文件的进度条和百分比。我需要添加一个进度条和文件的传输百分比 这是我的密码。它正在传输文件,但没有进度条 package com.example.christian.progressbar5; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.provider.M

我试图找到一种方法来显示上传文件的进度条和百分比。我需要添加一个进度条和文件的传输百分比

这是我的密码。它正在传输文件,但没有进度条

package com.example.christian.progressbar5;

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    ImageView ivImage;
    Button btnUpload;
    ProgressBar progressBar;
    EditText etFilename;
    final int GALLERY_REQUEST = 38473;
    Bitmap bitmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etFilename = (EditText) findViewById(R.id.etFilename);
        ivImage = (ImageView) findViewById(R.id.ivImage);
        btnUpload = (Button) findViewById(R.id.btnUpload);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);


        ivImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(intent, GALLERY_REQUEST);
            }
        });

        btnUpload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                uploadImage();
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode == RESULT_OK) {
            if(requestCode == GALLERY_REQUEST){
                Uri uri = data.getData();
                try {
                    bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
                    ivImage.setImageBitmap(bitmap);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    private void uploadImage()
    {
        final String filename = etFilename.getText().toString();
        RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
        String URL = "http://inventsystem.esy.es/uploadimage2.php";
        Bitmap resized = getResizedBitmap(bitmap, 500);
        final String photo = ImageToString(resized);

        if(bitmap == null || bitmap.equals("")){
            Toast.makeText(this, "No Image", Toast.LENGTH_SHORT).show();
            return;
        }

        if(filename.equals("")){
            Toast.makeText(this, "What's the filename?", Toast.LENGTH_SHORT).show();
            return;
        }

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Toast.makeText(MainActivity.this, "Image has been Uploaded", Toast.LENGTH_SHORT).show();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(MainActivity.this, "Something went wrong...", Toast.LENGTH_SHORT).show();
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("image", photo);
                params.put("name", filename);
                return params;
            }
        };
        queue.add(stringRequest);
    }

    private String ImageToString(Bitmap bitmap)
    {
        ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArray);
        byte[] imgBytes = byteArray.toByteArray();
        return Base64.encodeToString(imgBytes,Base64.DEFAULT);
    }
    public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
        int width = image.getWidth();
        int height = image.getHeight();

        float bitmapRatio = (float)width / (float) height;
        if (bitmapRatio > 1) {
            width = maxSize;
            height = (int) (width / bitmapRatio);
        } else {
            height = maxSize;
            width = (int) (height * bitmapRatio);
        }
        return Bitmap.createScaledBitmap(image, width, height, true);
    }
}
package com.example.christian.progressbar5;
导入android.content.Intent;
导入android.graphics.Bitmap;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.MediaStore;
导入android.support.v7.app.AppActivity;
导入android.util.Base64;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.ProgressBar;
导入android.widget.Toast;
导入com.android.volley.AuthFailureError;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.StringRequest;
导入com.android.volley.toolbox.volley;
导入java.io.ByteArrayOutputStream;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
公共类MainActivity扩展了AppCompatActivity{
图像视图;
按钮btnUpload;
ProgressBar ProgressBar;
编辑文本文件名;
最终int画廊_请求=38473;
位图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etFilename=(EditText)findViewById(R.id.etFilename);
ivImage=(ImageView)findViewById(R.id.ivImage);
btnUpload=(按钮)findViewById(R.id.btnUpload);
progressBar=(progressBar)findViewById(R.id.progressBar);
ivImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(Intent.ACTION\u PICK、MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI);
startActivityForResult(意向、画廊申请);
}
});
btnUpload.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
上传图像();
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(resultCode==RESULT\u OK){
if(requestCode==GALLERY\u请求){
Uri=data.getData();
试一试{
位图=MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
设置图像位图(位图);
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}
私有void uploadImage()
{
最终字符串文件名=etFilename.getText().toString();
RequestQueue=Volley.newRequestQueue(MainActivity.this);
字符串URL=”http://inventsystem.esy.es/uploadimage2.php";
位图大小=getResizedBitmap(位图,500);
最终字符串照片=ImageToString(调整大小);
if(位图==null | |位图.equals(“”){
Toast.makeText(这个“无图像”,Toast.LENGTH_SHORT).show();
返回;
}
if(filename.equals(“”){
Toast.makeText(这是“文件名是什么?”,Toast.LENGTH_SHORT.show();
返回;
}
StringRequest StringRequest=new StringRequest(Request.Method.POST,URL,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
Toast.makeText(MainActivity.this,“图像已上载”,Toast.LENGTH_SHORT.show();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(MainActivity.this,“出错了…”),Toast.LENGTH_SHORT.show();
}
}){
@凌驾
受保护的映射getParams()引发AuthFailureError{
Map params=新的HashMap();
参数放置(“图像”,照片);
参数put(“名称”,文件名);
返回参数;
}
};
添加(stringRequest);
}
私有字符串ImageToString(位图)
{
ByteArrayOutputStream byteArray=新建ByteArrayOutputStream();
压缩(bitmap.CompressFormat.JPEG,100,byteArray);
字节[]imgBytes=byteArray.toByteArray();
返回Base64.encodeToString(imgBytes,Base64.DEFAULT);
}
公共位图getResizedBitmap(位图图像,int maxSize){
int width=image.getWidth();
int height=image.getHeight();
浮点位图比率=(浮点)宽度/(浮点)高度;
如果(位图比率>1){
宽度=最大尺寸;
高度=(int)(宽度/位图比率);
}否则{
高度=最大尺寸;
宽度=(int)(高度*位图比率);
}
返回位图.createScaledBitmap(图像、宽度、高度、真值);
}
}

您可以使用VolleyPlus而不是Volley来添加此功能

jsonRequest.setOnProgressListener(new Response.ProgressListener() {
            @Override
            public void onProgress(long transferredBytes, long totalSize) {
                int percentage = (int) ((transferredBytes / ((float) totalSize)) * 100);

            }
        });
这里有一个很好的代码snipplet如何实现:

试试这个嗨,我该在哪里应用代码呢,先生?凌空二号打得很好。。但是我恐怕不知道把jsonRequest.setOnProgressListener放在哪里。。请给我一个提示。谢谢你,赫里斯托!您应该将它放在StringRequest构造函数和将其添加到que之间。(在此之前:queue.add(stringRequest))