Android怎么使用服务组件,Android应用开发之使用Service组件实现简单的音乐播放器功能 --Android基础...

本文将带你了解Android应用开发之使用Service组件实现简单的音乐播放器功能 --Android基础,希望本文对大家学Android有所帮助

1、本例利用Service实现简单的音乐播放功能,下面是效果图。(点击开始播放开启服务,音乐播放,点击“停止播放”关闭服务,音乐停止播放。)

2、核心代码:

MusicService.java:

package thonlon.example.cn.servicedemo;import android.app.Service;import   android.content.Intent;import android.media.MediaPlayer;import   android.net.Uri;import android.os.IBinder;import java.io.IOException;/** * 绑定服务的时候被调用 */public class   MusicService extends Service {      private MediaPlayer mediaPlayer;      @Override    public IBinder   onBind(Intent intent) {        return   null;    }    /**       * Service被创建后被调用     */      @Override    public void   onCreate() {//        播放本地资源的音乐//        mediaPlayer =   MediaPlayer.create(this, R.raw.snh);//          播放文件系统的音乐//        File file = new   File(Environment.getExternalStorageDirectory(),   "zshyn.mp3");//          mediaPlayer = new MediaPlayer();//        try {//              mediaPlayer.setDataSource(file.getAbsolutePath());//通过获取绝对路径来设置播放源头//        } catch (IOException e) {//            e.printStackTrace();//        播放网络中的音乐        mediaPlayer = new   MediaPlayer();        Uri uri =   Uri.parse("http://www.nxl123.cn/snh.mp3");        try {            mediaPlayer.setDataSource(this,   uri);//或者直接mediaPlayer.setDataSource("http://www.nxl123.cn/snh.mp3");        } catch (IOException e) {            e.printStackTrace();        }      }    /**     * Service被开始后调用     */    @Override    public int onStartCommand(Intent intent,   int flags, int startId) {        mediaPlayer.prepareAsync();//准备资源,可能阻塞主线程,所以要在子线程调用。在这里使用prepareAsync函数就可以了        //防止资源还没有准备完毕就播放音乐,所以要设置准备资源监听器        //表示当准备资源完成后,调用监听器中onPrepare方法        mediaPlayer.setOnPreparedListener(new   MediaPlayer.OnPreparedListener() {              @Override            public void   onPrepared(MediaPlayer mp) {                  mediaPlayer.start();//开始播放音乐            }        });        //MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。        return   super.onStartCommand(intent, flags, startId);    }      /**     * Service被停止后调用     */      @Override    public void   onDestroy() {          mediaPlayer.stop();//停止播放          mediaPlayer.release();//释放准备的资源,如果还需要用到此对象则可先不销毁    }}

MainActivity.java:

package thonlon.example.cn.servicedemo;import android.content.Intent;import   android.support.v7.app.AppCompatActivity;import android.os.Bundle;import   android.view.View;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle   savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);    }      public void onClick(View v) {          Intent intent = new Intent();          intent.setClass(this, MusicService.class);        switch (v.getId()) {            case R.id.btn_start_service:                startService(intent);                break;            case R.id.btn_stop_service:                stopService(intent);                break;        }      }}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值