2013-03-08 3 views
0

У меня есть песня в моем приложении, которую я хотел бы контролировать с помощью Media Controller, у меня есть код, который, я считаю, будет точным представлением о том, как это сделать, однако я получите 2 ошибки в моем коде, я расскажу подробности ниже, может ли кто-нибудь помочь мне.Как заставить Media Controller работать

Ошибка 1: Метод setMediaPlayer (MediaController.MediaPlayerControl) в MediaController типа не применяется для аргументов (MediaPlayer)

Error 2: Метод 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); 
    } 
+0

Я думаю, вы найдете [это] (http://stackoverflow.com/questions/3747139/how -can-i-show-a-mediacontroller-while-playing-audio-in-android/5265629 # 5265629) пример полезный. – crazylpfan

+0

@crazylpfan Я понял, что это было бы полезно, но для меня это действительно сложно понять, я только начал неделю назад. – Thomas

ответ

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

Wh подготовлен контроллер 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(); 
     } 
    }); 
    } 

Это имеет смысл сейчас?

EDIT: Это, как вы бы воспроизвести файл из Реза/необработанную папку:

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

Спасибо, теперь это немного лучше, но я до сих пор не понимаю, как получить аудиофайл для воспроизведения, если он находится в моей исходной папке – Thomas

+0

Я обновил свой ответ соответственно, проверьте его. – crazylpfan

+0

А, спасибо, вы были очень полезны – Thomas

Смежные вопросы