отправка audio на сервер (java android, volley)

181
13 августа 2021, 05:40

Я Java изучаю только месяц и никак не могу понять, как правильно отправить audio, файл кодируется в base64 не верно и файл на сервере не открывается. Как это сделать правильно?

  fileTextAdd.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent1 = new Intent();
                intent1.setType("audio/*");
                intent1.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(intent1, 3);
            }
        });

    @RequiresApi(api = Build.VERSION_CODES.Q)
    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 2 && resultCode == RESULT_OK && data != null){
            Uri path = data.getData();
            try {
                bitmap_add = MediaStore.Images.Media.getBitmap(getContext().getContentResolver(), path);
                imageViewAdd.setImageBitmap(bitmap_add);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else if(requestCode == 3 && resultCode == RESULT_OK && data != null){
            pathUri = data.getData();
            try {
                if(pathUrl.getScheme().equals("file")) {
                    fileName = pathUrl.getLastPathSegment();
                }else {
                    Cursor cursor = null;
                    try {
                        cursor = getContext().getContentResolver().query(pathUrl, new String[]{
                                MediaStore.Files.FileColumns.DISPLAY_NAME
                        }, null, null, null);
                        if (cursor != null && cursor.moveToFirst()) {
                            fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.DISPLAY_NAME));
                        }
                        fileTextAdd.setText(fileName);
                    } finally {
                        if (cursor != null) cursor.close();
                    }
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }


   private String EncodeFile(Uri contentURI){
        String result = "";
        try {
            InputStream inputStream = getContext().getContentResolver().openInputStream(contentURI);
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder stringBuilder = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line);
            }
            inputStream.close();
            String bb = stringBuilder.toString();
            byte[] bytes = bb.getBytes();
            result = Base64.encodeToString(bytes, Base64.DEFAULT);
        }catch (IOException ex){
            ex.printStackTrace();
        }
        return result;
    }

 private void UpLoadImage() {
        final ProgressDialog dialog1 = new ProgressDialog(getActivity());
        dialog1.setMessage("Loading...");
        dialog1.show();
        StringRequest stringRequest = new StringRequest(Request.Method.POST, new urlWeb().AddFileResourse,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        dialog1.hide();
                        Toast.makeText(getContext().getApplicationContext(), response, Toast.LENGTH_LONG).show();
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                dialog1.hide();
                Toast.makeText(getContext().getApplicationContext(), error.toString(), Toast.LENGTH_LONG).show();
            }
        }) {
            @RequiresApi(api = Build.VERSION_CODES.O)
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("user", getStringPrefs("userToken"));
                params.put("image", EncodeFile(bitmap_add));
                params.put("audio", EncodeFile(pathUri));
                params.put("name", editNameAdd.getText().toString());
                params.put("name_file", fileName);
                return params;
            }
        };
        MySingle.getInstance(getActivity()).addToRequestQue(stringRequest);
    }
READ ALSO
Как правильно работать с триггером таблицы базы Oracle при использовании Spring Data

Как правильно работать с триггером таблицы базы Oracle при использовании Spring Data

Для автоматической генерации id записи в базу oracle, используется встроенный триггер, ранее использовалась последовательность

178
Скрыть элемент css при клике на гамбургер

Скрыть элемент css при клике на гамбургер

как скрыть #fp-nav, когда гамбургер активен, и показать снова, когда гамбургер закрыт циклично? Я набросал немного и сделал функцию, она выполняет...

199
Google Maps маркеры с одинаковыми координатами

Google Maps маркеры с одинаковыми координатами

Не могу решить проблему с маркерами на картеС сервера приходят объекты с одинаковыми координатами

137