我打算为我的应用程序编写自定义媒体控制器.我计划使用搜索栏来寻求和展示进展.试图实现这一点.
有没有人有这样的实现或我是在错误的道路上?
有很多关于如何定位的讨论MediaController
,大多数答案都是使用setAnchorView
-Method.乍一看这个解决方案似乎有效但在我的情况下却没有.
根据这篇文章 setAnchorView
仅作为初始定位的参考MediaController
,但实际上创造了一个新的浮动Window
顶部.
所以,我要的是一个MediaController
是真的绑定到父View
(例如VideoView).
例如,如果你有一个LinearLayout
内部的ScrollView
,你必须向下滚动到您VideoView
在MediaController
连接到时,MediaController
应该被附加到这个VideoView
使MediaController
滚动随着VideoView
.
这里讨论了这个问题困扰的另一个用例,其中MediaController
使用了一个ViewPager
.
那么如何实现这样的行为MediaController
呢?
android android-layout mediacontroller android-view android-videoview
我的android活动中有一个媒体控制器,它使用setAnchorView来设置初始位置.从我所读到的媒体控制器处于滚动视图中,媒体控制器的窗口只是跟随滚动,这显然不是我想要的.
是否有一些方法以编程方式修复媒体控制器的位置,使其不遵循滚动视图?
非常感谢.
在VideoView中播放视频时,Android后退按钮无效.但它在播放视频之前有效.我正在为VideoView使用自定义MediaController.
我尝试使用dispatchKeyEvent,它无法正常工作.
使用VideoView的活动代码:
mc = new CustomMediaController(mVideo.getContext(), screenIcon) {
@Override
public void hide(){
}
@Override
public boolean dispatchKeyEvent(KeyEvent event){
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
super.hide();
((Activity) getContext()).finish();
return true;
}
return super.dispatchKeyEvent(event);
}
};
Run Code Online (Sandbox Code Playgroud)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
onBackPressed();
finish();
}
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
Run Code Online (Sandbox Code Playgroud)
CustomMediaController还包含dispatchKeyEvent:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
((Activity) getContext()).finish();
}
return super.dispatchKeyEvent(event); …
Run Code Online (Sandbox Code Playgroud) 我的应用程序的上半部分VideoView
有一个MediaController
下面的.下半部分是带有一些按钮的图像.虽然MediaController
可见,但下面的按钮不可点击.它就像是MediaController
可见的,它会拦截所有其他触摸事件,即使它们不在范围内MediaController
.
有什么想法吗?
在我的活动中,我有一个VideoView,它应该在触摸时显示MediaController.如果用户在VideoView没有关注时快速触摸控制器,那么在该用户按下后退按钮后,我的应用程序将被卡住.
setContentView(R.layout.activity_play_video_fullscreen);
videoView = (VideoView) findViewById(R.id.video_view);
urlString = getIntent().getStringExtra(EXTRA_URL);
videoView.setVideoURI(Uri.parse(urlString));
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// video ready to play - hide progress bar
ProgressBar pb = (ProgressBar)findViewById(R.id.progress_bar);
pb.setVisibility(ProgressBar.INVISIBLE);
}
});
videoView.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// video finished - terminate this activity
AxUtils.axLog(AxUtils.eDbgLogError, AxUtils.eDbgLogGroupDialer, String.format("PlayVideoFullsreenActivity.videoView.onCompletion(): Fullscreen video playback completed.\n"));
finish();
}
});
// install our own error handler
videoView.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) { …
Run Code Online (Sandbox Code Playgroud) android android-intent android-layout mediacontroller android-videoview
我不能让它工作......每当我触摸我的视频时,什么都没有惹人注意......虽然,我认为MediaController应该是可见的......
我目前使用以下功能播放我的视频:
private void playCachedVideo(final VideoView videoView, final Context c, File f)
{
//videoView.setZOrderOnTop(true);
videoView.setOnPreparedListener(new OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener()
{
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height)
{
MediaController mediaController = new MediaController(c);
mediaController.setMediaPlayer(videoView);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
}
});
}
});
videoView.setVideoURI(Uri.fromFile(f));
videoView.start();
}
Run Code Online (Sandbox Code Playgroud)
视频播放正常,但我无法显示任何MediaController ...
PS:我正在展示一名球员 DialogFragment
我在我的活动中使用MediaController工作正常,但是当我第一次播放视频时,应该有b暂停按钮可见,但是有播放,当我按下那个按钮时,视频暂停,状态保持不变,之后它的工作正常.视频完成后也会发生同样的事情.这是一个错误还是我做错了什么?
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaController = new MediaController(VideoPlayerActivity.this){
public void hide(){
}
public void show(){
if(isPlayingAd){
super.hide();
}else{
super.show();
}
}
};
videoView.setMediaController(mediaController);
mediaController.setMediaPlayer(videoView);
mediaController.show();
}
});
Run Code Online (Sandbox Code Playgroud) 我的应用不是媒体播放器.我只想使用新的MediaControllerCompat类来控制当前的媒体播放器.目前我正在使用MediaSessionManager但是想要升级到新的compat类.
当我没有令牌或MediaSessionCompat来实例化它时,如何实例化MediaControllerCompat类?我希望得到一些示例代码.
android android-music-player mediacontroller android-mediasession
我想为MediaController添加一个按钮.所以我扩展了MediaController类,创建了一个按钮并将其添加到框架布局中.但是新添加的按钮在运行时没有反映出来.
请在下面找到代码
public class VideoController extends MediaController {
private Button searchButton;
public VideoController(Context context) {
super(context);
searchButton = new Button(context);
searchButton.setText("Search");
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.RIGHT;
System.out.println("Adding a button");
addView(searchButton, params);
//updateViewLayout(this, params);
}
@Override
public void hide() {
}
}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么.任何建议都会有所帮助.
提前致谢.
mediacontroller ×10
android ×9
android-view ×1
back-button ×1
progress-bar ×1
seekbar ×1
touch-event ×1