Android开发基础-service使用
来源:互联网 发布:文件夹加密软件解密 编辑:程序博客网 时间:2024/04/27 22:33
本事实验使用service实现背景音乐功能,主要使用MediaPlayer控件实现。
service 你可以理解成没有的界面的activity,它是跑在后台的程序,所谓后台是相对于可以被看得到的程序的,后台程序是不能直接交互的程序。
程序中使用Binder机制,而Binder机制在很多很多的Service就是通过Binder机制来和客户端通讯交互的。
binder主要是用来进程间通信的,但也可用在和本地service通信。
本次实验使用MediaPlayer对象
主要的方法:
- create(url);是从url中获取一个应用自带的mp3文件.
- setOnCompletionListener();是为对象添加一个监听事件,用于监听事件完成.
- setLooping();设置音乐循环播放。
创建一个android项目。
1. 在res文件下创建raw文件夹把mp3文件在此目录下 2. 创建含有一个播放一个停止的按钮的布局文件 3. 创建一个AudioService类。在清单AndroidManifest.xml中添加
<service android:name="com.example.service.AudioService"></service>
AudioService.java
public class AudioService extends Service implements MediaPlayer.OnCompletionListener { // 实例化MediaPlayer对象 MediaPlayer player; private final IBinder binder = new AudioBinder(); @Override public IBinder onBind(Intent intent) { return binder; } public void onCreate() { super.onCreate(); // 从raw文件夹中获取一个应用自带的mp3文件 player = MediaPlayer.create(this, R.raw.qq); player.setOnCompletionListener(this);// 是为player对象添加一个监听事件,用于监听事件完成 player.setLooping(true);// } @Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); if (!player.isPlaying()) { new MusicPlayThread().start(); } else player.isPlaying(); return START_STICKY; } /** * 当Audio播放完的时候触发该动作 */ public void onCompletion(MediaPlayer mp) { stopSelf();// 结束了,则结束Service } public void onDestroy() { super.onDestroy(); if (player.isPlaying()) { player.stop(); } player.release(); } // 为了和Activity交互,我们需要定义一个Binder对象 public class AudioBinder extends Binder { // 返回Service对象 public AudioService getService() { return AudioService.this; } } private class MusicPlayThread extends Thread { public void run() { if (!player.isPlaying()) { player.start(); } } }}
在MainActivity.java中添加
public class MainActivity extends Activity { Button playing, stop;// 声明控件变量 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findId(); playing.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startService(new Intent(MainActivity.this, AudioService.class));// 启动service服务转向AudioService } }); stop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { stopService(new Intent(MainActivity.this, AudioService.class));// 停止service } }); } void findId() {// 获取控件id playing = (Button) findViewById(R.id.playing); stop = (Button) findViewById(R.id.stop); } protected void onResume() {// 在 Activity 从 Pause 状态转换到 Active 状态时被调用。 super.onResume(); startService(new Intent(MainActivity.this, AudioService.class)); } @Override protected void onDestroy() {// 防止程序退出后音乐不停止问题。在destroy中停止服务 // TODO Auto-generated method stub super.onDestroy(); stopService(new Intent(MainActivity.this, AudioService.class));// 停止service } public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
- 启动程序即可
本次代码实现http://download.csdn.net/detail/kong_z/8859389
0 0
- Android开发基础-service使用
- Android 回顾Service之Service基础使用
- Android开发学习笔记-9 Service基础
- Android开发笔记3:Service基础
- Android Studio开发基础之Service
- Android基础——如何使用Service
- 【Android基础】-Service组件使用详解
- Android基础 —— Service使用
- Android开发实践:使用Service还是Thread
- Android开发实践:使用Service还是Thread
- Android开发实践:使用Service还是Thread
- Android开发实践:使用Service还是Thread
- Android开发实践:使用Service还是Thread
- Android开发实践:使用Service还是Thread
- android开发 使用Action启动/关闭Service
- Android开发实践:使用Service还是Thread
- Android开发实践:使用Service还是Thread
- Android开发使用Web Service获取数据
- 内存相关命令
- 读写kafka 0.7简单示例
- springmvc开发中的乱码问题总结
- 文件流复用方法
- C++继承:公有,私有,保护
- Android开发基础-service使用
- OJ第三批——Problem Q: B 虚拟继承(虚基类)-沙发床(改错题)
- 安卓系统键盘弹出后不压缩控件大小
- LeetCode_Stack_Longest Valid Parentheses
- 9 uses for cURL worth knowing
- Linux cd 命令
- JBoss主要版本下载链接一览
- fdisk分区sdcard &开机自动挂载新增硬盘
- Linux系统环境变量PATH(6.29)