java - 如何让媒体 Controller 工作

标签 java android

我的应用程序中有一首歌曲,我希望能够通过媒体 Controller 进行控制,我有代码,我相信它可以准确地表示如何做到这一点,但是我的代码中出现了 2 个错误,我将在下面提供详细信息,有人可以帮助我吗?

错误1: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);
    }

最佳答案

托马斯,我会尝试解释 link在这里。

首先,您需要定义玩家、 Controller 和处理程序字段:

  private MediaPlayer mediaPlayer;
  private MediaController mediaController;

  private Handler handler = new Handler();

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

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

mediaController = new MediaController(this);

然后,准备并启动媒体播放器:

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

当媒体播放器准备好后, Controller 将被设置:

  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);

关于java - 如何让媒体 Controller 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304398/

相关文章:

java - CodenameOne 从 PLS 文件流式传输?

java - 即使没有更新,JDBCexecuteBatch() 是否应该返回一个具有原始批处理长度的数组?

android - com.facebook.katana.ProxyAuth 抛出从单个实例 Activity 调用的错误

android - WeakReference的get方法返回的强引用会导致AsyncTask onProgressUpdate内存泄漏吗?

java - 返回序列化对象(如果存在)否则返回新实例?

java - 网络 bean : Accessing resources in other packages

java - 验证代码是否在 Vaadin 7 应用程序的用户界面线程上运行

java - 如何在 Android 中获取更详细的位置名称?

android - 如何使用 FLAG_REORDER_TO_FRONT 和 FLAG_CLEAR_TOP 启动 Activity

android - 安装没有成功完成。详见 IDE 日志 - Android studio