标签: mediacontroller

让MediaController显示没有隐藏

我尝试使用MediaController播放音乐.我希望MediaController出现,直到按下"后退"按钮.现在我尝试下面的代码:

MediaController mediaController = new MediaController(this){
@Override
public void setMediaPlayer(MediaPlayerControl player) {
super.setMediaPlayer(player);
this.show();
}
@Override
public void show(int timeout) {
super.show(0);
}
//instead of press twice with press once "back" button to back
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
Activity a = (Activity)getContext();
a.finish();
}
return true;
}
}; 
Run Code Online (Sandbox Code Playgroud)

但是当MediaController可见时它仍然是一个麻烦.当MediaController出现触摸屏幕时,MediaController将隐藏.我也尝试过以下代码:

@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("screen","touch");
return true;
}
Run Code Online (Sandbox Code Playgroud)

但它没有用.该字符串未在Logcat中显示.有人有想法吗?

android mediacontroller

4
推荐指数
2
解决办法
6776
查看次数

在android mediacontroller中更改文本的颜色

嗨有一种方法可以改变mediacontroller中文本的颜色,显示音频文件的总时间和剩余时间.在Android 2.3上,时间清晰可见但是当我的应用程序在Android 4.0或4.1上运行时,显示进度条任一侧的时间的文本太暗.目前我正在扩展mediacontroller类来创建我自己的媒体控制器,它不会消失,是否有什么我可以添加到这个类?任何帮助将非常感激.

public class WillMediaController extends MediaController {

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

    @Override
    public void hide() {
        // Do Nothing to show the controller all times

    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event)
    {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK)
        {
            ((Activity) getContext()).finish();

        }else{
            super.dispatchKeyEvent(event);
        }
        if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN ||
                event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) {
            // don't show the controls for volume adjustment
            return super.dispatchKeyEvent(event);
        }
        return true;


    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

android mediacontroller android-mediaplayer

4
推荐指数
1
解决办法
2486
查看次数

Android MediaController播放/暂停按钮和Seekbar不刷新

我正在使用MediaController.MediaPlayerControl以在我的自定义视图底部显示MediaController,但我无法让它正常工作.当我第一次播放音乐时,应该有暂停按钮可见,但是有播放,当我按下那个按钮时,音乐正确暂停,状态保持不变,之后它正常工作.此外,当我播放下一首歌曲时,旧的MediaController小部件与新的小部件重叠.有时,在播放音乐时,进度/搜索栏不会刷新.它只是在按下MediaController上的某些内容时自动更新(播放/暂停,转发等).

我发现这些问题与我的相似,但我认为他们得到的答案不会解决我的问题.

  1. Android mediacontroller Play Pause控件无法正常刷新
  2. Android MediaController搜索栏不令人耳目一新
  3. 即使文件已经播放,Android VideoView播放控件最初显示"播放"而不是"暂停"

这是我初始化控制器的方式:

private void setController()
{
    controller = new MusicController(this);

    controller.setPrevNextListeners(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            playNext();
          }
        }, new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            playPrev();
          }
        });

    controller.setMediaPlayer(this);
    controller.setAnchorView(findViewById(R.id.song_list));
    controller.setEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)

这是我显示控制器的方式:

public void playMusic()
{
        musicSrv.playSong(); //Play song in a service
        setController();
        controller.show(0);
        controller.requestFocus();
}
Run Code Online (Sandbox Code Playgroud)

android android-music-player mediacontroller

4
推荐指数
1
解决办法
5220
查看次数

MediaController.show()崩溃

我有一个mediacontroller的问题,这部分代码在不同的设备上完美无瑕作为Acer Liquid(姜饼),Archos 43(froyo)e Archos 32(froyo)......

VideoView videoView = (VideoView) findViewById(R.id.videoView1);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView); 
File filevideo = new File(Environment.getExternalStorageDirectory() + "/edizionitsm/firenze/map_" + map_n + "/",filename + "_" + language + ".mp4");
Uri video = Uri.fromFile(filevideo);
videoView.setMediaController(mediaController);
videoView.setVideoURI(video);
videoView.start();
Run Code Online (Sandbox Code Playgroud)

...但是在Point of View Pro Tab2(姜饼)上,它在活动开始时崩溃了.

11-09 14:12:59.640: E/AndroidRuntime(31433): FATAL EXCEPTION: main
11-09 14:12:59.640: E/AndroidRuntime(31433): java.lang.RuntimeException: Unable to start activity ComponentInfo{edizionitsm.archeoplayer/edizionitsm.archeoplayer.Player}: java.lang.NullPointerException
11-09 14:12:59.640: E/AndroidRuntime(31433):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
11-09 14:12:59.640: E/AndroidRuntime(31433):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
11-09 14:12:59.640: E/AndroidRuntime(31433):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-09 14:12:59.640: E/AndroidRuntime(31433):    at …
Run Code Online (Sandbox Code Playgroud)

tabs android mediacontroller

3
推荐指数
1
解决办法
3099
查看次数

Android:如何在服务类中使用mediaController?

我有一个应用程序,通过MediaPlayer播放无线电作为服务.是否可以在Service类中使用MediaController?问题是我可以使用findViewById.

