Android 通过Service给Activity添加背景音乐

现在木鱼已经能发出声音了,而且还能表现出动态画面了,下一步就是给整个敲木鱼的页面添加个BGM。

新建一个Service,取名为MyFirstBgmService好了

package com.example.cyberwoodenfish;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;

public class MyFirstBgmService extends Service {
    public MyFirstBgmService() {
    }
    
    MediaPlayer mp;

    @Override
    public void onCreate() {                  //开始服务时调用
        super.onCreate();
        mp = MediaPlayer.create(this,R.raw.dabeizhou);
        mp.start();
    }

    @Override
    public void onDestroy() {                //服务销毁时停止音乐播放
        if (mp != null){
            mp.stop();
            mp.release();
        }
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

然后在MainActivity里动手package com.example.cyberwoodenfish;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intentbgm;
        intentbgm=new Intent(MainActivity.this,MyFirstBgmService.class);
        startService(intentbgm);

      //。。。与bgm无关的代码又被我吃了
} }

现在进入敲木鱼的界面直接播放大悲咒。。。

嗯,有那味了。

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Android Studio音乐后台播放开关按钮的实现方法: 1.在布局文件中添加一个Switch控件: ```xml <Switch android:id="@+id/switch_bgm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="背景音乐" android:checked="true" /> ``` 2.在Activity中获取Switch控件,并设置监听器: ```java public class MainActivity extends AppCompatActivity { private Switch switchBgm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); switchBgm = findViewById(R.id.switch_bgm); switchBgm.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Intent intent = new Intent(MainActivity.this, BgmService.class); if (isChecked) { intent.setAction(BgmService.ACTION_MUSIC_PLAY); } else { intent.setAction(BgmService.ACTION_MUSIC_PAUSE); } startService(intent); } }); } @Override protected void onDestroy() { super.onDestroy(); stopService(new Intent(this, BgmService.class)); } } ``` 3.在BgmService中根据接收到的Action执行相应的操作: ```java public class BgmService extends Service { public static final String ACTION_MUSIC_PLAY = "com.example.bgm.ACTION_MUSIC_PLAY"; public static final String ACTION_MUSIC_PAUSE = "com.example.bgm.ACTION_MUSIC_PAUSE"; private MediaPlayer mediaPlayer; @Override public int onStartCommand(Intent intent, int flags, int startId) { String action = intent.getAction(); if (ACTION_MUSIC_PLAY.equals(action)) { playMusic(); } else if (ACTION_MUSIC_PAUSE.equals(action)) { pauseMusic(); } return super.onStartCommand(intent, flags, startId); } private void playMusic() { if (mediaPlayer == null) { mediaPlayer = MediaPlayer.create(this, R.raw.bgm); mediaPlayer.setLooping(true); } mediaPlayer.start(); } private void pauseMusic() { if (mediaPlayer != null && mediaPlayer.isPlaying()) { mediaPlayer.pause(); } } @Override public void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } @Nullable @Override public IBinder onBind(Intent intent) { return null; } } ``` 在上述代码中,我们在BgmService中定义了两个Action:ACTION_MUSIC_PLAY和ACTION_MUSIC_PAUSE,分别用于播放和暂停背景音乐。在MainActivity中,我们获取了Switch控件,并设置了监听器,在监听器中根据Switch的状态发送相应的Action给BgmService。在BgmService中,我们根据接收到的Action执行相应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值