`

两种方式播放音乐

 
阅读更多

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/url"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="url方式播放" />

    <Button
        android:id="@+id/uri"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="uri方式播放" />

    <Button
        android:id="@+id/stop"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="停止" />

</LinearLayout>

 SdService.java

写道
package com.cat.test;

import java.io.File;

import android.os.Environment;

public class SdService
{
private static Boolean sdCardExist;

/**
* 获得sdcard
*
* @return
*/
public static String getSDPath()
{
File sdDirFile = null;
sdCardExist = Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
if (sdCardExist)
{
sdDirFile = Environment.getExternalStorageDirectory();// 获取跟目录
return sdDirFile.toString();
} else
{
return "";
}
}

}

 playService

package com.cat.test;

import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.util.Log;

public class playService
{
	private static MediaPlayer mPlayer;
	/** 为url时 */
	public static final int URLPLAY = 0;
	/** 为uri时 */
	public static final int URIPLAY = 1;
	private static final String TAG = "playService";

	public static void PlayMusic(Context context, String url, int play)
	{
		mPlayer = new MediaPlayer();
		switch (play)
		{
		case URLPLAY:
			urlPlayMusic(url);
			break;
		case URIPLAY:
			Uri uri = Uri.parse(url);
			uriPlayMusic(uri, context);
			break;
		default:
			break;
		}
	}

	public static void stopMusic()
	{
		if (mPlayer != null)
		{
			/* 是否正在播放 */
			if (mPlayer.isPlaying())
			{
				// 重置MediaPlayer到初始状态
				mPlayer.stop();
			}
		}
	}

	private static void urlPlayMusic(String url)
	{
		try
		{
			Log.v(TAG, "urlPlayMusic-->" + url);
			// 重置MediaPlayer
			mPlayer.reset();
			// 设置要播放的文件的路径
			mPlayer.setDataSource(url);
			// 准备播放
			mPlayer.prepare();
			// 开始播放
			mPlayer.start();
			// 音乐播放完执行的操作
			mPlayer.setOnCompletionListener(new OnCompletionListener()
			{

				@Override
				public void onCompletion(MediaPlayer mp)
				{
					// TODO Auto-generated method stub

				}
			});
		} catch (Exception e)
		{
			// TODO: handle exception
			Log.v(TAG, "urlPlayMusic-->" + "播放失败");
		}

	}

	private static void uriPlayMusic(Uri uri, Context context)
	{

		try
		{
			Log.v(TAG, "uriPlayMusic-->" + uri.toString());
			mPlayer.reset();
			/* 设置要播放的文件的路径 */
			mPlayer.setDataSource(context, uri);
			/* 准备播放 */
			mPlayer.prepare();
			/* 开始播放 */
			mPlayer.start();
			mPlayer.setOnCompletionListener(new OnCompletionListener()
			{

				@Override
				public void onCompletion(MediaPlayer mp)
				{
					// TODO Auto-generated method stub

				}
			});
		} catch (Exception e)
		{
			// TODO: handle exception
			Log.v(TAG, "uriPlayMusic-->" + "播放失败");
		}

	}
}

 

 PlayMusicActivity.java

package com.cat.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class PlayMusicActivity extends Activity
{
	/** Called when the activity is first created. */
	private Button urlPlayButton;
	private Button uriPlayButton;
	private Button stopButton;
	private String playUrlString;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		urlPlayButton = (Button) findViewById(R.id.url);
		uriPlayButton = (Button) findViewById(R.id.uri);
		playUrlString = SdService.getSDPath() + "/test.mp3";
		stopButton = (Button) findViewById(R.id.stop);
		OnClickListener playOnClickListener = new OnClickListener()
		{

			@Override
			public void onClick(View v)
			{
				// TODO Auto-generated method stub
				switch (v.getId())
				{
				case R.id.url:
					playService.PlayMusic(PlayMusicActivity.this,
							playUrlString, playService.URLPLAY);
					break;
				case R.id.uri:
					playService.PlayMusic(PlayMusicActivity.this,
							playUrlString, playService.URIPLAY);
					break;
				case R.id.stop:
					playService.stopMusic();
					break;

				default:
					break;
				}
			};
		};

		urlPlayButton.setOnClickListener(playOnClickListener);
		uriPlayButton.setOnClickListener(playOnClickListener);
		stopButton.setOnClickListener(playOnClickListener);

	}
}

 

分享到:
评论

相关推荐

    公司年会游戏抽奖随机摇号与音乐管理播放软件

    摇奖方式通过“F7”键打开配置框进行配置,存在两种摇奖方式,1、游戏方式;2、抽奖方式。两种方式可独立配置排除项,缺省为已参加游戏者/抽奖者将不会再被抽上,摇号过程为可参与人员随机抽取,结果将存储到“名单....

    两种播放wave文件的方法(2KB)...

    VB之多媒体精彩编程-两种播放wave文件的方法(2KB)

    Android:在service和activity之中,实现音乐播放进度条传递信息的两种方式

    实现播放时的进度条显示,或是定时从service获取某些信息,是我们日常开发中经常遇到的需求,下面介绍当音乐再service中运行时,activity如果获取音乐进度信息的两种方式: 一、在activity中建立消息接收机制 我们...

    安卓studio 音乐播放

    安卓播放本地音乐,两种方式:1)播放列表,加载本地所有音乐文件,双击播放 2)放到raw文件夹下,点击播放需要的文件。 开发版本:androidstudio 3.5.3

    Android实现音乐播放进度条传递信息的两种方式(在service和activity中)

    实现播放时的进度条显示,或是定时从service获取某些信息,是我们日常开发中经常遇到的需求,下面介绍当音乐再service中运行时,activity如果获取音乐进度信息的两种方式: 一、在activity中建立消息接收机制 我们...

    PyQt5图形界面播放音乐的实例

    print(播放音乐1) track = pygame.mixer.music.load(r此处为音频文件的路径) pygame.mixer.music.play() time.sleep(10) pygame.mixer.music.stop() 另一种方法, 两种都亲测可行 pygame.init() sound = pygame....

    单片机课程设计报告利用蜂鸣器播放音乐.docx

    2.蜂鸣器及其工作原理: 单片机课程设计报告利用蜂鸣器播放音乐全文共8页,当前为第1页。 蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等...

    mci播放视频(不是音频)基于MFC对话框项目,也可以用于win32项目,两种项目下不同处重载了方法

    mci播放视频(不是音频)基于MFC对话框项目,也可以用于win32项目,两种项目下不同处重载了方法。此项目只能播放avi格式的视频文件。如果不能正常播放,压缩包中有个 tscc解码器 安装程序,安装该文件就可以

    爱秀音乐网站源码,在线音乐播放程序

    25、两种音乐搜索方式(按歌名和歌手方式); 26、最新音乐、推荐音乐、点歌信息列表显示; 27、音乐排行功能(包括音乐总排行、今日试听排行、各音乐分类排行); 28、管理员换肤功能(方便你网站界面的修改); 29...

    两种悬浮框的实现

    两种悬浮框,模仿淘宝悬浮停靠效果,到达顶部时会停在顶部,保证总是显示悬浮框

    android中音乐播放源码

    android中音乐播放源码,包括对MediaPlayer和SoundPool进行两种比较和两种播放的实现代码以及mp3 mid ogg资源 原文地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/28/6101737.aspx

    C++实现音频播放时音量调节功能

    C++实现音量调节和获取的方法,主要有两种情况,一种是直接调节系统的音量,一种是调节当前播放的PCM数据的音量,如果不考虑当前应用程序调节音量对系统中其他音量控制的影响,可以直接使用系统音量调节功能;...

    音视频定时播放系统免费.zip

    1、定时播放功能–可按照企业、学校等设置的时间表通过本软件定时播放背景音乐、铃声、电影、广播操、眼保健操、国歌、预备音乐铃、...6、软件分为音频定时播音和视频定时播出两种版本,支持所有音频、视频媒体文件。

    单片机课程设计报告(利用蜂鸣器播放音乐).doc

    单片机课程设计报告(利用蜂鸣器播放音乐) -西安科技大学- 成绩 课程设计; 嵌入式系统应用 题目名称;利用蜂鸣器实现音乐播放功能 姓 名; 学 号; 班 级; 完成时间; 1/12页 -西安科技大学- 1设计的任务 设计内容...

    C#中支持多线程mp3、wav两种格式音乐文件的调用

    支持多个音乐文件同时播放,速度快,支持MP3/WAV等格式,可暂停,直接调用API函数就行

    自定自定义音乐播放器项

    实现音乐文件的分享——至少要能使用短信和蓝牙两种方式分享,短信分享时必须提供用户输入手机号或者从通信录中直接获取两种方式,不得直接通过intent对象调用手机的相应功能 实现提高功能(20分) 实现音乐库的生成...

    Android开发中播放声音的两种方法分析

    主要介绍了Android开发中播放声音的两种方法,结合实例形式简单分析了Android音频播放的常用函数、使用方法及相关注意事项,需要的朋友可以参考下

    模拟实现一个多功能电子设备,它既能播放mp3歌曲,同时还能够借助播放器的界面来监测脉动。

    1.这个设备有一个屏幕,屏幕上可以显示两种界面: 界面1是显示视图,有一个进度条,可以显示当前所播放音乐的节拍或是脉动,以节拍为例,比如是100 BPM 还是 120BPM(BPM是节拍的度量单位)。还有一个文本,显示...

    HTML背景音乐

    HTML添加背景音乐两种方式实现,这种背景音乐是打开叶子后直接播放的,在网页上不会有显示。这是最简单的一种.

Global site tag (gtag.js) - Google Analytics