Сохранить изображение и MP3 из галереи во внутреннюю директорию хранения Android - PullRequest
0 голосов
/ 23 октября 2018

Итак, я делаю университетский проект, в рамках которого я разрешаю пользователю выбрать изображение из камеры / галереи, а затем также выбрать mp3.Я хотел бы взять эти два выбранных файла и сохранить их во внутреннем каталоге хранения с тем же именем (будет отличаться только расширение .mp3 / .jpg)

Мне удалось получить код для создания папкиа также получить изображение с камеры / галереи, но я не могу решить, как сохранить его во внутреннем каталоге хранения или как получить mp3 таким же образом.

Код для создания папки

try{ File folder = new File(Environment.getExternalStorageDirectory() + "/InkousticMedia");
        boolean success = true;
        if (!folder.exists()) {
            success = folder.mkdir();
        }


    }catch (Exception e){
        Log.e("MODEL", "ERROR: " + e.toString());
    }

Код для получения изображения из MediaStore:

    public class SaveTattooActivity extends AppCompatActivity {

    public void getPhoto()
    {
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent,1);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if(requestCode == 1)
        {
            if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
            {
                getPhoto();
            }
        }
    }

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

        if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
        {
            requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
        }else
        {
            getPhoto();
        }



    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == 1 && requestCode == RESULT_OK && data != null)
        {
            Uri selectedImage = data.getData();

            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);

                ImageView imageView = (ImageView) findViewById(R.id.imageView);
                imageView.setImageBitmap(bitmap);


            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Я рассмотрел другие похожие вопросы по стеку, но все они сильно отличаются друг от друга, и нет конкретного ответа, на который я могу ответитьКажется, получается, что я могу сохранить как mp3, так и изображение в каталог.

1 Ответ

0 голосов
/ 23 октября 2018

Это код, который я использовал для сохранения изображения, проверьте этот репозиторий github https://github.com/Rawkush/Status-Saver.

                File f1,f2;
                f1 = new File(uri.toString());
                String fname = f1.getName();
                f2 = new File(Environment.getExternalStorageDirectory()+"/YOUR_FOLDER/");
                f2.mkdirs();

                try {
                    FileUtils.copyFileToDirectory(f1,f2);
                    ContentValues values =new ContentValues();
                    values.put(MediaStore.Images.Media.DATE_TAKEN,System.currentTimeMillis());
                    values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg");
                    values.put(MediaStore.MediaColumns.DATA,f2.toString()+"/"+fname);
                    getContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
                } catch (IOException e) {
                    e.printStackTrace();
                    Toast.makeText(getContext(),e.getMessage(),Toast.LENGTH_LONG).show();
                }finally {
                    Toast.makeText(getContext(),"Saved",Toast.LENGTH_LONG).show();
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...