播放音乐案例

播放音乐案例

分析:

和上一篇文章的结构是一样的,只不过我们需要在这里里面加上播放音乐的一些操作:

其实也就是调用系统的播放音乐的API而已,写在服务里面就好,

//媒体播放器
private MediaPlayer player;

 1     public void onCreate() {
 2         File file=new File(Environment.getExternalStorageDirectory(),"a.mp3");
 3         player =new MediaPlayer();
 4         try {
 5             //设置播放源
 6             player.setDataSource(file.getAbsolutePath());
 7         } catch (Exception e) {
 8             e.printStackTrace();
 9         }
10         Log.d("fanfan", "onCreate");
11         super.onCreate();
12     }
 1     public int onStartCommand(Intent intent, int flags, int startId) {
 2
 3         try {
 4             //设置准备资源监听器,当资源准备完毕,回调监听器的onPrepared函数
 5             player.setOnPreparedListener(new OnPreparedListener() {
 6                 @Override
 7                 //准备资源准备好了会调用这个
 8                 public void onPrepared(MediaPlayer arg0) {
 9                     //播放音乐
10                     player.start();
11                 }
12             });
13
14             //准备资源,好来播放音乐
15             //异步函数,这个函数内部会开启一个子线程
16             player.prepareAsync();
17
18         } catch (Exception e) {
19             e.printStackTrace();
20         }
21
22         Log.d("fanfan", "onStartCommand");
23         return super.onStartCommand(intent, flags, startId);
24     }
1     public void onDestroy() {
2         //结束音乐
3         player.stop();
4         //释放资源,如果播放下一首的话,就用不着释放资源
5         player.release();
6         Log.d("fanfan", "onDestroy");
7         super.onDestroy();
8     }

第一步,照样找个类来继承服务类

 1 package fry;
 2
 3 import java.io.File;
 4 import java.io.IOException;
 5
 6 import android.app.Service;
 7 import android.content.Intent;
 8 import android.media.MediaPlayer;
 9 import android.media.MediaPlayer.OnPreparedListener;
10 import android.os.Environment;
11 import android.os.IBinder;
12 import android.util.Log;
13
14 public class myService extends Service{
15
16     //媒体播放器
17     private MediaPlayer player;
18     /**
19      * 当绑定这个服务的时候调用
20      */
21     @Override
22     public IBinder onBind(Intent arg0) {
23         Log.d("fanfan", "onBind");
24         return null;
25     }
26     /**
27      * service被创建后调用
28      */
29     @Override
30     public void onCreate() {
31         File file=new File(Environment.getExternalStorageDirectory(),"a.mp3");
32         player =new MediaPlayer();
33         try {
34             //设置播放源
35             player.setDataSource(file.getAbsolutePath());
36         } catch (Exception e) {
37             e.printStackTrace();
38         }
39         Log.d("fanfan", "onCreate");
40         super.onCreate();
41     }
42
43     /**
44      * service被start后调用
45      */
46     @Override
47     public int onStartCommand(Intent intent, int flags, int startId) {
48
49         try {
50             //设置准备资源监听器,当资源准备完毕,回调监听器的onPrepared函数
51             player.setOnPreparedListener(new OnPreparedListener() {
52                 @Override
53                 //准备资源准备好了会调用这个
54                 public void onPrepared(MediaPlayer arg0) {
55                     //播放音乐
56                     player.start();
57                 }
58             });
59
60             //准备资源,好来播放音乐
61             //异步函数,这个函数内部会开启一个子线程
62             player.prepareAsync();
63
64         } catch (Exception e) {
65             e.printStackTrace();
66         }
67
68         Log.d("fanfan", "onStartCommand");
69         return super.onStartCommand(intent, flags, startId);
70     }
71
72     /**
73      * service被停止后调用
74      */
75     @Override
76     public void onDestroy() {
77         //结束音乐
78         player.stop();
79         //释放资源,如果播放下一首的话,就用不着释放资源
80         player.release();
81         Log.d("fanfan", "onDestroy");
82         super.onDestroy();
83     }
84
85 }

第二步,该配置的监听服务也是要配置的

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     package="com.example.playMusic"
 3     android:versionCode="1"
 4     android:versionName="1.0" >
 5
 6     <uses-sdk
 7         android:minSdkVersion="8"
 8         android:targetSdkVersion="19" />
 9
10     <application
11         android:allowBackup="true"
12         android:icon="@drawable/ic_launcher"
13         android:label="@string/app_name"
14         android:theme="@style/AppTheme" >
15         <activity
16             android:name="fry.MainActivity"
17             android:label="@string/app_name" >
18             <intent-filter>
19                 <action android:name="android.intent.action.MAIN" />
20
21                 <category android:name="android.intent.category.LAUNCHER" />
22             </intent-filter>
23         </activity>
24         <activity android:name="fry.Activity01" android:exported="true"></activity>
25
26         <service android:name="fry.myService">
27
28         </service>
29
30     </application>
31
32 </manifest>

第三步,播放或者结束音乐

 1 package fry;
 2
 3 import com.example.playMusic.R;
 4
 5 import android.app.Activity;
 6 import android.content.Intent;
 7 import android.os.Bundle;
 8 import android.view.View;
 9
