2015-02-16 1 views
0

Возможно, я использовал неправильные теги поиска, но здесь он идет. В приложении, которое я разрабатываю, пользователь может загружать фотографии и видео.Как воспроизвести видео от контент-провайдера

Это посредством записи или галереи. В настоящее время я пытаюсь показать видео, которое только что записал пользователь. Я беру Uri из Intent.getData() после намерения с MediaStore.ACTION_VIDEO_CAPTURE.

общественного

void getCameraVideo() { 
     Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
     if (takeVideoIntent.resolveActivity(ctx.getPackageManager()) != null) { 
       ctx.startActivityForResult(takeVideoIntent, FETCHER_VIDEOCAMERA); 
     } else { 
      Toast.makeText(ctx, Language.translate("error_phone_has_no_camera_app"), Toast.LENGTH_LONG).show(); 
      ErrorClass.log("Tried to take video, but phone has no camera."); 
     } 
    } 

Так я это содержание Uri к моему видео, как теперь я должен получить около в игру это видео в VideoView? Кажется, я не могу найти достойного решения этой проблемы.

Я просто пробовал это в действии, где я показываю видео, но это просто приводит к черному VideoView.

view = new VideoView(activity); 
((VideoView) view).setVideoURI(uri); 
((VideoView) view).start(); 

Я уверен, что кто-то решил это уже, я просто не могу найти его.

+0

Добавить еще код ... – Amitsharma

+0

Почему бы не использовать тот же 'uri', который вы передаете с намерением, когда начинаете перекодировку? –

+0

Я использую uri. Я получаю результат, я не пропускаю никаких ури. –

ответ

1

После попробовать следующие

view.setVideoURI(Uri.parse(path)); 
view.requestFocus(); 
view.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 
     //start playing here 
     mp.start(); 
     } 
} 

Надеется, что это помогает вам.

+0

Это, кажется, решение в моем случае. вероятно, потому, что представление в моем случае еще не началось с начала. –

+0

Yup, просто прочитайте документы VideoView и укажите следующее: [OnPreparedListener] Зарегистрируйте обратный вызов, который будет вызываться, когда загружен и готов к работе мультимедийный файл. Это объясняет ваше предыдущее заявление, в котором вы сказали, что видели видео на минуту раньше. В какой-то момент видео должно было быть загружено быстрее. –

0

Возможно, вам потребуется позвонить в videoView.play(), чтобы узнать, соответствует ли ваш uri.

+0

Я попробую, что было бы глупо –

+1

Нет способа воспроизведения() для VideoView. Как я упоминал в ответе выше, он называется start() –

1

Предоставление фрагмента кода поможет нам разобраться в вашей проблеме, но здесь.

Поскольку вы реализуете это в своей деятельности, вы должны иметь доступ к VideoView из макета. Поэтому я предполагаю, что вы должны сделать что-то вроде этого ...

String video_url = "some_url"; 
VideoView videoView = (VideoView)findViewById(R.id.video_view_id); 
MediaController controls = new MediaController(YourActivityClassName.this); 
videoView.setMediaController(controls); 
videoView.setVideoURI(Uri.parse(video_url)); 
videoView.start(); 

Надеюсь, это должно вам помочь. Если нет, сообщите нам, и мы сможем помочь вам дальше.

P.S. Проверьте андроид документы для получения дополнительной информации о VideoView: http://developer.android.com/reference/android/widget/VideoView.html

+0

Fyi, я сказал, что получил контент Uri из намерения, у меня нет таких строк, которые ссылаются на удаленный или локальный видеофайл. У меня нет проблем с пониманием VideoView, просто не знаю, как правильно загрузить это видео. –

+0

Хм, какие исходные данные в объекте Uri вы извлекаете из намерения? Может быть, это может помочь сузить проблему. –

+0

Я не совсем уверен, но всего минуту назад я действительно увидел видео. Но в целом черный. Я в замешательстве. Я дам вам знать;) –