使用“意图选择器”时,视频会自动恢复



我有一个应用程序,它使用意图选择器打开不同的视频。因此,您可以想象用户单击列表项,其中包含许多带有视频名称的元素。

现在,事情运行良好,

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uriPath, "video/mp4");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

但是,当用户再次单击同一项目时,将显示意向选择器。选择设备中的任何视频播放器将恢复视频。

所以问题是,是否有任何标志或某种方式可以从头开始视频?

这不仅发生在视频上,而且发生在pdf上。如果 pdf 已打开并滚动到最后一页,则再次从我的应用程序打开 pdf 会打开最后一页。

 hi hardikI had a similar application to be developed where  different 

从列表视图中选择不同的项目时,应播放视频。

我尝试测试我的应用程序是否恢复视频的行为 如果从应用程序再次启动,则从上次播放的帧开始。

对我来说,它总是从头开始。我已经在 4.2.2 上对此进行了测试仅限 4.4 版本

开始视频的代码是这样的:

    Intent in = new Intent(Intent.ACTION_VIEW);
    in.setDataAndType(uripath, "video/*");
    startActivity(in);

这个问题已经在这里得到了回答 Android播放带有开始位置的视频意图,特别是在CommonsWare的这条评论中

Even if there were, they would be on a per-app basis.
If you need this level of control over the video playback,
handle the video playback yourself within your own app 
(e.g., VideoView), rather than pass control to third party apps

在 Android 的 VideoView 中查看 http://developer.android.com/reference/android/widget/VideoView.html#seekTo(int) 和播放视频

当您委托给另一个具有意图的应用程序时,您将获得所得到的结果。您应该使用视频播放器在应用程序中控制这一点,如果您可能需要 pdf 视图小部件的库。类似 http://code.google.com/p/apv/。

当您使用意图来播放视频时,实际上取决于表演应用程序如何解释和处理意图。除非代理应用程序(处理您正在触发的意图的应用程序)接受额外的参数来选择从头开始和恢复,否则您实际上无能为力。

要获得完全控制,请使用您自己的视频播放器。

使用 VideoView 解决您的问题。

private VideoView myVideoView;

VideoView有一个内置的方法start(),它将从头开始你的视频,就像这样:

 @Override
    public void onStart(){
        super.onStart();
        myVideoView.start();
    }

您也可以在onResume方法上使用myVideoView.start()。

希望这会有所帮助。 :)

我完全不确定这一点。我也同意其他观点,即被调用的应用程序有责任按照其意愿处理意图。

但是,一个疯狂的猜测是更改 uri:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
    uriPath.buildUpon()
        .appendQueryParameter("t", String.valueOf(System.currentTimeMillis()))
        .build(), 
    "video/mp4"
);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

注意:我没有你提到的问题。视频始终重新启动。

最新更新