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

多媒体_音乐播放器

时间:2021-03-14 05:55:17

相关推荐

多媒体_音乐播放器

第九章动画干过一遍了,大部分都能理解套路。接下来学第十章

1、简单的利用MediaPlayer制作音乐播放基础

1.1先看看xml很简单 定义几个基本的按钮

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.hejingzhou.mp3.MainActivity"><TextViewandroid:id="@+id/textViewshow"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:text="State"android:textAppearance="?android:attr/textAppearanceLarge" /><Buttonandroid:id="@+id/buttonZanting"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/buttonTingzhi"android:layout_alignBottom="@+id/buttonTingzhi"android:layout_toRightOf="@+id/buttonTingzhi"android:text="暂停" /><Buttonandroid:id="@+id/buttonKaishi"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/textViewshow"android:layout_marginTop="112dp"android:layout_toLeftOf="@+id/buttonTingzhi"android:text="开始" /><Buttonandroid:id="@+id/buttonTingzhi"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/buttonKaishi"android:layout_alignBottom="@+id/buttonKaishi"android:layout_centerHorizontal="true"android:text="停止" /></RelativeLayout></span>

1.2 MainActivity

package com.example.hejingzhou.mp3;<span style="font-size:18px;">import android.media.MediaPlayer;import .Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.File;public class MainActivity extends AppCompatActivity {private MediaPlayer mediaPlayer;private boolean isPause = false;//是否暂停private File file;private TextView textView;//声明显示提示信息@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final Button buttonStart = (Button) findViewById(R.id.buttonKaishi);final Button buttonStop = (Button) findViewById(R.id.buttonTingzhi);final Button buttonZanting = (Button) findViewById(R.id.Zanting);final TextView textViewShow = (TextView) findViewById(R.id.textViewshow);file = new File("/data/mp3.mp3");//获取播放的文件这个文件必须要指定放入同名的mp3文件if (file.exists()) { //</span><span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">返回一个boolean值,指示是否可以找到此文件·底层文件系统上。</span><span style="font-size:18px;">mediaPlayer = MediaPlayer.create(this, Uri.parse(file.getAbsolutePath()));//解析路径文件传递给mediaPlayer对象} else {textViewShow.setText("要播放的文件不存在");buttonStart.setEnabled(false);//设置为Button不在响应return;}/*** 按键监听* */mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {//注册一个回调时要调用的媒体源底在回放期间,已达到。@Overridepublic void onCompletion(MediaPlayer arg0) {// TODO Auto-generated method stubpaly();}});</span><pre name="code" class="java"><span style="font-size: 18px;">/*** 按键监听* */</span>

buttonStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub paly(); if (isPause) { buttonZanting.setText("暂停"); isPause = false; } buttonZanting.setEnabled(true); buttonStop.setEnabled(true); buttonStart.setEnabled(false);//播放不可用 } }); /** * 停止 * */ buttonStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub mediaPlayer.stop(); textViewShow.setText("停止播放音频"); buttonZanting.setEnabled(false); buttonStop.setEnabled(false); buttonStart.setEnabled(true);//只允许开始可以操作 } }); /** * 暂停监听 * */ buttonZanting.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if (mediaPlayer.isPlaying() && !isPause)//如果状态是在监听中,或者是 不是暂停中 { mediaPlayer.pause();//暂停播放 isPause = true; ((Button) arg0).setText("继续"); textViewShow.setText("暂停播放音频"); buttonStart.setEnabled(true); } else { mediaPlayer.start(); ((Button) arg0).setText("暂停"); textViewShow.setText("播放音频"); isPause = false; buttonStart.setEnabled(false); } } }); } /** * 播放 */ private void paly() { try { mediaPlayer.reset(); mediaPlayer.setDataSource(file.getAbsolutePath());//获取文件的绝对路径 mediaPlayer.prepare();//准备播放器 预加载音频 mediaPlayer.start();//开始播放 } catch (Exception e) { e.printStackTrace(); } } @Override protected void onDestroy() { // TODO Auto-generated method stub if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); } mediaPlayer.release();//释放资源 super.onDestroy(); }}

简单的效果:

2、稍微复杂的带有列表的播放器

2.1 xml文件

<span style="font-size:18px;color:#666600;"><?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.hejingzhou.bofangsdquanbuyinpin.MainActivity"android:background="@drawable/eee"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:id="@+id/linearLayout"><Buttonandroid:id="@+id/buttnoBrodcast"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="播放"/><Buttonandroid:id="@+id/buttnoPause"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="暂停"/><Buttonandroid:id="@+id/buttonUp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="上一首"/><Buttonandroid:id="@+id/buttonStop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="停止"/></LinearLayout><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent"android:drawSelectorOnTop="false"android:layout_below="@+id/linearLayout" /><Buttonandroid:id="@+id/buttonDown"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下一首"android:layout_above="@+id/listView"android:layout_toRightOf="@+id/linearLayout"android:layout_toEndOf="@+id/linearLayout" /><!--android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到android:drawSelectorOnTop="false" 点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的--></RelativeLayout></span><span style="color:#ff0000;"></span>

2.2MainActivity

package com.example.hejingzhou.bofangsdquanbuyinpin;<span style="font-size:18px;color:#666600;">import android.media.MediaPlayer;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;import java.io.File;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {private MediaPlayer mediaPlayer;private List<String> audioList = new ArrayList<String>();//定义一个存放音频的List表private int currentItem = 0;//当前项 当前播放歌曲的索引private Button buttonPause;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mediaPlayer = new MediaPlayer();//实例化mediaPlayer对象Button buttonUp = (Button) findViewById(R.id.buttonUp);Button buttonBrodcast = (Button) findViewById(R.id.buttnoBrodcast);buttonPause = (Button) findViewById(R.id.buttnoPause);Button buttonStop = (Button) findViewById(R.id.buttonStop);Button buttonDown = (Button) findViewById(R.id.buttonDown);audioList();/*** 为MediaPlayer 对象添加完成事件的监听器 在重写onCompletion方法中调用nextMusic()方法播放下一首音乐* */mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mp) {nextMusic();//播放下一首}});buttonUp.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {preMusic();}});buttonBrodcast.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {playMusic(audioList.get(currentItem));}});buttonPause.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(mediaPlayer.isPlaying()){mediaPlayer.pause();((Button)v).setText("继续");}else{mediaPlayer.reset();//继续播放((Button) v).setText("暂停");}}});buttonStop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(mediaPlayer.isPlaying()){mediaPlayer.stop();}buttonPause.setEnabled(false);}});buttonDown.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {nextMusic();}});}private void audioList() {getFiles("/data/SD/");//自己定 存放资源ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, audioList);//创建一个适配器ListView listView = (ListView) findViewById(R.id.listView);listView.setAdapter(adapter);//将list列表设置一个适配器listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {currentItem = position;//将当前项的索引值传递给currentItemplayMusic(audioList.get(currentItem));}});}/*** 定义一个保存合法的文件格式的字符串数组,并编写根据文件路径判断文件是否为音频文件方法* */private static String[] imageFormatSet = new String[] {"mp3","wav","3gp"};private static boolean isAudioFile(String path){for(String format : imageFormatSet){if(path.contains(format))//如果包含择个字符{return true;}}returnfalse;}/*** getFiles()函数 查找路径中的所有音频文件 并且将他添加到list里* */private void getFiles(String url){File files = new File(url);//创建一个新的文件对象File[] file = files.listFiles();//listFiles()该方法返回的路径名用于表示此抽象路径名的目录中的文件和目录的数组。try{for(File f : file)//遍历这个数组获取到的文件数组{if(f.isDirectory()) //如果是文件夹,那么就递归调用{getFiles(f.getPath());//递归}else{if(isAudioFile(f.getPath())){audioList.add(f.getPath());//找到音频文件并且将它添加到audioList表里}}}}catch (Exception e){e.printStackTrace();}}/*** 播放*/void playMusic(String path) {try {if (mediaPlayer.isPlaying()) {mediaPlayer.stop();}mediaPlayer.reset();mediaPlayer.setDataSource(path);//指定要播放文件的路径mediaPlayer.prepare();//预加载音频文件mediaPlayer.start();//播放音频buttonPause.setText("暂停");buttonPause.setEnabled(true);} catch (Exception e) {e.printStackTrace();}}/*** 下一首* */void nextMusic(){if(++currentItem >= audioList.size())//当对currentItem 进行+1操作后,如果其值大于等于音频文件的总数{currentItem = 0;}playMusic(audioList.get(currentItem));//调用playMusic()方法播放音乐}/*** 上一首* */void preMusic(){if(--currentItem >= 0)// 当对currentItem进行-1操作后 如果对其值大于等于0{if(currentItem >= audioList.size())//如果currentItem的值大于等于音频总数{currentItem = 0;}}else{currentItem = audioList.size() - 1;}playMusic(audioList.get(currentItem));}}</span>

存放指定文件路径

效果

源代码 :/detail/csdnhejingzhou/9368472

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