2013-03-08 45 views
0

我在我的应用程序中有一首歌曲,我希望能够通过媒体控制器进行控制,我拥有代码,我相信这将是如何做到这一点的准确表示,但是我在我的代码中得到2个错误,我会给细节以下,任何人都可以请帮助我。如何让媒体控制器工作

错误1:在类型的MediaController方法setMediaPlayer(MediaController.MediaPlayerControl)是不适用的参数(的MediaPlayer)

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

我到目前为止的代码:

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); 
    } 
+0

我想你会发现[这](http://stackoverflow.com/questions/3747139/how -can-show-a-mediacontroller-while-playing-audio-in-android/5265629)#5265629)示例很有用。 – crazylpfan 2013-03-08 22:36:57

+0

@crazylpfan我得到那样会很有帮助,但这对我来说很难理解,我刚开始大约一周前。 – Thomas 2013-03-08 23:01:27

回答

1

托马斯,我将在这里解释link

首先,您需要定义您的播放器,控制器和处理器领域:

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

瓦在媒体播放器准备就绪后,控制器将被设置为:

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

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

现在更有意义了吗?

编辑:这是你将如何从资源播放的文件/文件夹原料:

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

谢谢,它现在确实有点意义,但我仍然不明白如何获取音频文件的播放,如果它在我的原始文件夹 – Thomas 2013-03-08 23:42:23

+0

我已经更新了我的答案相应地,检查出来。 – crazylpfan 2013-03-08 23:46:25

+0

啊,谢谢你,你一直很有帮助 – Thomas 2013-03-08 23:53:06