免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1142 | 回复: 0
打印 上一主题 下一主题

[Android] Android——简单音乐播放器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-28 11:18 |只看该作者 |倒序浏览
使用MediaPlayer做的简单音乐播放器
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  3.     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
  4.     android:paddingRight="@dimen/activity_horizontal_margin"
  5.     android:paddingTop="@dimen/activity_vertical_margin"
  6.     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
  7.     android:id="@+id/relativeLayout">

  8.     <TextView android:text="音频播放器" android:layout_width="match_parent"
  9.         android:layout_height="wrap_content"
  10.         android:id="@+id/textView" />

  11.     <LinearLayout
  12.         android:orientation="horizontal"
  13.         android:layout_width="fill_parent"
  14.         android:layout_height="fill_parent"
  15.         android:layout_below="@+id/textView"
  16.         android:layout_alignParentLeft="true"
  17.         android:layout_alignParentStart="true">

  18.         <Button
  19.             android:layout_width="wrap_content"
  20.             android:layout_height="wrap_content"
  21.             android:text="播放"
  22.             android:id="@+id/button"
  23.             android:layout_weight="0.33" />

  24.         <Button
  25.             android:layout_width="wrap_content"
  26.             android:layout_height="wrap_content"
  27.             android:text="停止"
  28.             android:id="@+id/button2"
  29.             android:layout_weight="0.33" />

  30.         <Button
  31.             android:layout_width="wrap_content"
  32.             android:layout_height="wrap_content"
  33.             android:text="暂停"
  34.             android:id="@+id/button3"
  35.             android:layout_weight="0.33" />
  36.     </LinearLayout>

  37. </RelativeLayout>
复制代码
  1. package com.basillee.asus.demo;
  2.   
  3. import android.app.Activity;
  4. import android.media.MediaPlayer;
  5. import android.os.Bundle;
  6. import android.os.Environment;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.TextView;
  11. import android.widget.Toast;
  12.   
  13. import java.io.File;
  14.   
  15.   
  16. public class MainActivity extends Activity {
  17.   
  18.     private MediaPlayer mediaPlayer;//MediaPlayer对象
  19.     private boolean isPause=false;//是否暂停
  20.     private File file;//要播放的文件
  21.     private TextView hint;//声明提示信息的文本框
  22.   
  23.     @Override
  24.     protected void onCreate(Bundle savedInstanceState) {
  25.         super.onCreate(savedInstanceState);
  26.         setContentView(R.layout.activity_main);
  27.         //获取各功能按钮
  28.         final Button button=(Button)findViewById(R.id.button);//播放
  29.         final Button button1=(Button)findViewById(R.id.button2);//暂停
  30.         final Button button2=(Button)findViewById(R.id.button3);//停止
  31.   
  32.         hint=(TextView)findViewById(R.id.textView);
  33.         if(!isFileExist()){
  34.             button.setEnabled(false);
  35.         }
  36.         //对MediaPlayer对象添加事件监听,当播放完成时重新开始音乐播放
  37.         mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
  38.             @Override
  39.             public void onCompletion(MediaPlayer mp) {
  40.                 play();
  41.             }
  42.         });
  43.   
  44.         //对播放按钮进行事件监听
  45.         button.setOnClickListener(new View.OnClickListener() {
  46.             @Override
  47.             public void onClick(View v) {
  48.                 play();
  49.                 if(isPause){
  50.                     button1.setText("暂停");
  51.                     isPause=false;
  52.                 }
  53.                 button1.setEnabled(true);
  54.                 button2.setEnabled(true);
  55.                 button.setEnabled(false);
  56.             }
  57.         });
  58.   
  59.         //对暂停、继续按钮添加事件监听器
  60.         button1.setOnClickListener(new View.OnClickListener() {
  61.             @Override
  62.             public void onClick(View v) {
  63.                 if(mediaPlayer.isPlaying()&&!isPause){
  64.                     mediaPlayer.pause();
  65.                     isPause=true;
  66.                     ((Button)v).setText("继续");
  67.                     hint.setText("暂停播放音频....");
  68.                     button.setEnabled(true);
  69.                 }else{
  70.                     mediaPlayer.start();
  71.                     ((Button)v).setText("暂停");
  72.                     hint.setText("继续播放音频....");
  73.                     button.setEnabled(false);
  74.                 }
  75.             }
  76.         });
  77.   
  78.         //对停止按钮添加事件监听器
  79.         button2.setOnClickListener(new View.OnClickListener() {
  80.             @Override
  81.             public void onClick(View v) {
  82.                 mediaPlayer.stop();
  83.                 hint.setText("停止播放音频...");
  84.                 button1.setEnabled(false);
  85.                 button2.setEnabled(false);
  86.                 button.setEnabled(true);
  87.             }
  88.         });
  89.     }
  90.   
  91.     @Override
  92.     protected void onDestroy() {
  93.         if(mediaPlayer.isPlaying()){
  94.             mediaPlayer.stop();
  95.         }
  96.         mediaPlayer.release();
  97.         super.onDestroy();
  98.     }
  99.   
  100.     //判断文件是否存在
  101.     private boolean  isFileExist(){
  102.         file=new File(Environment.getExternalStorageDirectory()+File.separator+"myMP32.mp3");
  103.         if(file.exists()){
  104.           //  mediaPlayer=new MediaPlayer();
  105.             mediaPlayer=MediaPlayer.create(this,R.raw.my);
  106.             try {
  107.   
  108. //                mediaPlayer.setDataSource(file.getAbsolutePath());
  109. //                mediaPlayer.prepare();//预加载音频
  110. //                mediaPlayer.start();//播放音乐
  111.             }catch (Exception e) {
  112.                 e.printStackTrace();
  113.             }
  114.             Toast.makeText(this,"file exist",Toast.LENGTH_LONG).show();
  115.             return true;
  116.         }else{
  117.             Toast.makeText(this,"file don't exist",Toast.LENGTH_LONG).show();
  118.         }
  119.         return false;
  120.     }
  121.   
  122.     //播放音乐的方法
  123.     private void play(){
  124.         try{
  125.             mediaPlayer.reset();//从新设置要播放的音乐
  126. //           mediaPlayer.setDataSource(file.getAbsolutePath());
  127. //            mediaPlayer.prepare();//预加载音频
  128.             mediaPlayer=MediaPlayer.create(this,R.raw.my);
  129.             mediaPlayer.start();//播放音乐
  130.             hint.setText("Music is starting");
  131.         } catch (Exception e) {
  132.             e.printStackTrace();
  133.             Log.e("err",e.getMessage());
  134.         }
  135.         return ;
  136.     }
  137. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP