Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让媒体控制器工作_Java_Android - Fatal编程技术网

Java 如何让媒体控制器工作

Java 如何让媒体控制器工作,java,android,Java,Android,我有一首歌在我的应用程序中,我希望能够通过媒体控制器控制,我有代码,我相信这将是如何做到这一点的准确代表,但我在我的代码中有2个错误,我会给出详细的贝娄,有人可以帮我 错误1:类型MediaController中的方法setMediaPlayer(MediaController.MediaPlayerControl)不适用于参数(MediaPlayer) 错误2:类型MediaPlayer的方法setMediaController(MediaController)未定义 到目前为止,我掌握的代码

我有一首歌在我的应用程序中,我希望能够通过媒体控制器控制,我有代码,我相信这将是如何做到这一点的准确代表,但我在我的代码中有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);
    }

托马斯,我来解释一下

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

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

我想你会发现这个例子很有用。@crazylpfan我知道这会很有帮助,但这对我来说真的很难理解,我大约一周前才开始学习。谢谢,现在确实有点道理了,但我仍然不明白如果音频文件在我的原始文件夹中,如何播放它。谢谢,你一直很有帮助没有问题,如果你遇到任何其他问题,请告诉我!