使用搜寻栏和位置栏从网址流式传输音频文件

时间:2018-12-19 21:52:56

标签: android android-studio url stream android-mediaplayer

我有一个应用程序可以播放原始文件夹中的mp3文件,并且可以完美运行。我需要将文件源从原始文件夹更改为URL,但是我想保留位置栏和搜索栏。我只想从URL或原始文件夹中创建应用流,而无需在应用中进行其他任何更改。

我想保持搜索和位置栏不变。我需要做的就是用Google驱动器中的网址替换app目录中的原始文件夹。

任何帮助将不胜感激。

public class literature_book1_partone extends AppCompatActivity {

Button playBt1;
SeekBar positionBar;
TextView elopsedtimeLable;
TextView remainingTimeLable;
MediaPlayer mp;
int totalTime;

AdView mAdView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_literature_book1_partone);




    mAdView = (AdView) findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);

playBt1 = (Button) findViewById(R.id.playButton);
elopsedtimeLable = (TextView) findViewById(R.id.elopsedtimeLable);
remainingTimeLable = (TextView) findViewById(R.id.remainingTimeLable);


    mp = MediaPlayer.create(this, R.raw.altamlat);
    mp.setLooping(true);
    mp.seekTo(0);
    mp.setVolume(0.5f, 0.2f);
    totalTime = mp.getDuration();


positionBar = (SeekBar) findViewById(R.id.positionBar);
positionBar.setMax(totalTime);
positionBar.setOnSeekBarChangeListener(

        new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                if (fromUser){

                    mp.seekTo(progress);
                    positionBar.setProgress(progress);
                }

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        }
);


new Thread(new Runnable() {
    @Override
    public void run() {
        while (mp != null){
            try {

                Message msg = new Message();
                msg.what = mp.getCurrentPosition();
                handler.sendMessage(msg);

                Thread.sleep(1000);
            } catch (InterruptedException e){}

        }
    }
}).start();

}

private Handler handler = new Handler (){

    @Override
    public void handleMessage(Message msg) {
        int currentPosition = msg.what;
        positionBar.setProgress(currentPosition);

        String elopsedTime = createTimeLable (currentPosition);
        elopsedtimeLable.setText(elopsedTime);

        String remainingtime = createTimeLable(totalTime-currentPosition);
        remainingTimeLable.setText("- " + remainingtime);

    }
};


public String createTimeLable (int time){

    String timelable = "";
    int min = time /1000/60;
    int sec = time /1000 % 60;

    timelable = min + ":";
    if (sec < 10)timelable += "0";
    timelable += sec;
    return timelable;


}
public void playBtnClick(View view){

    if (!mp.isPlaying()){

        mp.start();
        playBt1.setBackgroundResource(R.drawable.pause);

    }else {

        mp.pause();
        playBt1.setBackgroundResource(R.drawable.play);

    }

}

@Override
public void onBackPressed() {
    if (mp.isPlaying()) {
        mp.stop();
    }
    super.onBackPressed();
}

}

0 个答案:

没有答案