Android从VideoView获取视频源路径

问题描述 投票:6回答:3

我有VideoView实例。我需要知道它的视频源路径。

可能吗?有谁能够帮我?

我在WebChromeClient类中的代码是:

    @Override
public void onShowCustomView(final View view, final CustomViewCallback callback) {
    super.onShowCustomView(view, callback);

    if (view instanceof FrameLayout) {
        final FrameLayout frame = (FrameLayout) view;
        if (frame.getFocusedChild() instanceof VideoView) {
            // get video view

            video = (VideoView) frame.getFocusedChild();
        }
    }
}

如何从视频对象获取视频源路径?

android android-widget video-streaming android-webview android-videoview
3个回答
21
投票

VideoView没有视频路径的吸气剂/ Uri。你唯一的机会就是使用反射。 Uri存储在private Uri mUri中。要访问它,您可以使用:

Uri mUri = null;
try {
    Field mUriField = VideoView.class.getDeclaredField("mUri");
    mUriField.setAccessible(true);
    mUri = (Uri)mUriField.get(video);
} catch(Exception e) {}

请记住,私有字段可能会在未来的Android版本中发生变化。


9
投票

如果你不喜欢使用像这样的私有方法,你可以覆盖setVideoUriMethod中的VideoView

public class MyVideoView extends VideoView 
{
    Uri uri;

    @Override
    public void setVideoURI (Uri uri)
    {
        super.setVideoURI(uri);
        this.uri = uri;
    }
}

现在,您可以根据需要访问视频的uri。希望有所帮助。


3
投票

另一种方法是在视图的标签上设置视频Uri / path并稍后检索。

当你开始/开始

videoView.setVideoPath(localPath);
videoView.setTag(localPath);

当你想检查正在播放的内容时

String pathOfCurrentVideoPlaying = (String)videoView.getTag();

如果在适配器中使用,请记住清除标签。

© www.soinside.com 2019 - 2024. All rights reserved.