Я создаю приложение для Android, которое вызывает встроенную камеру для захвата видео, а затем отображает его в предварительном просмотре.
Это код.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vid1 = (VideoView) findViewById(R.id.videoView);
btn1 = (Button) findViewById(R.id.button);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i1 = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if(i1.resolveActivity(getPackageManager()) != null) {
startActivityForResult(i1, 123);
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == 123 && resultCode == RESULT_OK) {
Log.d("hi", data.getData().getPath());
Uri myvideolink = data.getData();
vid1.setVideoURI(myvideolink);
}
}
Что происходит, data.getData()
указывает мне путь от внешнего хранилища, тогда как видео сохраняется во внутреннем хранилище, в папке DCIM. То есть лог-оператор,
Log.d("hi", data.getData().getPath());
дает мне это
/hi: /external/video/media/162872
Итак,
- Как мне избежать этого и получить правильный путь, чтобы видео отображалось в предварительном просмотре?
- Существуют ли какие-либо команды / библиотеки, с помощью которых я могу получить путь к самому последнему видео, захваченному из внутреннего хранилища DCIM? (Мне это нужно, потому что после предварительного просмотра мне также нужно отправить его на сервер)