2011-11-25 49 views
0

我尝试了一切,但无法使用VideoView类播放视频。这里是我的代码:使用VideoView播放mp4资源

String fileName = "android.resource://"+ getPackageName() +"/raw/test"; 

VideoView vv = (VideoView) this.findViewById(R.id.videoView); 
vv.setVideoURI(Uri.parse(fileName)); 
vv.start(); 

视频是MP4格式和存在于raw文件夹中。

该文件的链接是否有误?

我会很高兴的任何帮助。

回答

0

我在代码中看不到任何明显的错误。

这里是我会做什么来追踪这个bug:

  • 确保MP4文件以及形成时间和播放与其他玩家
  • 从日志猫得到了玩家的代码错误
  • 尝试播放同一视频但SD卡

更新您的文章在这里与新的信息

祝你好运!

2

,我建议你将以下代码,其中我运行我的应用程序成功

的代码如下:

XML文件:

<Button 
    android:id="@+id/btnVideoGallery" 
    android:layout_width="75dp" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="15dp" 
    android:text="@string/gallery" /> 

<Button 
    android:id="@+id/btnCancel" 
    android:layout_width="120dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/btnVideoGallery" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="22dp" 
    android:text="@string/cancel" /> 

<TextView 
    android:id="@+id/lblDisplayImage" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/btnCancel" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="10dp" 
    android:text="@string/below_this_text_video_will_be_displayed" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="#000000" 
    android:textSize="13dp" /> 

<VideoView 
    android:id="@+id/vvDisplayVideo" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/lblDisplayImage" 
    android:layout_marginTop="15dp" /> 

Java文件:

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.MediaController; 
import android.widget.VideoView; 

public class VideoActivity extends Activity { 

    private Button btnVideoGallery,btnCancel; 
    private VideoView vvDisplayVideo; 
    /** The Constant PICK_VIDEO. */ 
    private static final int PICK_VIDEO=1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video_options); 

     btnVideoGallery=(Button)findViewById(R.id.btnVideoGallery); 
     vvDisplayVideo=(VideoView)findViewById(R.id.vvDisplayVideo); 
     btnCancel=(Button)findViewById(R.id.btnCancel); 
     vvDisplayVideo.setVisibility(View.GONE); 

     btnVideoGallery.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       Intent video=new Intent(); 
       video.setAction(Intent.ACTION_PICK); 
       video.setType("video/*"); 
       startActivityForResult(video, PICK_VIDEO); 

      } 
     }); 

     btnCancel.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       Intent goStartUp=new Intent(VideoActivity.this, StartUpActivity.class); 
       goStartUp.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(goStartUp); 
       finish(); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     if (resultCode==Activity.RESULT_OK && requestCode == PICK_VIDEO) { 

      vvDisplayVideo.setVisibility(View.VISIBLE); 
      vvDisplayVideo.setVideoURI(data.getData()); 
      vvDisplayVideo.setFocusable(true); 
      MediaController mc=new MediaController(this); 
      vvDisplayVideo.setMediaController(mc); 
      Log.i("True", "Executed"); 
     } 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     // TODO Auto-generated method stub 

     Intent goStartUp=new Intent(VideoActivity.this, StartUpActivity.class); 
     goStartUp.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(goStartUp); 
     finish(); 
     return super.onKeyDown(keyCode, event); 
    } 
} 

你也可以修改清单文件,按您的使用:

<uses-feature 
     android:name="android.hardware.camera" 
     android:required="false" /> 

<application ..... 
</application> 

</manifest> 
0

这个简单的代码工作对我来说: (my_video.mp4在原文件夹和VideoView @ + id/splash)

VideoView mVideoView = (VideoView) findViewById(R.id.splash); 
Uri videoUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.my_video); 
mVideoView.setVideoURI(videoUri); 
mVideoView.start();