服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Activity与Service之间交互并播放歌曲的实现代码

Activity与Service之间交互并播放歌曲的实现代码

2021-02-04 14:21Android开发网 Android

以下是对Activity与Service之间交互并播放歌曲的实现代码进行了详细的分析介绍,需要的朋友可以过来参考下

activity与service之间交互并播放歌曲,为了方便,我把要播放的歌曲定死了,大家可以灵活改进
 

Activity与Service之间交互并播放歌曲的实现代码

mservice:

复制代码 代码如下:

package com.tiantian.test;
import android.app.service;
import android.content.intent;
import android.media.mediaplayer;
import android.os.binder;
import android.os.environment;
import android.os.ibinder;
import android.util.log;
public class mservice extends service{
    mybinder mybinder = new mybinder();
    private mediaplayer mediaplayer;

    public class mybinder extends binder{
        mservice getservice(){
            return mservice.this;
        }
    }
    @override
    public ibinder onbind(intent intent) {
        // todo auto-generated method stub
        log.v("cat", "onbind");
        return mybinder;
    }
    @override
    public void oncreate() {
        // todo auto-generated method stub
        super.oncreate();
        log.v("cat", "oncreate");
        try {
            mediaplayer = new mediaplayer();
            mediaplayer.setdatasource(environment.getexternalstoragedirectory() + "/mp3/trhxn.mp3");
            mediaplayer.prepare();
        } catch (exception e) {
            // todo auto-generated catch block
            log.v("cat", "fail");
            e.printstacktrace();
        }
    }
    @override
    public void ondestroy() {
        // todo auto-generated method stub
        super.ondestroy();
        log.v("cat", "ondestroy");
    }
    @override
    public int onstartcommand(intent intent, int flags, int startid) {
        // todo auto-generated method stub
        log.v("cat", "onstartcommand");
        return super.onstartcommand(intent, flags, startid);
    }
    @override
    public boolean onunbind(intent intent) {
        // todo auto-generated method stub
        log.v("cat", "onunbind");
        return false;
    }

    public void start(){
        mediaplayer.start();
    }
    public void pause(){
        mediaplayer.pause();
    }
    public void stop(){
        mediaplayer.stop();
        mediaplayer.release();
    }
    public int getduration(){
        return mediaplayer.getduration();
    }
    public int getcurrentposition(){
        return mediaplayer.getcurrentposition();
    }
    public void seekto(int position){
        mediaplayer.seekto(position);
    }
}


musicplayactivity:

复制代码 代码如下:

package com.tiantian.test;
import android.app.activity;
import android.content.componentname;
import android.content.intent;
import android.content.serviceconnection;
import android.os.bundle;
import android.os.handler;
import android.os.ibinder;
import android.util.log;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.seekbar;
public class musicplayactivity extends activity {
    /** called when the activity is first created. */
    mservice mservice;
    private serviceconnection conn = new serviceconnection(){
        @override
        public void onserviceconnected(componentname arg0, ibinder arg1) {
            // todo auto-generated method stub
            mservice = ((mservice.mybinder)arg1).getservice();
            log.v("cat", "getserviced");
        }
        @override
        public void onservicedisconnected(componentname name) {
            // todo auto-generated method stub
            mservice = null;
        }

    };

    private seekbar seekbar;
    private button playbt;

    private boolean isplaying = false;
    private boolean isbinded = false;

    private handler mhandler;
    @override
    public void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.main);
        intent intent = new intent(musicplayactivity.this, mservice.class);
        if(!isbinded){
            bindservice(intent, conn, bind_auto_create);
            isbinded = true;
        }
        seekbar = (seekbar) findviewbyid(r.id.seekbar);
        playbt = (button) findviewbyid(r.id.startbt);
        mhandler = new handler();
        seekbar.setonseekbarchangelistener(new seekbar.onseekbarchangelistener() {

            @override
            public void onstoptrackingtouch(seekbar seekbar) {}

            @override
            public void onstarttrackingtouch(seekbar seekbar) {}

            @override
            public void onprogresschanged(seekbar seekbar, int progress,
                    boolean fromuser) {
                if(fromuser){
                    mservice.seekto((progress*mservice.getduration())/100);
                }
            }
        });
        playbt.setonclicklistener(new onclicklistener() {

            @override
            public void onclick(view v) {
                // todo auto-generated method stub
                if(!isplaying){
                    mservice.start();
                    isplaying = true;
                    playbt.settext("暂停");
                    mhandler.post(seekbarthread);
                }else{
                    mservice.pause();
                    isplaying = false;
                    playbt.settext("播放");
                    mhandler.removecallbacks(seekbarthread);
                }
            }
        });

    }

    runnable seekbarthread = new runnable() {

        @override
        public void run() {
            // todo auto-generated method stub
            seekbar.setprogress((mservice.getcurrentposition()*100)/mservice.getduration());
            mhandler.postdelayed(seekbarthread, 200);
        }
    };

}

延伸 · 阅读

精彩推荐
  • AndroidAndroid编程解析XML方法详解(SAX,DOM与PULL)

    Android编程解析XML方法详解(SAX,DOM与PULL)

    这篇文章主要介绍了Android编程解析XML方法,结合实例形式详细分析了Android解析XML文件的常用方法与相关实现技巧,需要的朋友可以参考下...

    liuhe68810042021-05-03
  • AndroidAndroid程序设计之AIDL实例详解

    Android程序设计之AIDL实例详解

    这篇文章主要介绍了Android程序设计的AIDL,以一个完整实例的形式较为详细的讲述了AIDL的原理及实现方法,需要的朋友可以参考下...

    Android开发网4622021-03-09
  • AndroidAndroid界面效果UI开发资料汇总(附资料包)

    Android界面效果UI开发资料汇总(附资料包)

    android ui界面设计,友好的界面会提高用户体验度;同时也增强了android ui界面设计的难度,本文提供了一些常用开发资料(有下载哦)感兴趣的朋友可以了解下...

    Android开发网4652021-01-03
  • AndroidAndroid实现固定屏幕显示的方法

    Android实现固定屏幕显示的方法

    这篇文章主要介绍了Android实现固定屏幕显示的方法,实例分析了Android屏幕固定显示所涉及的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    鉴客6182021-03-27
  • Android汇总Android视频录制中常见问题

    汇总Android视频录制中常见问题

    这篇文章主要汇总了Android视频录制中常见问题,帮助大家更好地解决Android视频录制中常见的问题,需要的朋友可以参考下...

    yh_thu5192021-04-28
  • AndroidAndroid实现Service获取当前位置(GPS+基站)的方法

    Android实现Service获取当前位置(GPS+基站)的方法

    这篇文章主要介绍了Android实现Service获取当前位置(GPS+基站)的方法,较为详细的分析了Service基于GPS位置的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    Ruthless8332021-03-31
  • AndroidAndroid中AsyncTask详细介绍

    Android中AsyncTask详细介绍

    这篇文章主要介绍了Android中AsyncTask详细介绍,AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合,需要的朋友可以参考下...

    Android开发网7432021-03-11
  • AndroidAndroid CardView+ViewPager实现ViewPager翻页动画的方法

    Android CardView+ViewPager实现ViewPager翻页动画的方法

    本篇文章主要介绍了Android CardView+ViewPager实现ViewPager翻页动画的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Abby代黎明9592022-03-02