我试着让我的LinearLayout进入onPrepeared方法......

public class RadioPlayer extends Service implements OnPreparedListener, MediaController.MediaPlayerControl {
  @Override
  public void onCreate() {
  super.onCreate();
  mediaPlayer = new MediaPlayer();
  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  mediaPlayer.setOnPreparedListener(this);
  mediaController = new MediaController(this, false); mediaPlayer.setDataSource(url);
  mediaPlayer.prepareAsync(); 
}

@Override
  public void onPrepared(MediaPlayer mediaPlayer) {
  mediaPlayer.start();
  mediaController.setMediaPlayer(this);
  LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
  View layout = inflater.inflate(R.layout.main, (ViewGroup) findViewById(R.id.main_program_view));
  mediaController.setAnchorView(layout);
}
}
Run Code Online (Sandbox Code Playgroud)

main.xml文件

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/main_program_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#FFFFFF"
        android:orientation="vertical" >  

        <TextView
            android:id="@+id/now_playing_text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:gravity="center"
            android:text="@string/na_antenie"
            android:textColor="#333333" />    
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

service android media-player mediacontroller findviewbyid

3
推荐指数
1
解决办法
3201
查看次数

Android MediaController的位置

所以我有以下代码可以正常工作:

VideoView videoView = (VideoView)findViewById(R.id.videoView1);
videoView.setVideoPath("android.resource://" + getPackageName() + "/raw/"+R.raw.intro);

MediaController controller = new MediaController(this);
controller.setAnchorView(videoView);
controller.setPadding(0, 0, 0, 500);
videoView.setMediaController(controller);

videoView.setZOrderOnTop(true);
Run Code Online (Sandbox Code Playgroud)

但是,如果我在具有较小屏幕的手机上测试应用程序,MediaController的位置就像s**t.所以我尝试在xml文件中定义它,以便它在不同的设备上保持相同的位置

<MediaController
        android:id="@+id/mediaController1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/videoView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp" >
    </MediaController>
Run Code Online (Sandbox Code Playgroud)

并将代码更改为

VideoView videoView = (VideoView)findViewById(R.id.videoView1);
videoView.setVideoPath("android.resource://" + getPackageName() + "/raw/"+R.raw.intro);

MediaController controller = (MediaController)findViewById(R.id.mediaController1);
videoView.setMediaController(controller);

videoView.setZOrderOnTop(true);
Run Code Online (Sandbox Code Playgroud)

但现在,当我启动它时,应用程序崩溃了.这里有什么我想念的吗?如何使用XML中定义的MediaController?

android mediacontroller android-videoview

3
推荐指数
1
解决办法
8393
查看次数

不推荐使用FragmentActivity.getSupportMediaController()

为了得到一个MediaControllerCompat实例中我使用getSupportMediaController()FragmentActivity.但是这种方法已被弃用.我必须使用哪种方法代替此方法?

android mediacontroller

3
推荐指数
2
解决办法
1961
查看次数

android:隐藏媒体控制器功能

我有视频视频,当视频开始时,媒体控制器显示3秒钟.我想隐藏媒体控制器,除非我点击屏幕.我试过了

MediaController mc= new MediaController();
mc.hide();
Videoview.setMediaController(mc);
..
..
..
Run Code Online (Sandbox Code Playgroud)

但它没有用..有什么建议吗?

android mediacontroller android-videoview

2
推荐指数
1
解决办法
7055
查看次数

自定义媒体控制器

VideoView用来显示视频.

我的要求是一个MediaControllerwid play/Pause, Stop, & Volume Contoller..我试过

         MediaController mc = new MediaController(this);  
         View mMediaControllerView = (View)findViewById(R.id.mediaController1); 
         mc.setAnchorView(mMediaControllerView);
         videoView.setMediaController(mc);
Run Code Online (Sandbox Code Playgroud)

添加一个imageview,layout但这似乎没有影响MediaController

需要一些指导/暗示继续进行......

谢谢.

android mediacontroller

2
推荐指数
1
解决办法
1万
查看次数

控制MediaController进度滑块

我需要将触摸事件捕获到MediaController进度滑块,以便MediaPlayer在手指抬离滑块之前不会发生更新.

[也许我的情况很独特:我正在为每个"节目"播放多个"堆栈"的流媒体视频.在上一个堆栈完成之前,不会加载下一个堆栈.滑块需要表示所有堆栈的持续时间,"拇指"的进度需要表示总持续时间.这是很容易通过覆盖完成getBufferPercentage(),getCurrentPosition()以及getDuration()方法MediaPlayerControl]

更有问题的是沿着时间线来回"擦洗"(移动拇指).如果它导致数据源set多次与seekTo每次移动一起,那么事情会很快陷入困境并崩溃.如果MediaPlayer在用户完成擦除之前没有执行任何操作会更好.

正如其他人所写,是的,最好编写我自己的MediaController实现.但为什么要重做所有这些工作呢?我尝试扩展MediaController,但很快就变得复杂了.我只想抓住滑块的触摸事件!

android video-streaming media-player mediacontroller

2
推荐指数
1
解决办法
6729
查看次数