Подскажите метод в java android, который бы открывал и воспроизводил видеофайлы в моем плеере?

209
09 января 2018, 14:01

Здравствуйте! Я начинающий программист в области java на андроид. пишу сейчас приложение на андроид - видеоплеер. Вообщем столкнулся с таким проблемой, неделю уже мучаюсь. Меню создан, метод, который находит видеофайлы есть, но когда нажимаю на файл, плеер сворачивается. Нужна помощь в написании метода, который бы воспроизводил выбранный файл в моем плеере т.е. на данном этапе в своем плеере, чтобы просмотреть галерею файлов, но при нажатии на файл приложение сворачивается.

    public class VideoPlayer extends AppCompatActivity {
VideoView SMPlayer;
private static final int READ_REQUEST_CODE = 42;
private static final String TAG = "VideoPlayer";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_video_player);
    VideoView videoView = (VideoView) findViewById(R.id.SMPlayer);

    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(mediaController);
    videoView.requestFocus();
    videoView.start();

}

//** метод продолжает видео при повороте экрана
int videoPosition = 0;
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    videoPosition = SMPlayer.getCurrentPosition();
    outState.putInt("Position", videoPosition);
    Log.d("My_Log", "onSaveInstanceState = " + videoPosition);
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    videoPosition = savedInstanceState.getInt("Position");
    Log.d("My_Log", "onRestoreInstanceState = " + videoPosition);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.smmenu, menu);
    return true;
}
//** обработка нажатий
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if(id==R.id.action_open){
        Intent openFileIntent= null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            openFileIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        }
        assert openFileIntent != null;
        openFileIntent.addCategory(Intent.CATEGORY_OPENABLE);
        openFileIntent.setType("video/*");
        startActivityForResult(openFileIntent,READ_REQUEST_CODE);
    }
    return super.onOptionsItemSelected(item);
}
protected void onActivityResult(int reguestCode, int resultCode, int showVideo, Intent data){
    if(reguestCode== READ_REQUEST_CODE && resultCode == Activity.RESULT_OK){
        Uri currentOpenFileUri = null;
        if(data != null){
            currentOpenFileUri = data.getData();
            assert currentOpenFileUri != null;
            Log.i(TAG, "Uri: " + currentOpenFileUri.toString());
            showVideo(Uri);
        }
    }

}
READ ALSO
Не запускается команда javac

Не запускается команда javac

подскажите, делаю запуск через такую запись: C:\Users\user>javac Examplejava

180
Picasso.with(this) проблема с этой строкой

Picasso.with(this) проблема с этой строкой

Picassowith(this) работает в основном классе а в созданном что писать на место this?

124
Как получить местоположение на Android?

Как получить местоположение на Android?

Google уже сто раз меняет способ получения местоположения, прошариф весь SO и попробовав миллион кода, все без результатно

151
Ошибка при выводе в TextPane Java

Ошибка при выводе в TextPane Java

Когда я выбираю один из элементов JComboBox происходит ошибка в строке

140