2013-03-08 84 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