Android 的简单应用(MusicPlayer) 以及 Soundpool池
来源:互联网 发布:淘宝我的评价怎么删除 编辑:程序博客网 时间:2024/06/15 08:39
一.首先模仿的是一个简单的音乐播放器。音乐播放器分三种情况
1.播放项目内本有的音乐
2.播放手机内存卡中的音乐(需要得到播放音乐的绝对路径)
3.播放网络路径的音乐
下面是具体代码
public class MainActivity extends AppCompatActivity { private SeekBar seekbar; private ImageButton play_pause_btn; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 initview(); } //初始化控件 private void initview(){ seekbar = (SeekBar) findViewById(R.id.Seekbar); play_pause_btn = (ImageButton) findViewById(R.id.play_pause_btn); //seekbar拖动 seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //拖动停止处 int progress=seekbar.getProgress(); //跳转位置播放 mediaPlayer.seekTo(progress); } }); //开始播放 或 暂停 play_pause_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //判断 mediaPlayer 是不是第一次点击播放 if(mediaPlayer==null){ //一.读取项目内 音乐// mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.a);// //设置类型// mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //二.读取内存卡中的音乐// mediaPlayer = new MediaPlayer();//// //设置类型// mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//// //设置音源// try{// mediaPlayer.setDataSource(MainActivity.this, Uri.parse("file://mnt/sdcard/Music/Sugar.mp3"));//// //准备一下// mediaPlayer.prepare();//// }catch (Exception e){// e.printStackTrace();// } //三.读取网络音乐 mediaPlayer=new MediaPlayer(); //设置类型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置音源 try{ //播放网络音乐 mediaPlayer.setDataSource(MainActivity.this, Uri.parse("http://192.168.56.169/Sugar.mp3")); //异步准备一下 mediaPlayer.prepareAsync(); }catch (Exception e){ e.printStackTrace(); } //准备完成的监听 mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); //修改图标 play_pause_btn.setImageResource(android.R.drawable.ic_media_pause); //获取音乐总时长 int duration=mediaPlayer.getDuration(); //设置seekbar seekbar.setMax(duration); new MyThread().start(); } }); }else if(mediaPlayer.isPlaying()){ //暂停 mediaPlayer.pause(); //修改图标 play_pause_btn.setImageResource(android.R.drawable.ic_media_play); }else{ //播放 mediaPlayer.start(); //修改图标 play_pause_btn.setImageResource(android.R.drawable.ic_media_pause); } } }); } //使seekbar 动起来的线程 class MyThread extends Thread{ @Override public void run() { super.run(); //获取当前歌曲的时间 int currentposition=mediaPlayer.getCurrentPosition(); //给seekbar设置值 seekbar.setProgress(currentposition); } } //销毁程序时 清空mediaPlayer @Override protected void onDestroy() { super.onDestroy(); mediaPlayer.release(); }}
以及xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.android_26_musicplayer.MainActivity"> <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Seekbar" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:id="@+id/play_pause_btn" /> </LinearLayout></LinearLayout>
二.实现的是一个Soudpool池实现多种声音一起播放的效果
public class SandPollActivity extends AppCompatActivity { private SoundPool soundPool; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sand_poll); //初始化控件 initview(); } //初始化控件 private void initview(){ //实例化 音频池 soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0); //soundPool 加载完成监听 soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int i, int i1) { //播放 soundPool.play(i,1,1,1,-1,1); } }); //加载声音 findViewById(R.id.music1_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { soundPool.load(SandPollActivity.this,R.raw.chimp,1); } }); findViewById(R.id.music2_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { soundPool.load(SandPollActivity.this,R.raw.crickets,1); } }); findViewById(R.id.music3_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { soundPool.load(SandPollActivity.this,R.raw.dogbark,1); } }); findViewById(R.id.music4_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { soundPool.load(SandPollActivity.this,R.raw.love,1); } }); findViewById(R.id.music5_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { soundPool.load(SandPollActivity.this,R.raw.roar,1); } }); } @Override protected void onDestroy() { super.onDestroy(); if(soundPool!=null){ soundPool.release(); soundPool=null; } }}
以及xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_sand_poll" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.android_26_musicplayer.SandPollActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="声音1" android:id="@+id/music1_btn" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="声音2" android:id="@+id/music2_btn" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="声音3" android:id="@+id/music3_btn" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="声音4" android:id="@+id/music4_btn" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="声音5" android:id="@+id/music5_btn" /></LinearLayout>
0 0
- Android 的简单应用(MusicPlayer) 以及 Soundpool池
- Android开发--多媒体应用开发(二)--SoundPool的使用
- Android SoundPool 的使用以及原理分析
- Android MusicPlayer
- Android --- 多媒体应用(SoundPool播放音频)
- Android:SoundPool简单介绍
- Android音频池(SoundPool)
- SoundPool的应用
- SoundPool的简单使用
- SoundPool的简单认识
- Android_Mediaplayer和SoundPool音乐播放的简单应用
- Android SoundPool与MediaPlayer 应用
- Android应用:SoundPool 播放音效
- android SoundPool 的使用
- android SoundPool 的使用
- Android的SoundPool
- Android的SoundPool
- Android的SoundPool
- Websphere共享库加载顺序问题
- 函数式编程常用术语
- 最短路+差分约束学习笔记
- css布局总结
- JZOJ 4061. 【JSOI2015】字符串树
- Android 的简单应用(MusicPlayer) 以及 Soundpool池
- Linux 线程简析
- leecode 解题总结:70. Climbing Stairs
- THUWC2017 酱油记
- boost处理日期和时间的总结
- 【JSOI2015】送礼物
- Servlet3.0包依赖问题
- 从栈和堆中来看值传递和引用传递
- Linux 常用环境变量及作用和环境变量文件的详细介绍及其加载执行顺序