Articles of videoview

MediaController定位

我正在使用VideoView显示播放本地mp4,我也使用MediaController。 媒体控制栏未显示在我的video剪辑下方,而是显示在屏幕中间。 我使用setAnchorView将它附加到我的videoView但没有任何影响。 我如何定位我的mediacontroller直接在我的video下? public class VideoDemo extends Activity { private VideoView video; private MediaController ctlr; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); getWindow().setFormat(PixelFormat.TRANSLUCENT); setContentView(R.layout.main); File clip=new File(Environment.getExternalStorageDirectory(), “test.mp4”); if (clip.exists()) { video=(VideoView)findViewById(R.id.video); video.setVideoPath(clip.getAbsolutePath()); ctlr=new MediaController(this, false); ctlr.setAnchorView(video); ctlr.setMediaPlayer(video); video.setMediaController(ctlr); video.requestFocus(); } } } 我的布局是

Android – 对话框后面的VideoView MediaController出现在对话框后面

我在自定义对话框中有一个VideoView ,我正在为VideoView创建一个媒体控制器并将其分配给代码中的VideoView ,但是控制器实际上并没有显示在video上 – 它出现在对话框后面! 知道如何让控制器高于video吗? 我创建了一个静态对话框助手类来帮助构建自定义对话框: public class DialogHelper { public static Dialog getVideoDialog(Context context, Uri videoLocation, boolean autoplay) { final Dialog dialog = getBaseDialog(context,true, R.layout.dialog_video); ((Activity)context).getWindow().setFormat(PixelFormat.TRANSLUCENT); final VideoView videoHolder = (VideoView) dialog.findViewById(R.id.video_view); videoHolder.setVideoURI(videoLocation); //videoHolder.setRotation(90); MediaController mediaController = new MediaController(context); videoHolder.setMediaController(mediaController); mediaController.setAnchorView(videoHolder); videoHolder.requestFocus(); if(autoplay) { videoHolder.start(); } videoHolder.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer […]

VideoView可以在不停止流的情况下分离和重新连接吗?

我正在构建一个应用程序,用户点击按钮以全屏显示video。 最初,video附加到ViewPager内的视图。 为了能够全屏显示,我将其与父项分离,并将其重新连接到根视图。 这种方法很好,除非在播放时将video切换到全屏。 当我分离播放VideoView时,它就停止了,我需要重新启动它。 这是不可接受的,因为video在恢复之前开始缓冲。 这里是完成分离的代码部分: final ViewGroup parent = (ViewGroup) findViewById(R.id.parent); final ViewGroup root = (ViewGroup) findViewById(R.id.root); Button b = (Button) findViewById(R.id.button); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { parent.removeView(mVideoView); LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); root.addView(mVideoView, lp); } }); 根据设备,我有一个不同的日志错误。 可能是因为实际的video播放器是由制造商而不是Android SDK提供的。 以下是Nexus 7的错误日志: 10-30 20:26:18.618: D/NvOsDebugPrintf(124): NvMMDecTVMRDestroyParser Begin 10-30 […]

VideoView onTouch事件:暂停/恢复video,以及显示/隐藏MediaController和ActionBar

