0

このプロジェクトのメディア プレーヤーの一部の機能を、SD カードからではなく raw フォルダーから mp3 を読み取るように変更しようとしていました。しかし、「有効なメディアプレーヤーなしで getDuration を呼び出そうとしています」というエラーがスローされます。アドバイスをお願いします。

 public void  playSong(int songIndex){ // parameter is not used. is set static content

    try {
        mp.reset();
        mp = mp.create(this, R.raw.ledzepellin); // static content!
        mp.prepare();
        mp.start();

        String songTitle = "title";
        songTitleLabel.setText(songTitle);


        songProgressBar.setProgress(0);
        songProgressBar.setMax(100);


        updateProgressBar();

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}


public void updateProgressBar() {
    mHandler.postDelayed(mUpdateTimeTask, 100);
}


private Runnable mUpdateTimeTask = new Runnable() {
    public void run() {
        long totalDuration = mp.getDuration(); // ---- HERE IT GIVE ME ERROR
        long currentDuration = mp.getCurrentPosition();


        songTotalDurationLabel.setText(""+utils.milliSecondsToTimer(totalDuration));

        songCurrentDurationLabel.setText(""+utils.milliSecondsToTimer(currentDuration));


        int progress = (int)(utils.getProgressPercentage(currentDuration, totalDuration));

        songProgressBar.setProgress(progress);


        mHandler.postDelayed(this, 100);
    }
};

ここで playSong メソッドを開始します。最初に利用可能な曲のリストビューを開きます。これを選択すると、追加の結果が返されますが、重要ではない生のソースが静的に設定されます。

       btnPlaylist.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(getApplicationContext(), PlayListActivity.class);
            startActivityForResult(i, 100);
        }
    });

}

@Override
protected void onActivityResult(int requestCode,
                                int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == 100){
        currentSongIndex = data.getExtras().getInt("songIndex");

        playSong(currentSongIndex);
    }

}
4

1 に答える 1