开发者社区> 文艺小青年> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Android音乐播放-MediaPlayer

简介:
+关注继续查看

当你坐公交无聊的时候,当你淹没在地铁中人潮中的时候,你是否想内心保持一份的安静呢,那么请带上耳机,打开你的音乐播放器,听一首老歌带你进入宁静的世界,音乐播放这个功能在智能手机出现之前,诺基亚时代,甚至追溯到最开始的大哥大的时候都是属于音频的范畴。Android中播放音频不可避免的使用的一个类是Mediaplayer,视频调用也是这个类。扯远了,开始正题吧:

基础维护

首先这个时候来看看要实现的效果吧:

 

 

布局如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.googlemedia.MainActivity" >
 
    <EditText
        android:id="@+id/edit_musicPath"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入你喜欢歌曲的路径" />
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
 
        <Button
            android:id="@+id/btn_Play"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="playEvent"
            android:text="播放" />
 
        <Button
            android:id="@+id/btn_Pause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="pauseEvent"
            android:text="暂停" />
 
        <Button
            android:id="@+id/btn_Stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="stopEvent"
            android:text="停止" />
 
        <Button
            android:id="@+id/btn_Replay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="replayEvent"
            android:text="重播" />
    </LinearLayout>
 
</LinearLayout>

Demo完成

音频文件:

 

播放按钮事件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public  void playEvent(View view){
     editText=(EditText) findViewById(R.id.edit_musicPath);
     String pathString=editText.getText().toString().trim();
     File file=new File(pathString);
     if (file.exists()) {
         try {
             mediaPlayer = new MediaPlayer();
             mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
             mediaPlayer.setDataSource(pathString);
             mediaPlayer.prepare();
             mediaPlayer.start();
             //多次点击播放按钮容易混音
             btn_PlayButton.setEnabled(false);
             //播放完之后需要回调的时候设置显示
             mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                
               @Override
               public void onCompletion(MediaPlayer mp) {
                   // TODO Auto-generated method stub
                     btn_PlayButton.setEnabled(true);
               }
           });
       catch (IllegalArgumentException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       catch (SecurityException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       catch (IllegalStateException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
   }else {
       Toast.makeText(this"Sorry,你输入的路径有问题,请仔细检查",Toast.LENGTH_SHORT).show();
   }
}

 播放效果:

暂停和继续事件:

1
2
3
4
5
6
7
8
9
10
11
public  void  pauseEvent(View view){
    if ( btn_PauseButton.getText().equals("继续")) {
       mediaPlayer.start();
        btn_PauseButton.setText("暂停");
       return;
   }
    if (mediaPlayer!=null&&mediaPlayer.isPlaying()) {
        mediaPlayer.pause();
        btn_PauseButton.setText("继续");
   }
}

暂停和继续效果:

停止事件:

1
2
3
4
5
6
7
8
9
10
11
public  void stopEvent(View view){
     if (mediaPlayer!=null&&mediaPlayer.isPlaying()) {
         btn_PlayButton.setEnabled(true);
         mediaPlayer.stop();
         //释放mediaplayer否则的话会占用内存
         mediaPlayer.release();
         mediaPlayer=null;
    }
     btn_PauseButton.setText("暂停");
     btn_PlayButton.setEnabled(true);
 }

 重播事件:

1
2
3
4
5
6
7
8
9
public  void  replayEvent(View view){
    if (mediaPlayer!=null&&mediaPlayer.isPlaying()) {
        mediaPlayer.seekTo(0);
   }else {
       playEvent(view);
   }
    //重播的时候应该设置播放的状态
    btn_PlayButton.setEnabled(true);
}

  稍微简单的写了写,如果有不当之处,请大家多多指教~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4088637.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android命令行播放MP3音乐
/*************************************************************************** * Android命令行播放MP3音乐 * 说明: * 有时候我们会遇到Touch不能使用,也没有鼠标,但是我们要在Android上测试 * 声卡情况,所以我们会想到在adb或者debug终端上使用命令行来播放声音。
1057 0
Android Studio进行APP设计开发之矢量图及XML文件转换
Android Studio进行APP设计开发之矢量图及XML文件转换
0 0
Android studio开发APP时设置更改启动时的主界面程序
Android studio开发APP时设置更改启动时的主界面程序
0 0
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
0 0
Android开发:使用Java对手机截图图片进行任意区域的颜色对比度处理操作
开发项目过程中,对于手机屏幕截图,需要对获取到的截图的任意部分进行区域颜色对比度的识别操作,由此判定任意指定区域是否满足某对比度基本标准,但是该功能在网上任何地方都没有找到过Java方面的代码,于是根据RGB转换测试的原理:即获取每个像素点的RGB,通过RGB对比度定义公式进行像素点的集合换取。
0 0
开发android项目的常用jar包
开发android项目的常用jar包
0 0
Android Studio开发Android APP
Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。 Android Studio 主窗口由下图标注的几个逻辑区域组成:
0 0
开发时遇到监听的事件处理机制和SoundPool播放音效解决方法以及外部类的使用【Android】
开发时遇到监听的事件处理机制和SoundPool播放音效解决方法以及外部类的使用【Android】
0 0
【Android】开发Android应用时对于Handler消息传递与缓存问题深入运用and理解
【Android】开发Android应用时对于Handler消息传递与缓存问题深入运用and理解
0 0
ANDROID开发之http调试常见错误
ANDROID开发之http调试常见错误
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
From Java/Android to Swift iOS
立即下载
《深入探索Android热修复技术原理》
立即下载
Android组件化实现
立即下载