- 浏览: 12267 次
- 性别:
- 来自: 济南
文章分类
最新评论
服务和广播实现音乐播放器
先看示例:
MusiceService代码
TestSimpleMediaActivity 代码
布局文件代码:
[color=red]如果想要源码,请留下邮箱。[/color]
Demo下载
最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:http://android.myapp.com/myapp/detail.htm?apkName=com.shandong.mm.androidstudy,源码例子文档一网打尽。
先看示例:
MusiceService代码
package mm.shandong.com.testsimplemedia.service; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.media.MediaPlayer; import android.os.IBinder; public class MusicService extends Service { int currentMusic = 0;//0表示没有音乐播放,1表示暂停,2表示正在播放, int status; MediaPlayer mp; String[] musics = new String[]{"first.mp3", "second.mp3", "third.mp3"}; AssetManager am; public MusicService() { } @Override public void onCreate() { am = getAssets(); mp = new MediaPlayer(); mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { currentMusic++; currentMusic = currentMusic % musics.length; playMusic(); status = 2; Intent intentTemp = new Intent("Update_Music_State"); intentTemp.putExtra("status", status); intentTemp.putExtra("currentMusic", currentMusic); sendBroadcast(intentTemp); } }); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("Get_Music_Control"); ///动态注册播放器变化的广播接收者 MusicServiceReceiver musicServiceReceiver = new MusicServiceReceiver(); registerReceiver(musicServiceReceiver, intentFilter); super.onCreate(); } public class MusicServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int control = intent.getIntExtra("control", 0); switch (control) { case 0: //暂停 if (status == 2) { mp.pause(); status = 1; } break; case 1: ///播放 if (status == 0) { playMusic(); status = 2; } else if (status == 1) { mp.start(); status = 2; } break; case 3: break; case 4: //上一首 if (status == 0) { if (currentMusic == 0) { currentMusic = 2; } else { currentMusic--; } } else if (status == 1) { if (currentMusic == 0) { currentMusic = 2; } else { currentMusic--; } status = 0; } else if (status == 2) { if (currentMusic == 0) { currentMusic = 2; } else { currentMusic--; } playMusic(); } break; case 5: //下一首 if (status == 0) { if (currentMusic == 2) { currentMusic = 0; } else { currentMusic++; } } else if (status == 1) { if (currentMusic == 2) { currentMusic = 0; } else { currentMusic++; } status = 0; } else if (status == 2) { if (currentMusic == 2) { currentMusic = 0; } else { currentMusic++; } playMusic(); } break; } Intent intentTemp = new Intent("Update_Music_State"); intentTemp.putExtra("status", status); intentTemp.putExtra("currentMusic", currentMusic); sendBroadcast(intentTemp); } } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } public void playMusic() { try { AssetFileDescriptor ad = am.openFd(musics[currentMusic]); mp.reset(); mp.setDataSource(ad.getFileDescriptor(), ad.getStartOffset(), ad.getLength()); // mp.create(this,musics[currentMusic]); mp.prepare(); mp.start(); } catch (Exception e) { e.printStackTrace(); } } }
TestSimpleMediaActivity 代码
package mm.shandong.com.testsimplemedia; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.TextView; import mm.shandong.com.testsimplemedia.service.MusicService; public class TestSimpleMediaActivity extends AppCompatActivity { ImageButton imageButton; TextView textViewMp3Name; TextView textViewMp3Author; int status = 0; String[] authors = new String[]{"张三", "李四", "王二"}; String[] names = new String[]{"first", "second", "thrid"}; int currentMusic = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_simple_media); imageButton = (ImageButton) findViewById(R.id.imageButton); textViewMp3Name = (TextView) findViewById(R.id.textViewMp3Name); textViewMp3Author = (TextView) findViewById(R.id.textViewMp3Author); imageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent("Get_Music_Control"); if (status == 2) { intent.putExtra("control", 0); } else { intent.putExtra("control", 1); } sendBroadcast(intent); } }); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("Update_Music_State"); MusicStatusReceiver musicStatusReceiver = new MusicStatusReceiver(); //动态注册activity变化的广播接收者 registerReceiver(musicStatusReceiver, intentFilter); Intent intent = new Intent(this, MusicService.class); startService(intent); Intent intentMusicReceiver = new Intent("Get_Music_Control"); intentMusicReceiver.putExtra("control", 3); sendBroadcast(intentMusicReceiver); } ///上一首 public void preMusic(View view) { Intent intentMusicReceiver = new Intent("Get_Music_Control"); intentMusicReceiver.putExtra("control", 4); sendBroadcast(intentMusicReceiver); } ///下一首 public void nextMusic(View view) { Intent intentMusicReceiver = new Intent("Get_Music_Control"); intentMusicReceiver.putExtra("control", 5); sendBroadcast(intentMusicReceiver); } ///定义操作音乐的广播接收者 public class MusicStatusReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { status = intent.getIntExtra("status", 0); currentMusic = intent.getIntExtra("currentMusic", 0); switch (status) { case 0: textViewMp3Name.setText(names[currentMusic]); textViewMp3Author.setText(authors[currentMusic]); imageButton.setBackgroundResource(R.drawable.play32); break; case 1: textViewMp3Name.setText(names[currentMusic]); textViewMp3Author.setText(authors[currentMusic]); imageButton.setBackgroundResource(R.drawable.play32); break; case 2: imageButton.setBackgroundResource(R.drawable.pause32); textViewMp3Name.setText(names[currentMusic]); textViewMp3Author.setText(authors[currentMusic]); break; } } } }
布局文件代码:
<?xml version="1.0" encoding="utf-8"?> <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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <ImageButton android:id="@+id/imageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textViewMp3Author" android:layout_alignStart="@+id/textViewMp3Author" android:layout_below="@+id/textViewMp3Author" android:background="@drawable/play32" /> <TextView android:id="@+id/textViewMp3Name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="歌曲名称" android:textSize="30sp" /> <TextView android:id="@+id/textViewMp3Author" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textViewMp3Name" android:layout_centerHorizontal="true" android:text="作者" android:textSize="15sp" /> <Button android:id="@+id/button10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageButton" android:layout_toLeftOf="@+id/textViewMp3Name" android:layout_toStartOf="@+id/textViewMp3Name" android:onClick="preMusic" android:text="上一首" /> <Button android:id="@+id/button11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageButton" android:layout_toEndOf="@+id/textViewMp3Name" android:layout_toRightOf="@+id/textViewMp3Name" android:onClick="nextMusic" android:text="下一首" /> </RelativeLayout>
[color=red]如果想要源码,请留下邮箱。[/color]
Demo下载
最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:http://android.myapp.com/myapp/detail.htm?apkName=com.shandong.mm.androidstudy,源码例子文档一网打尽。
相关推荐
以下将详细解析“android音乐播放器demo”所涵盖的知识点。 首先,Android音乐播放器的核心是媒体播放服务(MediaPlayer)。这是一个系统级的服务,用于处理音频和视频文件的播放。在Android中,MediaPlayer类提供...
【Android音乐播放器开发概述】 在移动应用领域,Android音乐播放器是常见且实用的应用类型。这个项目"简单的Android音乐播放器"旨在提供一个基础框架,让用户能够进行音乐的播放、暂停、上一曲和下一曲操作,并且...
【Android音乐播放器开发详解】 在Android开发领域,构建一个音乐播放器是常见的实践项目,它可以帮助开发者深入了解Android系统的多媒体处理、用户界面设计以及数据管理等核心知识点。本项目"Android音乐播放器...
4.4 Android 音乐播放器的工程 - 26 - 4.4.1 Android项目 - 26 - 4.4.2 Android工程程序结构 - 27 - 4.4.3 AndroidManifest.xml文件 - 29 - 第五章 播放器系统功能详细设计 - 31 - 5.1音乐播放器主界面功能实现 - 31...
### Android音乐播放器需求分析深度解析 #### 一、项目背景与目标 在3G技术的迅猛发展中,人们对音乐的追求日益高涨,市场上的音乐播放器虽多,但普遍存在操作复杂或音质不佳等问题,难以满足用户的高品质音乐体验...
【基于Eclipse的Android音乐播放器】 在移动设备上开发应用程序是现代软件工程的重要组成部分,尤其是在Android平台上。Eclipse作为一款流行的集成开发环境(IDE),曾经是Android开发者的首选工具。本项目“基于...
综上所述,开发一个具备本地和网络播放功能的Android音乐播放器,涉及到了音频处理、媒体库操作、网络流媒体、UI设计、播放控制、服务管理、权限处理、性能优化等多个方面的技术知识点。每个环节都需要细致入微的...
这个"android音乐播放器Demo代码"提供了一个基础的实现框架,对于学习和理解如何在Android上构建音乐播放功能非常有帮助。下面将详细介绍这个Demo涉及到的关键知识点。 1. **Android SDK**:首先,这个Demo是基于...
这款"android音乐播放器测试歌曲"的应用显然专注于测试音乐播放功能,我们可以通过分析它的内容来深入理解相关技术。 首先,我们要讨论的是Android音频框架。Android系统提供了一个强大的音频框架,包括Media ...
下面,我们将围绕"android音乐播放器源码"这一主题,深入探讨其中的关键知识点。 首先,音乐播放器的核心是音频处理。在Android中,我们可以使用`MediaPlayer`类来播放音频文件。`MediaPlayer`提供了丰富的API,...
android 音乐播放器 经典完整代码 非常经典 非常好用 绝对是原创的哦 绝对可以使用的哦 学习之良品,项目代码涉及知识非常广泛,可以通过本项目代码学习到android的四大组件 以及很多编程技巧 希望各位同学好好利用.
【Android音乐播放器源码详解】 在Android平台上开发一款音乐播放器是一项常见的任务,而能够获得一份详尽注释的源码无疑是学习和提升的好材料。这个“Android音乐播放器源码”提供了一个完整的实现,从用户界面...
下面我们将深入探讨这个话题,主要基于"Android音乐播放器开发"的描述,以及与之相关的标签和技术点。 首先,我们要明白Android音乐播放器的基本功能包括播放音乐、管理本地音乐库、支持在线音乐的下载和播放,以及...
【Android音乐播放器完整版本】是一款专为Android操作系统设计的音乐播放软件,由国外开发者精心制作,具有丰富的功能和出色的用户体验。这款播放器不仅具备基本的音频播放能力,还包含了一些独特而炫酷的特效,使得...
【Android音乐播放器源代码详解】 在Android平台上开发一款音乐播放器是一项技术性强且充满挑战的任务,涉及到多媒体处理、UI设计、数据管理等多个方面。这个开源项目为开发者提供了一个很好的起点,它展示了如何...
首先,Android音乐播放器的核心是媒体播放器(MediaPlayer)类,它是Android SDK中的一个重要组件,用于播放音频和视频文件。在`Music`这个项目中,我们可以看到如何使用MediaPlayer类来播放设备上的音乐文件。...
【Android音乐播放器实例教学Demo】是一个非常适合初学者和进阶开发者学习的项目,它旨在模仿知名的音乐播放器应用,提供了完整的源码供学习者参考。这个Demo涵盖了Android开发中的多个重要技术点,包括Service、...
本篇文章将深入探讨基于Android的音乐播放器开发的关键知识点,结合给定的"android音乐播放器"标题和相关标签,我们将主要关注源码解析和工具的使用。 首先,构建一个音乐播放器的基础是获取音频资源。Android提供...