`
byandby
  • 浏览: 1697322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 播放音乐示例

阅读更多
   这个例子是播放音乐的一个小例子也比较简单,大家需要去下载2个.mp3结尾的歌曲,然后放到SD卡里边 进行测试,就可以看到效果了。 运行效果如下



main.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <ListView 
  android:id="@id/android:list"
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:drawSelectorOnTop="false"/>
  <ImageButton
  android:id="@+id/LastImageButton"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"  
  android:layout_x="10px"
  android:layout_y="70px"
  android:src="@drawable/last"  
  />
  <ImageButton
  android:id="@+id/StopImageButton" 
  android:layout_height="wrap_content"  
  android:layout_width="wrap_content"
  android:layout_x="70px"
  android:layout_y="70px"
  android:src="@drawable/stop" 
  />  
  <ImageButton
  android:id="@+id/StartImageButton" 
  android:layout_height="wrap_content"  
  android:layout_width="wrap_content" 
  android:layout_x="130px"
  android:layout_y="70px"
  android:src="@drawable/start" 
  />
  <ImageButton
  android:id="@+id/PauseImageButton" 
  android:layout_height="wrap_content"  
  android:layout_width="wrap_content" 
  android:layout_x="190px"
  android:layout_y="70px" 
  android:src="@drawable/pause" 
  />  
  <ImageButton
  android:id="@+id/NextImageButton"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" 
  android:layout_x="250px"
  android:layout_y="70px"
  android:src="@drawable/next"  
  />
</AbsoluteLayout>


musicitme.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/TextView01"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"/>


只有一个类 Activity01
package com.yarin.android.Examples_07_01;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;

public class Activity01 extends ListActivity 
{
	/* 几个操作按钮 */
	private ImageButton	mFrontImageButton	= null;
	private ImageButton	mStopImageButton	= null;
	private ImageButton	mStartImageButton	= null;
	private ImageButton	mPauseImageButton	= null;
	private ImageButton	mNextImageButton	= null;

	/* MediaPlayer对象 */
	public MediaPlayer	mMediaPlayer		= null;
	
	/* 播放列表 */
	private List<String> mMusicList = new ArrayList<String>();
	
	/* 当前播放歌曲的索引 */
	private int currentListItme = 0;
	
	/* 音乐的路径 */
	private static final String MUSIC_PATH = new String("/sdcard/");

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		/* 更新显示播放列表 */
		musicList();
		/* 构建MediaPlayer对象 */
		mMediaPlayer		= new MediaPlayer();

		mFrontImageButton = (ImageButton) findViewById(R.id.LastImageButton); 
		mStopImageButton = (ImageButton) findViewById(R.id.StopImageButton);
		mStartImageButton = (ImageButton) findViewById(R.id.StartImageButton); 
		mPauseImageButton = (ImageButton) findViewById(R.id.PauseImageButton);
		mNextImageButton = (ImageButton) findViewById(R.id.NextImageButton); 
		
		//停止按钮
		mStopImageButton.setOnClickListener(new ImageButton.OnClickListener() 
		{
			@Override
			public void onClick(View v)
			{
				/* 是否正在播放 */
				if (mMediaPlayer.isPlaying())
				{
					//重置MediaPlayer到初始状态
					mMediaPlayer.reset();
				}
			}
		}); 
		
		//开始按钮
		mStartImageButton.setOnClickListener(new ImageButton.OnClickListener() 
		{
			@Override
			public void onClick(View v)
			{
				playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
			}
		});  
		
		//暂停
		mPauseImageButton.setOnClickListener(new ImageButton.OnClickListener() 
		{
			public void onClick(View view)
			{
				if (mMediaPlayer.isPlaying())
				{
					/* 暂停 */
					mMediaPlayer.pause();
				}
				else 
				{
					/* 开始播放 */
					mMediaPlayer.start();
				}
			}
		});
		
		//下一首
		mNextImageButton.setOnClickListener(new ImageButton.OnClickListener() 
		{
			@Override
			public void onClick(View arg0)
			{
				nextMusic();
			}
		});
		//上一首
		mFrontImageButton.setOnClickListener(new ImageButton.OnClickListener() 
		{
			@Override
			public void onClick(View arg0)
			{
				FrontMusic();
			}
		});
	}
	
	/*<----------------------------------------------------------------->*/
	
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		if ( keyCode ==  KeyEvent.KEYCODE_BACK)
		{
			mMediaPlayer.stop();
			mMediaPlayer.release();
			this.finish();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
	
	
	@Override
	/* 当我们点击列表时,播放被点击的音乐 */
	protected void onListItemClick(ListView l, View v, int position, long id)
	{
		currentListItme = position;
		playMusic(MUSIC_PATH + mMusicList.get(position));
	}


	/* 播放列表 */
	public void musicList()
	{
		//取得指定位置的文件设置显示到播放列表
		File home = new File(MUSIC_PATH);
		if (home.listFiles(new MusicFilter()).length > 0)
		{
			for (File file : home.listFiles(new MusicFilter()))
			{
				mMusicList.add(file.getName());
			}
			ArrayAdapter<String> musicList = new ArrayAdapter<String>(Activity01.this,R.layout.musicitme, mMusicList);
			setListAdapter(musicList);
		}
	}
	
	private void playMusic(String path)
	{
		try
		{
			/* 重置MediaPlayer */
			mMediaPlayer.reset();
			/* 设置要播放的文件的路径 */
			mMediaPlayer.setDataSource(path);
			/* 准备播放 */
			mMediaPlayer.prepare();
			/* 开始播放 */
			mMediaPlayer.start();
			mMediaPlayer.setOnCompletionListener(new OnCompletionListener() 
			{
				public void onCompletion(MediaPlayer arg0)
				{
					//播放完成一首之后进行下一首
					nextMusic();
				}
			});
		}catch (IOException e){}
	}

	/* 下一首 */
	private void nextMusic()
	{
		if (++currentListItme >= mMusicList.size())
		{
			currentListItme = 0;
		}
		else
		{
			playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
		}
	}
	
	/* 上一首 */
	private void FrontMusic()
	{
		if (--currentListItme >= 0)
		{
			currentListItme = mMusicList.size();
		}
		else
		{
			playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
		}
	}

}

/* 过滤文件类型 */
class MusicFilter implements FilenameFilter
{
	public boolean accept(File dir, String name)
	{
		//这里还可以设置其他格式的音乐文件
		return (name.endsWith(".mp3"));
	}
}



  源码见附件,大家需要下载2首.mp3 结尾的歌曲进行测试

  • 大小: 22.8 KB
分享到:
评论

相关推荐

    Android Studio实现简单音乐播放功能的示例代码

    音乐服务端负责播放音乐和收发广播的功能。当音乐服务端作为接收器时,只能接收到主页面广播的控制消息;作为发送器时,向主页面发送歌曲信息更新的消息 主页面负责进度条以及音量按钮的监听,同时也有收发广播的...

    Android下MediaPlayer播放MP3示例

    这个示例展示了如何在Android应用中使用`MediaPlayer`组件播放MP3文件,包括设置数据源、准备播放、处理播放状态变化等关键步骤。通过阅读`MediaPlayerDemo`项目的源代码,你可以更深入地理解这些概念,并将其应用于...

    android 漂浮窗口示例源码

    本文将深入探讨如何在Android平台上实现一个类似于"天天动听"歌词显示效果的漂浮窗口,即`android ophone 漂浮计算器 漂浮 lyric`的示例源码。 首先,我们需要了解在Android中实现漂浮窗口的核心组件——`Service`...

    android游戏开发示例

    Android SDK提供了MediaPlayer和SoundPool类来处理音频播放,对于更复杂的需求,可能需要第三方库如OpenAL或FMOD。 网络功能在许多游戏中也是必要的,比如多人在线游戏。Android的Socket编程和HTTP/HTTPS请求库可以...

    Android实例之MediaPlayer播放音乐和视频

    压缩包内的文件如"Unit1.pas"和"Unit1.fmx"可能是Delphi项目中的源代码文件,"Android实例之MediaPlayer播放音乐和视频.jpg"可能是示例的截图。如果你想要了解更多关于这个实例的细节,可以查看这些文件。 总之,这...

    Android 音乐播放源码.zip

    - **异步加载和线程管理**:考虑到播放音乐可能会占用较大的CPU和内存资源,需要合理地处理线程,如使用Handler、AsyncTask或者协程来避免阻塞主线程。 通过分析和学习这个源码,开发者可以掌握Android音频播放的...

    android 音乐律动频谱实现

    "android 音乐律动频谱实现"这个项目就是针对这一需求,通过动态显示音乐频谱来增强用户对音频播放的感知。下面我们将深入探讨相关知识点。 1. **Android 音频播放**:在Android系统中,音频播放主要依赖`...

    android 游戏源码示例斗地主

    2. 音效与音乐:游戏中的音效增强用户体验,需考虑播放、暂停和循环等控制。 七、性能优化 1. 垃圾回收:避免无用对象的内存占用,减少因垃圾回收引起的卡顿。 2. 线程管理:游戏逻辑和UI更新通常在不同线程中执行...

    Android soundpool播放音乐声音池应用举例.rar

    本示例将深入探讨如何利用SoundPool来播放音乐,并提供一个基础的实现案例。 首先,我们需要了解SoundPool的基本概念。它是一个内存管理的音频缓存系统,可以预先加载音频资源到内存中,以便在需要时迅速播放。这与...

    android中播放音乐的实例

    在Android平台上,播放音乐是一项常见的任务,无论是游戏、应用程序还是用户界面,都需要音频功能来增强用户体验。本实例将深入探讨如何在Android应用中实现音乐播放功能。我们将主要关注以下几个方面: 1. **...

    android守护进程示例

    然而,有时候开发者需要创建一些持续运行的服务,比如后台音乐播放、定时任务或网络监控等,这就需要用到守护进程技术。 在"非root下服务进程常驻"这个场景中,我们关注的是如何在不获取设备超级用户权限(root)的...

    android google 官方全部示例代码

    后台服务可以执行长时间运行的任务,如音乐播放、定时任务等。理解Service的生命周期和使用方式,对实现后台操作至关重要。 11. **权限**: Android 8引入了新的权限策略,例如后台位置访问限制。学习如何适应...

    android音乐和视频播放

    在Android平台上,开发音乐和视频播放功能是一项常见的任务,它涉及到多媒体处理、用户界面设计以及系统服务的调用。在本篇文章中,我们将深入探讨如何在Android应用中实现音乐和视频播放,特别是带有播放条的界面...

    delphi xe 开发的播放器示例,Android

    标签 "android 播放器" 确定了应用的主要功能,即在 Android 设备上播放音乐。在 Android 应用开发中,播放音频通常涉及到使用 Media Framework 或者其他音频处理库,如 Android SDK 中的 MediaPlayer 类。 在提供...

    Android之通过网络播放一首音乐

    在Android平台上,通过网络播放音乐是一项常见的功能,广泛应用于音乐应用、有声读物和电台应用等。本教程将深入探讨如何实现这一功能,主要基于提供的"android_intent_playMusic"这个压缩包文件中的示例代码。 ...

    Android播放在线音频文件

    本示例项目"OnlineMusicPlayer"旨在提供一个基础的实现方案,帮助开发者理解和掌握如何在Android应用中实现在线音乐播放。以下是关于这个主题的一些关键知识点: 1. **MediaPlayer类**:Android系统提供了`...

    Android Studio音乐播放器简单例子

    - 要在Android应用中播放音乐,可以使用`MediaPlayer`类,它是Android SDK中内置的媒体播放组件,支持播放音频和视频文件。 - `MediaPlayer`类提供了如`setDataSource()`(设置数据源)、`prepare()`(准备播放)...

    音乐播放服务示例

    这个"音乐播放服务"示例展示了如何在Android中使用Service组件实现后台音乐播放。Service的使用不仅限于音乐播放,还可以用于处理定时任务、数据同步等长期运行的任务。理解并熟练掌握Service的使用对于任何Android...

Global site tag (gtag.js) - Google Analytics