您的位置:首页 > 移动开发 > Android开发

Android 播放器中容易用到的进度条[音量控制,播放进度]

2013-03-19 22:05 375 查看
转自:Android 播放器中容易用到的进度条[音量控制,播放进度]

1,显示当前播放进度

2,显示当前音量



package rw.test;
import java.io.IOException;

import Android.app.Activity;

import android.media.AudioManager;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.os.Handler;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.SeekBar;

import android.widget.SeekBar.OnSeekBarChangeListener;

import android.widget.TextView;

public class TestMusicActivity extends Activity {

/** Called when the activity is first created. */



private SeekBar SoundseekBar,ProceseekBar2;

private Button button;

private MediaPlayer mediaPlayer;

private TextView nowPlayTime,allTime,volumeView,maxVolumeTextView;

private AudioManager audioManager;



@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ProceseekBar2=(SeekBar)findViewById(R.id.seekBar1);

SoundseekBar=(SeekBar)findViewById(R.id.seekBar2);

button=(Button)findViewById(R.id.button1);

nowPlayTime=(TextView)findViewById(R.id.textView1);

allTime=(TextView)findViewById(R.id.textView2);

volumeView=(TextView)findViewById(R.id.textView3);

maxVolumeTextView=(TextView)findViewById(R.id.textView4);

button.setOnClickListener(new ButtonListener());



mediaPlayer=new MediaPlayer();

audioManager=(AudioManager)getSystemService(AUDIO_SERVICE);//获取音量服务

int MaxSound=audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);//获取系统音量最大值

maxVolumeTextView.setText(String.valueOf(MaxSound));

SoundseekBar.setMax(MaxSound);//音量控制Bar的最大值设置为系统音量最大值

int currentSount=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);//获取当前音量

SoundseekBar.setProgress(currentSount);//音量控制Bar的当前值设置为系统音量当前值

SoundseekBar.setOnSeekBarChangeListener(new SeekBarListener());

ProceseekBar2.setOnSeekBarChangeListener(new ProcessBarListener());



}

class ButtonListener implements OnClickListener{

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if (mediaPlayer.isPlaying()) {

mediaPlayer.pause();

}

else {

try {

mediaPlayer.reset();

mediaPlayer.setDataSource("/sdcard/test.mp3");

mediaPlayer.prepare();

mediaPlayer.start();

StrartbarUpdate();

int Alltime= mediaPlayer.getDuration();

allTime.setText(ShowTime(Alltime));

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalStateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}



}

}

//播放进度条

class ProcessBarListener implements OnSeekBarChangeListener{

@Override

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser) {

// TODO Auto-generated method stub

if (fromUser==true) {

mediaPlayer.seekTo(progress);

nowPlayTime.setText(ShowTime(progress));

}



}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub



}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub



}



}

//音量进度条

class SeekBarListener implements OnSeekBarChangeListener{

@Override

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser) {

// TODO Auto-generated method stub

if (fromUser) {

int SeekPosition=seekBar.getProgress();

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, SeekPosition, 0);

}

volumeView.setText(String.valueOf(progress));

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub



}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub



}



}

//时间显示函数,我们获得音乐信息的是以毫秒为单位的,把把转换成我们熟悉的00:00格式

public String ShowTime(int time){

time/=1000;

int minute=time/60;

int hour=minute/60;

int second=time%60;

minute%=60;

return String.format("%02d:%02d", minute, second);

}

Handler handler=new Handler();

public void StrartbarUpdate(){

handler.post(r);

}

Runnable r=new Runnable() {



@Override

public void run() {

// TODO Auto-generated method stub

int CurrentPosition=mediaPlayer.getCurrentPosition();

nowPlayTime.setText(ShowTime(CurrentPosition));

int mMax=mediaPlayer.getDuration();

ProceseekBar2.setMax(mMax);

ProceseekBar2.setProgress(CurrentPosition);

handler.postDelayed(r, 100);

}

};



}

//把一个名字为test.mp3的文件上传到系统中去,你们懂的.....

00:37 当前播放时间

04:16音乐总时间

11 当前音量

15 总音量

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