Android 通过Intent传递对原始视频文件的引用,并在其他活动中使用它

Android 通过Intent传递对原始视频文件的引用,并在其他活动中使用它,android,reference,android-intent,parcelable,Android,Reference,Android Intent,Parcelable,在我当前的工作代码中,我从显示一些缩略图的屏幕上传递图像的引用。选择缩略图后,将存储图像id,然后在新活动中使用。现在,当选择缩略图时,我想存储图像id和相关视频文件的引用 选择缩略图后,将打开一个新的“活动”,其中显示带有播放按钮的完整图像。当选择播放按钮时,我希望它调用一个新的活动,该活动将根据缩略图屏幕上保存的参考播放视频。我的一切工作,除了让视频播放使用的参考。当我硬编码文件名时,视频将播放 下面是我的一些代码片段 从缩略图类: public void onClick(View v) {

在我当前的工作代码中,我从显示一些缩略图的屏幕上传递图像的引用。选择缩略图后,将存储图像id,然后在新活动中使用。现在,当选择缩略图时,我想存储图像id和相关视频文件的引用

选择缩略图后,将打开一个新的“活动”,其中显示带有播放按钮的完整图像。当选择播放按钮时,我希望它调用一个新的活动,该活动将根据缩略图屏幕上保存的参考播放视频。我的一切工作,除了让视频播放使用的参考。当我硬编码文件名时,视频将播放

下面是我的一些代码片段

从缩略图类:

public void onClick(View v) {
    Intent fullImage = new Intent(standard_main.this, full_image.class);
    Intent playVideo = new Intent(standard_main.this, video.class);

    switch(v.getId()){

    case R.id.img_standard1:
        fullImage.putExtra("Full", R.drawable.img_standard1);
        playVideo.putExtra("VideoFile", R.raw.standard); // added to try to reference video for future use
        startActivity(fullImage);
        break;
从完整图像类:

if (x >= leftPlayPoint && x < rightPlayPoint && y >= topPlayPoint && y < bottomPlayPoint){
            startActivity(new Intent("com.example.PLAYVIDEO"));
我想用vidID来代替R.raw.standard

如果我理解正确,我就不能使用vidID,因为它是一个Int,Uri.parse需要一个字符串。我尝试使用toString()将Int转换为字符串,但我怀疑这只是将实际的数字转换为字符串,并引入了实际的文件名。我还尝试了String.valueOf(vidID)

我认为Parcelabel可能会在某个地方使用,但我不知道如何使用它。我认为的另一个选择是将所有视频名称存储在一个数组中,并以某种方式使用它在video.java文件上动态创建文件名


我会继续搜索,但非常感谢任何帮助。

这是一种方法。也许有一个更简单的方法,但我不知道

一些示例代码

int myResourceId = getIntent().getIntExtra("AudioFile", 0);

StringBuilder sb = new StringBuilder();
// get full resource path, e.g. res/raw/audio.mp3
sb.append(getResources().getString(myResourceId));
// delete res folder
sb.delete(0, sb.indexOf("/"));
// delete file extension
sb.delete(sb.indexOf(".mp3"), sb.length());
// insert package at beginning
sb.insert(0, "android.resource://com.example");

Uri uri = Uri.parse(sb.toString());

在我修改了一点代码后,这一切都很顺利。我的屏幕顺序是:缩略图->完整图像->视频。我最初是在缩略图类中保存视频文件的引用。我猜因为full_image类介于两者之间,所以它删除了引用。相反,我将这两个引用都传递给full_image类,然后将视频引用再次传递给video类。(我为将来的用户输入了这个解释)。再次感谢。
int myResourceId = getIntent().getIntExtra("AudioFile", 0);

StringBuilder sb = new StringBuilder();
// get full resource path, e.g. res/raw/audio.mp3
sb.append(getResources().getString(myResourceId));
// delete res folder
sb.delete(0, sb.indexOf("/"));
// delete file extension
sb.delete(sb.indexOf(".mp3"), sb.length());
// insert package at beginning
sb.insert(0, "android.resource://com.example");

Uri uri = Uri.parse(sb.toString());