【问题标题】:SeekBar with android 2.3.3 Mediaplayer! How can i add seekbar in my project?带有 android 2.3.3 Mediaplayer 的 SeekBar!如何在我的项目中添加搜索栏?
【发布时间】:2012-12-27 02:12:26
【问题描述】:

我想添加一个SeekBar 来控制我的mediaplayer 进程,但是我不知道如何添加代码。请帮助我,并在我的项目代码中举一些例子! 打包lamTo.OSDC_Project;

public class OSDC_Mini_ProjectActivity extends Activity implements MediaPlayer.OnCompletionListener {

    private ImageButton play,pause,stop;
    private MediaPlayer mp;
    private SeekBar seekbar;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        play = (ImageButton)findViewById(R.id.play);
        pause = (ImageButton)findViewById(R.id.pause);
        stop = (ImageButton)findViewById(R.id.stop);


        play.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                play();
            }
        });

        pause.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                pause();
            }
        });

        stop.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                stop();
            }
        });

        setup();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (stop.isEnabled()) {
            mp.stop();
        }
    }

    public void onCompletion(MediaPlayer mp) {
        stop();
    }

    private void play() {
        mp.start();
        play.setEnabled(false);
        pause.setEnabled(true);
        stop.setEnabled(true);
    }

    private void stop() {
        mp.stop();
        pause.setEnabled(false);
        stop.setEnabled(false);

        try {
            mp.prepare();
            mp.seekTo(0);
            play.setEnabled(true);
        }
        catch (Throwable t) {
            error(t);
        }
    }

    private void pause() {
        mp.pause();
        play.setEnabled(true);
        pause.setEnabled(false);
        stop.setEnabled(true);
    }

    private void loadClip() {
        try {       
            mp=MediaPlayer.create(this, R.raw.bigbang);
            mp.setOnCompletionListener(this);
        }
        catch (Throwable t) {
            error(t);
        }
    }

    private void setup() {
        loadClip();
        play.setEnabled(true);
        pause.setEnabled(false);
        stop.setEnabled(false);
    }

    private void error(Throwable t) {
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
        builder
            .setTitle("Error!")
            .setMessage(t.toString())
            .setPositiveButton("Yes", null)
            .show();
    }
}

【问题讨论】:

    标签: android seekbar


    【解决方案1】:

    在你的设计布局中,添加这个

    <SeekBar
     android:id="@+id/SeekBar01"
     android:layout_height="wrap_content"
     android:layout_width="fill_parent"
     />
    

    在你的 onCreate() 中添加这个

    seekBar = (SeekBar) findViewById(R.id.SeekBar01);
    seekBar.setMax(mPlayer.getDuration());
    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
    
    public void onStopTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
    }
    
    public void onStartTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
    }
    
    public void onProgressChanged(SeekBar seekBar, int progress,
     boolean fromUser) {
    seekChange(seekBar, progress, fromUser); 
    
    }
    });
     }
    
     // This makes the seekbar follow the music
    public void startPlayProgressUpdater() {
    seekBar.setProgress(mPlayer.getCurrentPosition());
    
    if (mPlayer.isPlaying()) {
    Runnable notification = new Runnable() {
    public void run() {
    startPlayProgressUpdater();
    }
    };
    handler.postDelayed(notification,1000);
    }else{
    mPlayer.pause();
    buttonPlayStop.setText(getString(R.string.play_str));
    seekBar.setProgress(0);
    }
     } 
    
    // This is event handler thumb moving event
    private void seekChange(SeekBar seekBar, int progress,
    boolean fromUser){
    mPlayer.seekTo(progress);
     }
    

    完整教程是here,附有源代码。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多