Byt*_*ode 22 android mediacontroller
我在我的应用程序中使用mediacontroller,但它只显示3秒钟.我搜索了很多,但在每个文档中我只看到show函数,设置超时,但它没有效果.我怎么能一直展示mediacontroller?
我测试过show(0),但没有效果.
pct*_*ing 25
您可以扩展MediaController类并以编程方式将其实例设置为VideoView类:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.MediaController;
public class MyMediaController extends MediaController {
public MyMediaController(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyMediaController(Context context, boolean useFastForward) {
super(context, useFastForward);
}
public MyMediaController(Context context) {
super(context);
}
@Override
public void show(int timeout) {
super.show(0);
}
}
Run Code Online (Sandbox Code Playgroud)
这是用法:
VideoView myVideoView = (VideoView) findViewById(R.id.my_video_view);
MediaController mc = new MyMediaController(myVideoView.getContext());
mc.setMediaPlayer(myVideoView);
myVideoView.setMediaController(mc);
Run Code Online (Sandbox Code Playgroud)
小智 13
您可以创建内联匿名类并覆盖某些方法.您需要覆盖hide方法并在那里不执行任何操作.您还需要覆盖dispatchKeyEvent方法以检查后退按键并调用super.hide().否则在背面按下控制器不会隐藏,活动无法关闭.
mediaController = new MediaController(this){
@Override
public void hide() {
// TODO Auto-generated method stub
//do nothing
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
super.hide();
Activity a = (Activity)getContext();
a.finish();
}
return true;
}
};
Run Code Online (Sandbox Code Playgroud)
San*_*esh 11
以这种方式尝试show方法:
new media controller().show(50000);
Run Code Online (Sandbox Code Playgroud)
并查看http://developer.android.com/reference/android/widget/MediaController.html#show().
SudeepSR:请注意,如果你调用show(0),它将显示媒体控制器,直到调用hide().
您还可以创建内联的匿名类并覆盖其中的hide方法,而不必为其创建一个全新的类:
mediaController = new MediaController(this) {
@Override
public void hide() {
//Do not hide.
}
};
Run Code Online (Sandbox Code Playgroud)
你需要做的是,覆盖自定义控制器中的hide方法,什么都不做.
public class MyMediaController extends MediaController {
..
@Override
public void hide() {
// Do nothing here in order to always show
}
...
}
Run Code Online (Sandbox Code Playgroud)
PS:你仍然需要点击视频来显示媒体控制器.
在尽我所能之后,以下代码对我有用!
mVideoView = (VideoView) findViewById(R.id.video);
mMediaController = new MediaController(this) {
//for not hiding
@Override
public void hide() {}
//for 'back' key action
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
Activity a = (Activity)getContext();
a.finish();
}
return true;
}
};
mMediaController.setAnchorView(mVideoView);
mMediaController.setMediaPlayer(mVideoView);
mVideoView.setMediaController(mMediaController);
mMediaController.requestFocus();
//only this showed the controller for me!!
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mVideoView.start();
mMediaController.show(900000000);
}
});
//finish after playing
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
finish();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23955 次 |
| 最近记录: |