安卓Service和Broadcast实现简单的音乐播放器

安卓Service和Broadcast实现简单的音乐播放器,第1张

概述做实验的时候使用Service和Broadcast实现了一个功能较为简单的音乐播放器,可以对音乐进行播放、暂停和停止。主要思路:1、使用Service在后台播放音乐2、Broadcast发送广播通知Activity更改界面程序运行界面:图1播放界面图2暂停界面图3停止界面实现代码:1、布

做实验的时候使用Service和broadcast实现了一个功能较为简单的音乐播放器,可以对音乐进行播放、暂停和停止。
主要思路:
1、使用Service在后台播放音乐
2、broadcast发送广播通知Activity更改界面
程序运行界面:

图1 播放界面

图2 暂停界面

图3 停止界面
实现代码:

1、布局界面XML如下

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical">    <androIDx.appcompat.Widget.Toolbar        androID:ID="@+ID/musicbar"        androID:layout_wIDth="match_parent"        androID:layout_height="60dp"        androID:background="?attr/colorPrimary"        androID:minHeight="?attr/actionbarSize"        androID:theme="?attr/actionbartheme"        app:navigationIcon="@drawable/logo"        app:TitleTextcolor="@color/white" />    <VIEw        androID:ID="@+ID/vIEw"        androID:layout_wIDth="match_parent"        androID:layout_height="100dp" />    <ImageVIEw        androID:ID="@+ID/photo"        androID:layout_wIDth="250dp"        androID:layout_height="250dp"        androID:layout_gravity="center"        androID:layout_marginBottom="20dp"        app:srcCompat="@drawable/qIElogo" />    <TextVIEw        androID:ID="@+ID/musictext"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_gravity="center"        androID:layout_marginBottom="100dp"        androID:text="暂无播放音乐"        androID:textSize="28dp" />    <linearLayout        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:background="@color/white"        androID:orIEntation="horizontal">        <Imagebutton            androID:ID="@+ID/start"            androID:layout_wIDth="90dp"            androID:layout_height="90dp"            androID:layout_weight="1"            androID:background="@color/white"            androID:scaleType="centerInsIDe"            app:srcCompat="@drawable/start" />        <Imagebutton            androID:ID="@+ID/stop"            androID:layout_wIDth="90dp"            androID:layout_height="90dp"            androID:layout_weight="1"            androID:background="@color/white"            androID:scaleType="centerInsIDe"            app:srcCompat="@drawable/stop" />    </linearLayout></linearLayout>

2、主Acitivy如下

package com.example.test6;import androIDx.appcompat.app.AppCompatActivity;import androID.content.broadcastReceiver;import androID.content.Context;import androID.content.Intent;import androID.content.IntentFilter;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.VIEw;import androID.Widget.Imagebutton;import androID.Widget.ImageVIEw;import androID.Widget.TextVIEw;public class Music extends AppCompatActivity {    TextVIEw musictext;    ImageVIEw photo;    Imagebutton startbutton;    Integer state = 2;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_music);        IntentFilter inf = new IntentFilter();        inf.addAction("com.user.action");        registerReceiver(broad,inf);        musictext = findVIEwByID(R.ID.musictext);        photo = findVIEwByID(R.ID.photo);        startbutton = findVIEwByID(R.ID.start);        Imagebutton stopbutton = findVIEwByID(R.ID.stop);        startbutton.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                switch (state){                    case 1:                        state = 2;                        break;                    default:                        state = 1;                        break;                }                Log.v("当前状态","1");                Intent intent = new Intent(Music.this,MusicService.class);                intent.putExtra("action",state);                startService(intent);                Log.v("intent传值","1");            }        });        stopbutton.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                Intent intent = new Intent(Music.this,MusicService.class);                stopService(intent);            }        });    }    @OverrIDe    protected voID onDestroy() {        super.onDestroy();        unregisterReceiver(broad);    }    public broadcastReceiver broad = new broadcastReceiver() {        @OverrIDe        public voID onReceive(Context context, Intent intent) {            int i = intent.getIntExtra("action",-1);            switch(i){                case 1:                    musictext.setText("China-X");                    photo.setimageResource(R.drawable.yjtp);                    startbutton.setimageResource(R.drawable.pause);                    break;                case 2:                    startbutton.setimageResource(R.drawable.start);                    musictext.setText("音乐暂停");                    break;                case 3:                    state = 3;                    musictext.setText("暂无播放音乐");                    photo.setimageResource(R.drawable.qIElogo);                    startbutton.setimageResource(R.drawable.start);                    break;            }        }    };}

3、Service类如下

package com.example.test6;import androID.app.Service;import androID.content.Intent;import androID.media.MediaPlayer;import androID.os.IBinder;import androID.util.Log;public class MusicService extends Service {    public IBinder onBind(Intent intent){        return null;    }    private MediaPlayer mp;    public voID onCreate(){        super.onCreate();    }    public voID onStart(Intent intent,int startID){        super.onStart(intent,startID);        int i = intent.getIntExtra("action",0);        if(i==1){            if(null==mp) {                mp = MediaPlayer.create(this, R.raw.mymusic);                mp.setonCompletionListener(new MediaPlayer.OnCompletionListener() {                    @OverrIDe                    public voID onCompletion(MediaPlayer mp) {                        stopSelf();                    }                });            }            mp.start();        }else if(i==2){            if(mp!=null&&mp.isPlaying()){                mp.pause();            }        }        Log.v("zhuangtai",String.valueOf(i));        Intent in = new Intent("com.user.action");        in.putExtra("action",i);        sendbroadcast(in);    }    public voID onDestroy(){        super.onDestroy();        mp.stop();        Intent in = new Intent("com.user.action");        in.putExtra("action",3);        sendbroadcast(in);    }}
总结

以上是内存溢出为你收集整理的安卓Service和Broadcast实现简单的音乐播放器全部内容,希望文章能够帮你解决安卓Service和Broadcast实现简单的音乐播放器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1058629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存