Android Kotlin - Intent createChooser - 从缓存/内存中共享 VideoView / MediaPlayer 的视频文件
Android Kotlin - Intent createChooser - share the video file of VideoView / MediaPlayer from cache / memory
var medPlay: MediaPlayer
holder.vidPlayer.setVideoPath(fileUrl)
holder.vidPlayer.setOnPreparedListener { mp ->
medPlay = mp
}
与其再次单独下载视频进行分享,不如分享已经加载到 VideoView / MediaPlayer 中的文件,然后:
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("video/*");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Hey this is the video text");
sharingIntent.putExtra(Intent.EXTRA_STREAM,uriFromVideoView);
startActivity(Intent.createChooser(sharingIntent,"Share Video");
这可能吗?我也会接受替代方案/建议
Is that possible?
没有。对于初学者来说,并非所有类型的流在物理上都是可行的。除此之外,VideoView
/MediaPlayer
不会将媒体写入磁盘。它们分块下载,以最大限度地减少 RAM 消耗,并将其仅用于播放。
I would also accept alternatives / suggestions
自己下载视频,例如使用 OkHttp。将下载的副本同时用于 setVideoPath()
和 ACTION_SEND
(后者很可能通过 FileProvider
)。请注意,这仅适用于作为实际文件的视频流(例如,不是一些直播),并且需要先下载整个视频。
var medPlay: MediaPlayer
holder.vidPlayer.setVideoPath(fileUrl)
holder.vidPlayer.setOnPreparedListener { mp ->
medPlay = mp
}
与其再次单独下载视频进行分享,不如分享已经加载到 VideoView / MediaPlayer 中的文件,然后:
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("video/*");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Hey this is the video text");
sharingIntent.putExtra(Intent.EXTRA_STREAM,uriFromVideoView);
startActivity(Intent.createChooser(sharingIntent,"Share Video");
这可能吗?我也会接受替代方案/建议
Is that possible?
没有。对于初学者来说,并非所有类型的流在物理上都是可行的。除此之外,VideoView
/MediaPlayer
不会将媒体写入磁盘。它们分块下载,以最大限度地减少 RAM 消耗,并将其仅用于播放。
I would also accept alternatives / suggestions
自己下载视频,例如使用 OkHttp。将下载的副本同时用于 setVideoPath()
和 ACTION_SEND
(后者很可能通过 FileProvider
)。请注意,这仅适用于作为实际文件的视频流(例如,不是一些直播),并且需要先下载整个视频。