1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android多媒体(音乐播放器)

Android多媒体(音乐播放器)

时间:2022-04-21 16:28:17

相关推荐

Android多媒体(音乐播放器)

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.zking.administrator.g160628_android27_palymeusic.MainActivity"><SeekBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/sb_main_bar"/><ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@android:drawable/ic_media_play"android:onClick="PlayOrPause"/></LinearLayout>

1.手机内存(应用内)

public class MainActivity extends AppCompatActivity {private MediaPlayer mediaplayer;private SeekBar sb_main_bar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar);/*** 给进度条设置滑动监听* 一定要在滑完之后才能放,* 如果你是在onProgressChanged里开始做,就会实现DJ的效果*/sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Override//进度条改变public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {}@Override//开始滑public void onStartTrackingTouch(SeekBar seekBar) {}@Override//停止滑public void onStopTrackingTouch(SeekBar seekBar) {//获取当前进度条的位置int currentPosition=seekBar.getProgress();//跳转到某个位置进行播放mediaplayer.seekTo(currentPosition);}});}public void PlayOrPause(View view){//把view强转为ImageButtonImageButton imageButton= (ImageButton) view;//实例化MediaPlayer//第一次进入判断mediaplayer为空就执行操作if(mediaplayer==null){mediaplayer = MediaPlayer.create(this, R.raw.s8);//开始mediaplayer.start();//暂停图标imageButton.setImageResource(android.R.drawable.ic_media_pause);//音乐只要一播放,获取音乐的播放时长int time=mediaplayer.getDuration();//设置进度条的最大值为音乐的播放时长sb_main_bar.setMax(time);new MyThread().start();}else if(mediaplayer.isPlaying()){//如果正在播放mediaplayer.isPlaying()暂停//暂停mediaplayer.pause();//播放图标imageButton.setImageResource(android.R.drawable.ic_media_play);}else{//如果你没用播放它会重新开始,如果是暂停的状态你点start就会接着放//在这里没有所谓的接着放的方法mediaplayer.start();//暂停图标imageButton.setImageResource(android.R.drawable.ic_media_pause);}}//要让进度条动起来就要用到子线程class MyThread extends Thread{@Overridepublic void run() {super.run();//第一种:拿到进度条的当前进度,如果它小于最大值while(sb_main_bar.getProgress()<sb_main_bar.getMax()){//循环一次,获取音乐当前的播放位置int currentPosition=mediaplayer.getCurrentPosition();//音乐播放到这里进度条也设置到哪里sb_main_bar.setProgress(currentPosition);}}}}

2.内存卡

public class MainActivity extends AppCompatActivity {private MediaPlayer mediaplayer;private SeekBar sb_main_bar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar);/*** 给进度条设置滑动监听* 一定要在滑完之后才能放,* 如果你是在onProgressChanged里开始做,就会实现DJ的效果*/sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Override//进度条改变public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {}@Override//开始滑public void onStartTrackingTouch(SeekBar seekBar) {}@Override//停止滑public void onStopTrackingTouch(SeekBar seekBar) {//获取当前进度条的位置int currentPosition=seekBar.getProgress();//跳转到某个位置进行播放mediaplayer.seekTo(currentPosition);}});}public void PlayOrPause(View view){//把view强转为ImageButtonImageButton imageButton= (ImageButton) view;//实例化MediaPlayer//第一次进入判断mediaplayer为空就执行操作if(mediaplayer==null){//播放内存卡里的音频//内存卡的路径if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();mediaplayer=new MediaPlayer();//设置音频流的类型mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置音源try {mediaplayer.setDataSource(this, Uri.parse("file://"+sdPath+"/s8.mp3"));//播放内存卡里的音频,它需要准备一下才会播放(缓冲一下)mediaplayer.prepare();} catch (IOException e) {e.printStackTrace();}mediaplayer.start();//暂停图标imageButton.setImageResource(android.R.drawable.ic_media_pause);//音乐只要一播放,获取音乐的播放时长int time=mediaplayer.getDuration();//设置进度条的最大值为音乐的播放时长sb_main_bar.setMax(time);new MyThread().start();}}else if(mediaplayer.isPlaying()){//如果正在播放mediaplayer.isPlaying()暂停//暂停mediaplayer.pause();//播放图标imageButton.setImageResource(android.R.drawable.ic_media_play);}else{//如果你没用播放它会重新开始,如果是暂停的状态你点start就会接着放//在这里没有所谓的接着放的方法mediaplayer.start();//暂停图标imageButton.setImageResource(android.R.drawable.ic_media_pause);}}//要让进度条动起来就要用到子线程class MyThread extends Thread{@Overridepublic void run() {super.run();//第一种:拿到进度条的当前进度,如果它小于最大值while(sb_main_bar.getProgress()<sb_main_bar.getMax()){//循环一次,获取音乐当前的播放位置int currentPosition=mediaplayer.getCurrentPosition();//音乐播放到这里进度条也设置到哪里sb_main_bar.setProgress(currentPosition);}}}}

AndroidManifest.xml

<!--播放内存卡里的音频用到的权限--><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

3.网络

public class MainActivity extends AppCompatActivity {private MediaPlayer mediaplayer;private SeekBar sb_main_bar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar);/*** 给进度条设置滑动监听* 一定要在滑完之后才能放,* 如果你是在onProgressChanged里开始做,就会实现DJ的效果*/sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Override//进度条改变public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {}@Override//开始滑public void onStartTrackingTouch(SeekBar seekBar) {}@Override//停止滑public void onStopTrackingTouch(SeekBar seekBar) {//获取当前进度条的位置int currentPosition=seekBar.getProgress();//跳转到某个位置进行播放mediaplayer.seekTo(currentPosition);}});}public void PlayOrPause(View view){//把view强转为ImageButtonfinal ImageButton imageButton= (ImageButton) view;//实例化MediaPlayer//第一次进入判断mediaplayer为空就执行操作if(mediaplayer==null){if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();mediaplayer = new MediaPlayer();//设置音频流的类型mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置音源try {mediaplayer.setDataSource(this, Uri.parse("http://193.168.4.247:8080/s8.mp3"));//网络音乐要用异步准备mediaplayer.prepareAsync();} catch (IOException e) {e.printStackTrace();}//设置准备监听mediaplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Override//准备的public void onPrepared(MediaPlayer mp) {mediaplayer.start();//暂停图标imageButton.setImageResource(android.R.drawable.ic_media_pause);//音乐只要一播放,获取音乐的播放时长int time = mediaplayer.getDuration();//设置进度条的最大值为音乐的播放时长sb_main_bar.setMax(time);new MyThread().start();}});}}else if(mediaplayer.isPlaying()){//如果正在播放mediaplayer.isPlaying()暂停//暂停mediaplayer.pause();//播放图标imageButton.setImageResource(android.R.drawable.ic_media_play);}else{//如果你没用播放它会重新开始,如果是暂停的状态你点start就会接着放//在这里没有所谓的接着放的方法mediaplayer.start();//暂停图标imageButton.setImageResource(android.R.drawable.ic_media_pause);}}//要让进度条动起来就要用到子线程class MyThread extends Thread{@Overridepublic void run() {super.run();//第一种:拿到进度条的当前进度,如果它小于最大值while(sb_main_bar.getProgress()<sb_main_bar.getMax()){//循环一次,获取音乐当前的播放位置int currentPosition=mediaplayer.getCurrentPosition();//音乐播放到这里进度条也设置到哪里sb_main_bar.setProgress(currentPosition);}}}}

AndroidManifest.xml

<!--网络权限--><uses-permission android:name="android.permission.INTERNET"></uses-permission>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。