音乐播放

//音乐播放的两种形式
package com.example.mediaplayer;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

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

    // 创建音乐播放器:方式一
    //way1();

    // 创建音乐播放器:方式二
    way();
}

private void way1() {
    //1.创建MediaPlayer对象
    MediaPlayer player=new MediaPlayer();

    //不知道放在那里可以用此方法
    //File file=Environment.getExternalStorageDirectory();
    //player.setDataSource(file+"/elang.mp3");

    //2.设置资源文件(必须处理异常)
    try {
        //重置,清零
        player.reset();

        player.setDataSource("/mnt/sdcard/kugoumusic/elang.mp3");
        //3.加载准备
        player.prepare();
        //player.prepareAsync();网络加载
    } catch (Exception e) {
        e.printStackTrace();
    }
    //资源文件存放位置:资源目录、网络、assets下

    //4.播放
    player.start();

    //播放完后,进入下一曲的监听
    player.setOnCompletionListener(new OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
        }
    });
}

private void way() {
    //创建
    MediaPlayer play=MediaPlayer.create(this, R.raw.yiwange);
    //播放
    play.start();
    //资源文件存放位置:res/raw下、网络
}

}

//音乐播放(上一首,下一首,有进度条)
package com.example.mediaplayer;

import java.sql.PreparedStatement;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Handler;
import android.text.format.Time;
import android.view.Menu;
import android.view.MenuItem;
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 MainActivity extends Activity {

private Button previous,next;
private TextView tv;
private MediaPlayer mp;
String[] names={"第一首歌","第二首歌","第三首歌","第四首歌",};
int[] ids={R.raw.music1,R.raw.music2,R.raw.music3,R.raw.music4};
int index;
private Timer t;
private SeekBar seekBar;
Handler handler=new Handler(){
    public void handleMessage(android.os.Message msg) {
        if(mp.isPlaying()){
            seekBar.setProgress(mp.getCurrentPosition());
        }else{
            t.cancel();
            seekBar.setProgress(seekBar.getMax());
        }
    };
};

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

    init();
}

public void init() {
    previous = (Button) findViewById(R.id.previous);
    next = (Button) findViewById(R.id.next);
    tv = (TextView) findViewById(R.id.tv);
    seekBar = (SeekBar) findViewById(R.id.seekBar);

    mp=MediaPlayer.create(this,ids[index]);
    tv.setText(names[index]);
    mp.start();
    //得到当前音乐总共可以播放多长时间
    int time = mp.getDuration();
    //给进度条设置最大进度,遇音乐播放时间同步,1:1
    seekBar.setMax(time);
    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            //拖动离手后,得到进度,设置到mp上
            int pro=seekBar.getProgress();
            if(mp.isPlaying()){
                mp.seekTo(pro);
            }
        }
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
        }
    });

    way();
    previous.setOnClickListener(l);
    next.setOnClickListener(l);

    completion();
}

OnClickListener l=new OnClickListener(){

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.previous:
            index--;
            if(index<0){
                index=ids.length-1;
            }
            if(mp.isPlaying()){
                mp.stop();
            }
            mp=MediaPlayer.create(MainActivity.this,ids[index]);
            mp.start();
            tv.setText(names[index]);

            break;

        case R.id.next:
            index++;
            if(index==ids.length){
                index=0;
            }
            if(mp.isPlaying()){
                mp.stop();
            }
            mp=MediaPlayer.create(MainActivity.this,ids[index]);
            mp.start();
            tv.setText(names[index]);
            break;
        }
        //上一首或者下一首,从头播放,所以设置为0,最大进度为播放时的音乐的时间
        seekBar.setProgress(0);
        seekBar.setMax(mp.getDuration());
        way();
        completion();
    }};


    public void way(){
        t = new Timer();
        t.schedule(new TimerTask() {

            @Override
            public void run() {
                handler.sendEmptyMessage(0x123);
            }
        }, 500, 100);
    }


    public void completion(){
        //设置播放完后自己播放下一区
        mp.setOnCompletionListener(new OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer m) {
                index++;
                if(index==ids.length){
                    index=0;
                }
                mp=MediaPlayer.create(MainActivity.this, ids[index]);

// m=mp;
tv.setText(names[index]);
seekBar.setProgress(0);
seekBar.setMax(mp.getDuration());
way();
mp.start();
completion();

            }
        });
    }

    @Override
    protected void onDestroy() {
        if(mp!=null){
            mp.stop();
        }
        super.onDestroy();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值