Android播放音乐

mainActivity如下:

package cn.com;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.app.Activity;
/**
 * 重要错误总结:
 * Eclipse报错prepareAsync called in state 8
 * 原因:
 * 在initView()方法中:
 * mMediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.big);
 * 为此mMediaPlayer设置了要播放的资源
 * 但是在点击stop按钮以后,执行了mMediaPlayer.release();
 * 这样的话就释放了资源.所以报错
 * 解决办法:
 * 在每次点击play的时候,都执行MediaPlayer.create()
 * 注意:
 * 可以在每次点击暂停的时候保存现在播放的位置即:
 * position=mMediaPlayer.getCurrentPosition();
 * 然后在每次播放的时候
 * mMediaPlayer.seekTo(position);
 * 这样就会从暂停处继续播放
 *
 *
 */
public class MainActivity extends Activity {
	private TextView mTextView;
	private MediaPlayer mMediaPlayer;
    private ImageView mPlayerImageView;
    private ImageView mPauseImageView;
    private ImageView mStopImageView;
    private boolean isPause=false;
    private boolean isStop=false;
    private boolean isStart=false;
    private int currentPosition=0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initView();
    }
   private void initView(){
	   mTextView=(TextView) findViewById(R.id.textView);
	   mPlayerImageView=(ImageView) findViewById(R.id.playerImageButton);
	   mPlayerImageView.setOnClickListener(new ButtonOnClickListener());
	   mPauseImageView=(ImageView) findViewById(R.id.pauseImageButton);
	   mPauseImageView.setOnClickListener(new ButtonOnClickListener());
	   mStopImageView=(ImageView) findViewById(R.id.stopImageButton);
	   mStopImageView.setOnClickListener(new ButtonOnClickListener());
	   mMediaPlayer=new MediaPlayer();
	  // mMediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.big);
	   mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
		public void onCompletion(MediaPlayer mp) {
			mMediaPlayer.release();
			mTextView.setText("音乐播放完毕");
		}
	});
	   mMediaPlayer.setOnErrorListener(new OnErrorListener() {
		public boolean onError(MediaPlayer mp, int what, int extra) {
			mMediaPlayer.release();
			mTextView.setText("音乐播放错误");
			return false;
		}
	});
   }

	private class ButtonOnClickListener implements OnClickListener {
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.playerImageButton:
				if (!isStart) {
					try {
						 mMediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.big);
						//mMediaPlayer.prepare();
						mMediaPlayer.seekTo(currentPosition);
						mMediaPlayer.start();
						mMediaPlayer.setLooping(true);
						mTextView.setText("开始音乐播放");
						isStart = true;
						isPause = false;
						isStop = false;
					} catch (Exception e) {
					}
				}

				break;
			case R.id.pauseImageButton:
				if (mMediaPlayer != null) {
					if (!isStop) {
						if (!isPause) {
							mMediaPlayer.pause();
							mTextView.setText("暂停音乐播放");
							currentPosition=mMediaPlayer.getCurrentPosition();
							isPause = true;
							isStop = false;
							isStart = false;
						} else {
							mMediaPlayer.start();
							mTextView.setText("继续播放音乐");
							isStart = true;
							isPause = false;
							isStop = false;
						}
					}
				}
				break;
			case R.id.stopImageButton:
				if (mMediaPlayer != null) {
					if (isStart) {
						if (!isStop) {
							mMediaPlayer.stop();
							mMediaPlayer.release();
							mTextView.setText("停止音乐播放");
							currentPosition=0;
							isStop = true;
							isPause = false;
							isStart = false;
						}
					}
				}
				break;

			default:
				break;
			}
		}

	}

}

main.xml如下:

