Android从VideoView获取视频源路径
问题描述:
我有VideoView实例。我需要知道它的视频源路径。Android从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();
}
}
}
如何获得视频源路径弗朗视频对象?
答
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版本中发生变化。
答
可以在VideoView
覆盖setVideoUriMethod
,如果你不喜欢使用这样的私有方法:
public class MyVideoView extends VideoView
{
Uri uri;
@Override
public void setVideoURI (Uri uri)
{
super.setVideoURI(uri);
this.uri = uri;
}
}
现在,您可以根据需要访问videoview的URI。希望有所帮助。
+0
在我看来,这是更好的答案。 Tomik使用Reflection的答案有效,但未来可能会中断(在不同API级别对Android SDK的更改)。过去我一直被这个问题困住。 – dell116
答
另一种替代方法是在视图的标记上设置视频Uri /路径并稍后检索。
当你玩/当你要检查什么打
String pathOfCurrentVideoPlaying = (String)videoView.getTag();
只要记住,如果使用的适配器,以清除标签开始
videoView.setVideoPath(localPath);
videoView.setTag(localPath);
。
Tomik,非常感谢!这真的很有趣的解决方案。可惜的是VideoView没有这个领域的公共获取者 – ihrupin
你应该得到某种奖励。做得很好。 –