10 public class Activity01 extends Activity{
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         // TODO Auto-generated method stub
14         super.onCreate(savedInstanceState);
15         setContentView(R.layout.activity01);
16     }
17
18     public void onClick(View view){
19         Intent intent=new Intent();
20         intent.setClass(this, myService.class);
21         switch(view.getId()){
22         case R.id.btn_start://播放音乐,启动服务
23             startService(intent);
24             break;
25         case R.id.btn_stop://结束音乐,停止服务
26             stopService(intent);
27             break;
28         }
29     }
30 }
时间: 2024-10-13 19:31:44

播放音乐案例的相关文章

在Linux终端命令行下播放音乐的命令(Ubuntu)

现在的 Linux 桌面已经发展的很好了,在桌面下播放音乐操作起来也很简单.那么我们还记得在桌面不是那么好的时候我们是怎么播放音乐的么?哎,我是想不起来了,实在是太难了. 不过现在我们可以先安装一个小软件,然后通过命令行来使用这个软件播放音乐,感觉还是很不错滴. 这个软件的名字叫:SOX,支持很多格式的音频文件,如 WAV,MP3,MPG,OGG,FLAC 等等.满足我们日常使用是足够足够的了. 好了,首先,第一步我们需要把它安装到我们的系统里. 1.打开一个终端(Ctrl+Alt+T),然后输

UI小项目之拳皇动画的实现(抽取加载图片和播放音乐的方法)

实现思路 1.加载图片 2.播放音乐 实现思想 1.封装思想 抽取相同代码生成一个新的方法,通过传递参数调用该方法: 2.内存管理思想 不需要每次调用方法时都重新加载图片,for循环加载图片写在ViewdidLoad中 下列代码没有对运行过程中内存管理进行优化 其中加载图片有两种方法: 通过imageNmae加载有缓存 通过imageWithContentsOfFile加载无缓存 有无缓存的区别: 有缓存,使用时不需要重新加载 无缓存,使用时才加载 #import "ViewController

C#播放音乐,调用程序

一:C# 播放音乐 string sound = Application.StartupPath + "/sound/msg.wav"; //Application.StartupPath:程序exe所在的位置,也可以直接写一个音乐的路径 SoundPlayer player = new SoundPlayer(sound); player.Load(); //把声音加载到内存 //player.PlayLooping();//播放 player.Play(); 二:C# 调用exe

关于Windows 8使用WMP播放音乐时WUDFHost跑CPU和硬盘的问题解决

Windows 8使用Windows Media Player播放音乐的时候,其实有一个这样的情况,WMP和某个什么名字看起来很屌的进程跑CPU很高,这个跑很高视你插入的SD卡内的文件数或者移动硬盘的文件数来定,如果文件很多,这个跑起来可以把系统都快卡死. 就像下面这样: 原因: WMP命令WPD系统服务去扫描外部移动存储,它用于更新媒体库. 系统服务就去访问那个移动设备,不断的扫描遍历移动设备的文件,所以IO和CPU使用很高,导致系统卡,读取访问缓慢. 解决: 打开服务,找到Portable

手机影音第十五天,利用service实现后台播放音乐,在通知栏显示当前音乐信息等

代码已经托管到码云上,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 先来一张目前的音乐播放器的效果图,当播放时,手机的状态通知栏也会有音乐信息显示. 这里可以看到有歌名.演唱者,还有歌曲的总时间,当前播放时间,当前播放进度,音乐暂停.下一首,上一首,音乐循环模式(单曲循环,顺序播放.循环播放)功能的实现.下一步就是把中间空白的部分填充歌词,然后做成根据进度显示歌词. 由于这次的内容有点多,是写了一天半的代码,讲的没那么细,

IOS播放音乐和音效

1.播放音效 1.1 首先获取到音效文件路径 1 NSString *path = [[NSBundle mainBundle] pathForResource:soundFileName ofType:nil]; 1.2 将音效文件路径转换为NSURL NSURL *url = [NSURL fileURLWithPath:path]; 1.3 加载音效文件,并返回SystemSoundID(用于播放此音效) SystemSoundID soundId ; //如下方式是C语言的框架,是将音频

使用 AVAudioSession 实现后台播放音乐

1. 前言 AVAudioSession是一个单例,无需实例化即可直接使用.AVAudioSession在各种音频环境中起着非常重要的作用 针对不同的音频应用场景,需要设置不同的音频会话分类 1.1 ?AVAudioSession的类别 AVAudioSessionCategoryAmbient –混音播放,例如雨声.汽车引擎等,可与其他音乐一起播放 AVAudioSessionCategorySoloAmbient –后台播放,其他音乐将被停止 AVAudioSessionCategoryPl

绘制播放音乐时的音波图形的View

这个效果类似于这个哦: 效果如下: 源码: MusicView.h 与 MusicView.m // // MusicView.h // Music // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <UIKit/UIKit.h> @interface MusicView : UIView @property (nonatomic, assign) CGFloat progress; // 进程百分比,取值为[0,1]

音乐平台项目的几个问题总结(头像裁剪以及跨页面播放音乐)

关于头像裁剪 1.上传图片的裁剪,并没有采用后端裁剪,而采用前端裁剪,基于cropbox进行了修改 编码使用一个隐藏的input框存放 存放到数据库 2.本来想在后端解析base64编码重新生成文件,后来发现并没有必要,如果图片不是很大直接保存字符串到数据库就行了,这样还可以少一些http请求,不过缺点是Ie6不支持date:url的解析 3.图片变成base64编码之后,保存在数据库的字符长度高达16W 个字符,后来想办法改成jpeg+中等保存之后,长度变成3W,可以接受 下面从代码说起 界面