18

我正在尝试在我的应用中播放视频。它必须被嵌入。

我浏览了“在 Android 中播放视频文件”线程。

如本讨论所述,我可以使用 VideoView 播放我的视频。但是有几个问题。

  1. 我需要全屏视频,如何将 VideoView 拉伸到全屏?这也会拉伸视频吗?

  2. 我根本不需要默认的播放/前进/停止按钮。基本上我需要连续循环播放视频。

我在这里尝试了 MediaPlayer 类,但它从未奏效。如果我的视频文件在 res/raw 目录中,字符串格式应该是什么样的?我真的不希望从 sdcard 播放视频文件。它如何与应用程序捆绑在一起?

如果这两种方法中的任何一种有效,我会过得更好。

这是我的代码:

videoHolder = new VideoView(this); 
// videoHolder = (VideoView)findViewById(R.id.videoview); 
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
videoHolder.setLayoutParams(params); 
videoHolder.setMediaController(new MediaController(this)); 
setContentView(videoHolder); 
// 
// 
//// I tested and found that it works fine for .wmv, .3gp and .mp4 
//// videoHolder.setVideoURI(Uri.parse("file:///sdcard/video.3gp")); 
videoHolder.setVideoURI(Uri.parse("res/raw/demo.3gp")); 
videoHolder.requestFocus(); 
videoHolder.start(); 

奇怪的是,评论的 url 有效(带有 sdcard 的那个)。另一个不起作用。我尝试了很多组合,从“file:// res/raw/demo.3gp”到只有“demo”。

访问文件的正确字符串是什么?

4

5 回答 5

49

无需进行任何编码即可将视频播放到全屏模式

在包含 videoview 的 xml 上应用以下布局格式,它肯定会以全屏模式播放视频。因为它正在运行我的。

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent" >
   <VideoView android:id="@+id/myvideoview"
             android:layout_width="fill_parent"
             android:layout_alignParentRight="true"
             android:layout_alignParentLeft="true"
             android:layout_alignParentTop="true"
             android:layout_alignParentBottom="true"
             android:layout_height="fill_parent">
    </VideoView>
 </RelativeLayout>

加上添加媒体控制器也将为您提供要使用的控制器。

于 2011-02-09T10:35:12.213 回答
8

我已经解决了这个问题:

1. 要移除继续/暂停按钮,请移除媒体控制器。对于循环问题OnCompletionListener,当视频到达结尾时,它会重新开始:

videoView.setOnCompletionListener(
        new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            videoView.start();
        }
        });

2.要调整视频大小,覆盖方法onMeasure()如下VideoView

public class MyVideoView extends VideoView {

        public MyVideoView(Context context) {
            super(context);
        }

        @Override
        protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
        {
             setMeasuredDimension(480,800);
        }

    }
于 2010-08-02T17:22:49.460 回答
6

我知道这个帖子已经有几个星期了,但你不必为了播放它而将视频文件复制到 SD 卡。使用以下内容,但插入您的包名称而不是“com.yourcompany.yourproject”:

videoView.setVideoURI(Uri.parse("android.resource://com.yourcompay.yourproject/" + R.raw.yourvideoresource));

于 2010-08-25T15:49:17.320 回答
4

如果你想全屏播放视频,那么只需在你的 Androidmanifest.xml 文件中添加这行代码,在这个视频将要播放的活动中。只需在 android manifest 文件中添加这两行。

 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
 android:configChanges="orientation|screenSize"

就像在我的 androidmanifest.xml 文件中一样,我已经添加了它

  <activity
        android:name="com.appliconic.straminglivevideo.MainActivity"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
        android:configChanges="orientation|screenSize"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
于 2014-06-06T10:43:10.047 回答
4

稍微修改了@Javanator的答案,这不会拉伸视频:

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent" >
   <VideoView android:id="@+id/myvideoview"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_centerVertical="true"
              android:layout_centerHorizontal="true">
    </VideoView>
 </RelativeLayout>

希望这可以帮助某人:)

于 2015-07-16T05:28:36.807 回答