<RelativeLayout 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" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="测试MediaPlayer"
        android:textSize="30sp"
    />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="70dip"
        android:orientation="horizontal"
        android:layout_below="@id/textView"
     >
        <ImageView
            android:id="@+id/playerImageButton"
            android:layout_width="70dip"
            android:layout_height="70dip"
            android:src="@drawable/player"
         />
        <ImageView
            android:id="@+id/pauseImageButton"
            android:layout_width="70dip"
            android:layout_height="70dip"
            android:src="@drawable/pause"
            android:layout_marginLeft="20dip"
         />
        <ImageView
            android:id="@+id/stopImageButton"
            android:layout_width="70dip"
            android:layout_height="70dip"
            android:src="@drawable/stop"
            android:layout_marginLeft="20dip"
         />
    </LinearLayout>

</RelativeLayout>

 

时间: 2025-01-21 12:45:12

Android播放音乐的相关文章

Android播放音乐案例分享

本文实例为大家分享了Android播放音乐案例的具体实现代码,供大家参考,具体内容如下 效果: 分析: 和上一篇文章的结构是一样的,只不过我们需要在这里里面加上播放音乐的一些操作: 其实也就是调用系统的播放音乐的API而已,写在服务里面就好, //媒体播放器 private MediaPlayer player; public void onCreate() { File file=new File(Environment.getExternalStorageDirectory(),"a.mp3

android 获取当前播放音乐的sampling rate

问题描述 android 获取当前播放音乐的sampling rate 我现在要做一个app,需要获取系统当前正在播放音乐的sampling raete,app本身不播放音乐 ,也就是说要能获取其他app播放的音乐的sampling rate信息,有办法做到吗 解决方案 跨进程通信,需要回我就可以啦 解决方案二: android本地音乐播放(一)Android播放音乐

android音乐播放器-Android关于音乐播放器频谱可视化图形的问题,急!

问题描述 Android关于音乐播放器频谱可视化图形的问题,急! 如上图,底部频谱可视化图形不会动了,不知道是什么原因造成的.首先我说下我目前知道的可能造成这种情况的事情.因为我的这个播放器里的播放列表这一项,要同步android系统媒体库里的播放列表.也就是说在系统的播放器中的播放列表会出现在我的播放器的播放列表中.本来我的包名是这样的:com.music.musicmenu 这样就不会出现上述问题,当我把包名改成系统的com.android.music 这时就会出现上述问题.也就是频谱不会动

Android MediaPlayer 音乐播放

主要使用 android.media.MediaPlayer; android.widget.SeekBar;    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/Layout01" android:

Android简单音乐播放实例_Android

Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了.Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行. Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,例如我们打开一个音乐播放器来听音乐,在听音乐的同时也想做下其它的事情,比如上网聊Q.或者上网浏览新闻之类的事情.这样的话,我们就需要用到S

jamendo_android 一个开源的Android在线音乐播放器实例

一个开源的Android在线音乐播放器实例.整套源码主要实现了专辑浏览,音乐在线播放,下载等等.虽说看起来功能不多,但是绝对十分具有参考价值,考虑的十分严谨.因为里面应用了网络通讯,json解析,全局mediaservice,自定义View组件,自定义 Adapter,application全局缓存,变量等等,所有要在项目中考虑到的优化问题. 项目主页:http://www.open-open.com/lib/view/home/1344734233116

android做音乐播放器,为什么都用aidl呢,bindservice不也可以么?

问题描述 android做音乐播放器,为什么都用aidl呢,bindservice不也可以么? android做音乐播放器,为什么都用aidl呢,bindservice不也可以么? 解决方案 bindservice是与activity绑定的.如果acitivity退出的话,service也就销毁了,无法后台播放.当然,可以用startservice

android虚拟机-android开发 音乐播放器 把歌曲添加到我的最爱列表

问题描述 android开发 音乐播放器 把歌曲添加到我的最爱列表 歌曲在数据库,能播放 , ,不知道怎样把它添加到我的最爱列表里 , ,求代码说明 解决方案 1.首先要知道你那个列表是什么控件 2.把歌曲信息add进去 3.设置点击事件,若点击对应歌曲则将歌曲路径传入播放器

android多媒体音乐(MediaPlayer)播放器制作代码

本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下. 首先,在AndroidManifest.xml中配置权限 <!-- 读取手机中的音乐 -->    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  注释:Android多媒体音乐的几种来源 1. 在andriod的应用中 2     MediaPlayer.crea