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

1 に答える 1

1

トーマス、ここでリンクについて説明しようと思います。

まず、プレーヤー、コントローラー、およびハンドラー フィールドを定義する必要があります。

  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);
于 2013-03-08T23:32:50.953 に答える