问题摘要: 1)如何首先将video显示为暂停,而不是立即播放? 2)如何在触摸时暂停/取消暂停video,还隐藏/显示ActionBar和MediaController。 我很感激任何建议。 谢谢! (附有相关守则) 更新1 find问题2的某种解决方案(需要返回false),但我仍然不知道如何回答问题1。 当用户按下我的应用程序中的按钮时,他们会观看他们的video。 当他们第一次打开屏幕时,我希望video暂停而不是立即播放。 我还希望能够通过点击屏幕暂停播放video。 当video暂停时,我想显示ActionBar和MediaController 。 当video恢复时,我想隐藏ActionBar和MediaController (可能会稍微延迟?) 我已经尝试了一些东西,但我最终遇到了问题,比如video会暂停但不能恢复,或者ActionBar和MediaController无法正常显示或隐藏。 更新2 我find了问题1的部分解决方案,并更新了代码,以便在第一次打开时将video显示为暂停。 但是,当它第一次打开时,它只显示黑屏,直到我触摸video视图才能播放它。 观看video一次后,它将重置为开始和暂停,等待再次播放,并将从video的开头显示正确的图像。 但我不知道如何在开始时绕过黑屏。 相关代码: public class ViewImageVideoFragment extends Fragment { private int position = 0; private MediaController mMediaController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mMediaController = new MediaController(getActivity()); … } @Override public View onCreateView(LayoutInflater inflater, ViewGroup […]

Android VideoView如何缩放为ImageView缩放typesfitXY?

我在RelativeLayout中放了一个ImageView和一个VideoView。 可以通过scaleType=”fitXY”缩放ImageView以填充整个布局。 但是,VideoView没有类似的比例属性。 顺便说一句,我通过set setMediaController(null)隐藏video控件,只显示video内容。 是否可以在不保持纵横比的情况下缩放VideoView? 这是布局示例。

播放video时禁用Android的VideoView requestAudioFocus?

我正在构建一个记录和播放video的应用程序。 我想在不影响背景音乐播放的情况下这样做,即如果我开始播放video,我不想暂停其他应用的音频。 但是,在Lollipop上,当调用私有方法VideoView.openVideo()时,Android的VideoView类会自动请求音频焦点: AudioManager am = (AudioManager) super.getSystemService(name); am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); 关于如何解决这个问题的任何建议?

Android VideoView无法播放纵向方向

平台:使用Android SDK 16在Eclipse中开发。 问题:我有一个VideoView元素应该以480×800(PORTRAIT ORIENTATION)填满整个屏幕,它可以很好地播放,但不会定向到肖像。 它坚持横向模式,纵横比倾斜以适应这种方式。 我曾经尝试过什么: 在清单中使用android:screenOrientation =“portrait” 在容器和VideoView本身使用android:orientation =“vertical” 使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 就在我调用setContentView之前 尝试将布局宽度和高度设置为480dpx800dp而不是fill_parent 尝试将VideoView宽度和高度设置为480px x 800dp而不是fill_parent 关闭自动旋转显示 XML: 代码: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_start_screen); VideoView videoView = (VideoView) findViewById(R.id.opening_video); Uri pathToVideo = Uri.parse(“android.resource://com.example.consumerengage/” + R.raw.opening_tablet); videoView.setVideoURI(pathToVideo); videoView.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setLooping(true); } }); videoView.requestFocus(); videoView.start(); […]

ScrollView中的Android :: VideoView

我有一个在scrollView中的VideoView。 当我滚动scrollView时,VideoView不会滚动它。 这就像它的位置是固定的。 如何通过滚动scrollView中的所有其他元素正确滚动VideoView?

Android VideoView比例缩放

在Android的VideoView中,有没有办法实现与ImageView.ScaleType.CENTER_CROP相同的效果? 也就是说,我希望我的VideoView播放video,使其填满整个屏幕而不会失真。 如果video宽高比不完全适合屏幕,则应裁剪而不是扭曲。 以下解决方案将填满屏幕,但不保持video的宽高比: https : //stackoverflow.com/a/6927300/1068656 此解决方案保持video的宽高比,但不会填满整个屏幕(video缩放直到较长的一侧到达屏幕边缘,从而在侧面引入条形图): https : //stackoverflow.com/a/4855315/1068656

不可见时,VideoView无法启动

我有一个AsyncTask,我在其中隐藏video视图,开始video播放,并在播放video时显示video视图。 但是当video视图设置为不可见时,video才会启动,异步任务会一直挂在onBackground上。 如果我注释掉这一行,video就会开始播放。 为什么video视图需要可见表面? public void walk(final View v) { new AsyncTask() { @Override protected void onPreExecute() { super.onPreExecute(); mVideoView.setVisibility(View.INVISIBLE); // this line causes video not to start mVideoView.start(); } @Override protected Object doInBackground(Object… objects) { while (!mVideoView.isPlaying()) {} return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); mVideoView.setVisibility(View.VISIBLE); } }.execute(); 为什么我这样做有一些背景知识:我试图避免在开始播放video时常见的黑色闪光问题: https://stackoverflow.com/search?q=%5Bandroid%5D+videoview+black https://stackoverflow.com/search?q=%5Bandroid%5D+video+%5Bmediaplayer%5D+black