如何在其他活动中使用视频视图播放录制的视频



我有两个活动主要活动.java和视频视图活动.java我正在录制视频,然后创建位图并将其存储在主活动的数组列表中.java然后我将视频文件路径(即录制的视频)传递给VideoViewActivity,然后我正在尝试在VideoView中播放视频。 当我单击缩略图时,它应该在VideoViewActivity中播放视频,但是当我单击缩略图时,应用程序崩溃了。我在哪里做错了什么??请帮帮我..

主活动

 private List<Bitmap> bitMapsAvailable = new ArrayList<>();//Bitmaps of video files 
  private List<String> bitMapsFilePath = new ArrayList<>();//video files path

private void showThumbnails() {
    LinearLayout layout = (LinearLayout) findViewById(R.id.thumbnails);
    bitMapIndex = 0;
    if (layout.getChildCount() > 0) {
        layout.removeAllViews();
    }
    for (Bitmap eachBitMap : bitMapsAvailable) {
        bitMapIndex++;
        ImageView thumb = new ImageView(this);
        thumb.setId(new Integer(bitMapIndex+ 17));
        thumb.setLayoutParams(new android.view.ViewGroup.LayoutParams(100, 80));
        thumb.setImageBitmap(eachBitMap);
        thumb.setOnClickListener(previewThumb(thumb));
        layout.addView(thumb);
        CheckBox deleteCheckBox = new CheckBox(this);
        deleteCheckBox.setId(new Integer(bitMapIndex));
        deleteCheckBox.bringToFront();
        deleteCheckBox.setOnClickListener(deleteRelatedThumbnail(deleteCheckBox));
        layout.addView(deleteCheckBox);
        CheckBox saveCheckBox = new CheckBox(this);
        saveCheckBox.setId(new Integer(bitMapIndex + 31));
        saveCheckBox.bringToFront();
        saveCheckBox.setOnClickListener(saveRelatedThumbnail(saveCheckBox));
        layout.addView(saveCheckBox);
        String("check").concat(new Integer(checkTagNumber++).toString()));
    }
}
View.OnClickListener previewThumb(final ImageView imageview) {
    return new View.OnClickListener() {
        public void onClick(View arg0) {
            int index = imageview.getId()-18;

            Intent myIntent = new Intent(MainActivity.this,
                    VideoViewActivity.class);
              findViewById(R.id.VideoView);
            Bundle bundle = new Bundle();
            //Add your data to bundle
            bundle.putString("url", bitMapsFilePath.get(index));
            myIntent.putExtras(bundle);
            startActivity(myIntent);

      }
    };
}

视频视图活动

public class VideoViewActivity extends Activity {
    public VideoView videoview;
    Bundle bundle = getIntent().getExtras();
    String videoURL = bundle.getString("url");
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.videoview_main);
        videoview = (VideoView) findViewById(R.id.VideoView);
        Toast.makeText(this, videoURL, Toast.LENGTH_SHORT).show();
        try {
            // Start the MediaController
            MediaController mediacontroller = new MediaController(
                    VideoViewActivity.this);
            mediacontroller.setAnchorView(videoview);
            // Get the URL from String VideoURL
            Uri video = Uri.parse(videoURL);
            videoview.setMediaController(mediacontroller);
            videoview.setVideoURI(video);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        videoview.requestFocus();
        videoview.setOnPreparedListener(new OnPreparedListener() {
            // Close the progress bar and play the video
            public void onPrepared(MediaPlayer mp) {
                videoview.start();
            }
        });
    }
}
    Bundle bundle = getIntent().getExtras();
    String videoURL = bundle.getString("url");

VideoViewActivity onCreate()方法内传输这两行

在 onCreate() 之前无法获得 Intent() -- 此时根本没有可用的 Intent。将代码更改为如下所示的内容:

public class VideoViewActivity extends Activity {
public VideoView videoview;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.videoview_main);
    videoview = (VideoView) findViewById(R.id.VideoView);
    Toast.makeText(this, videoURL, Toast.LENGTH_SHORT).show();
    Bundle bundle = getIntent().getExtras();
    String videoURL = bundle.getString("url");
    try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(
                VideoViewActivity.this);
        mediacontroller.setAnchorView(videoview);
        // Get the URL from String VideoURL
        Uri video = Uri.parse(videoURL);
        videoview.setMediaController(mediacontroller);
        videoview.setVideoURI(video);
    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    }
    videoview.requestFocus();
    videoview.setOnPreparedListener(new OnPreparedListener() {
        // Close the progress bar and play the video
        public void onPrepared(MediaPlayer mp) {
            videoview.start();
        }
    });
}

最新更新