【问题标题】:How to get Media Controller to work如何让媒体控制器工作
【发布时间】:2013-03-09 07:43:08
【问题描述】:

我的应用程序中有一首歌曲,我希望能够通过媒体控制器进行控制,我有我认为可以准确表示如何执行此操作的代码,但是我的代码中有 2 个错误,我会在下面给出详细信息,请任何人帮助我。

错误一:MediaController类型中的setMediaPlayer(MediaController.MediaPlayerControl)方法不适用于参数(MediaPlayer)

错误 2:未为类型 MediaPlayer 定义方法 setMediaController(MediaController)

我目前的代码:

MediaPlayer Song;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN );
        setContentView(R.layout.billy);

        Song = MediaPlayer.create(BillyConnoly.this, R.raw.clip_1);

        MediaController mc = new MediaController(this);
        mc.setMediaPlayer(Song);
        Song.setMediaController(mc);
    }

【问题讨论】:

  • 我想你会发现this这个例子很有用。
  • @crazylpfan 我知道这会有所帮助,但这对我来说理解起来真的很复杂,我大约一周前才开始。

标签: java android


【解决方案1】:

Thomas,我会在这里解释一下link

首先,您需要定义播放器、控制器和处理程序字段:

  private MediaPlayer mediaPlayer;
  private MediaController mediaController;

  private Handler handler = new Handler();

接下来,您需要实例化所有适当的对象(正如您所做的那样),并注册一个 OnPreparedListener:

mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(this);

mediaController = new MediaController(this);

然后,准备并启动 mediaPlayer:

try {
  mediaPlayer.setDataSource(audioFile);
  mediaPlayer.prepare();
  mediaPlayer.start();
} catch (IOException e) {
  Log.e(TAG, "Could not open file " + audioFile + " for playback.", e);
}

当 mediaPlayer 准备好后,控制器将被设置:

  public void onPrepared(MediaPlayer mediaPlayer) {
    Log.d(TAG, "onPrepared");
    mediaController.setMediaPlayer(this);

    handler.post(new Runnable() {
      public void run() {
        mediaController.setEnabled(true);
        mediaController.show();
      }
    });
  }

现在更有意义了吗?

编辑:这是播放 res/raw 文件夹中文件的方式:

int resID=getResources().getIdentifier("filename", "raw", getPackageName());
MediaPlayer mediaPlayer=MediaPlayer.create(this,resID);

【讨论】:

  • 谢谢,现在它确实更有意义了,但我仍然不明白如何获取音频文件以进行播放,如果它在我的原始文件夹中
  • 啊,谢谢,你帮了大忙
  • 没问题,如果您遇到任何其他问题,请告诉我!
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多