当前位置: 首页 > article >正文

AndroidStudio移动开发:使用Service播放音乐【步骤】

目录

一、创建新application

二、准备音乐文件

三、创建项目和布局(如果需要交互界面的话,这里简单假设一个基本布局)

四、创建MusicService类

五、在MainActivity中启动和控制Service(也可以另外创建MusicActivity类(假设布局对应的Activity为MusicActivity))

六、在AndroidManifest.xml中注册MusicService

七,结果展示


以下在Android Studio中使用Java编写代码,通过Service实现MP3音乐文件播放的基本步骤。

一、创建新application

(可能出现的问题) 

 修改distributionUrl=自己下的gradle地址

try again 等待 

二、准备音乐文件

MP3格式音乐,大小不要太大

 Android Resource Directory

 raw

 右键复制一个MP3音乐文件,粘贴到raw

 改名

、创建项目和布局(如果需要交互界面的话,这里简单假设一个基本布局)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_play"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Play" />

    <Button
        android:id="@+id/btn_pause"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pause" />

</LinearLayout>

四、创建MusicService类

  1. 在项目中创建一个名为MusicService的类,继承自Service

 

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

public class MusicService extends Service {

    private MediaPlayer mediaPlayer;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mediaPlayer = MediaPlayer.create(this, R.raw.your_mp3_file);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (!mediaPlayer.isPlaying()) {
            mediaPlayer.start();
        }
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
        }
        mediaPlayer.release();
    }
}

 MP3文件放在res/raw目录下,your_mp3_file.mp3改为你的音乐文件名称

五、在MainActivity中启动和控制Service(也可以另外创建MusicActivity类(假设布局对应的Activity为MusicActivity))

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button btnPlay;
    private Button btnPause;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnPlay = findViewById(R.id.btn_play);
        btnPause = findViewById(R.id.btn_pause);

        btnPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, MusicService.class);
                startService(intent);
            }
        });

        btnPause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, MusicService.class);
                stopService(intent);
            }
        });
    }
}

六、在AndroidManifest.xml中注册MusicService

 <service android:name=".MusicService" />

七,结果展示

录制

(为了让录制能够带有声音,代码有部分修改。)

(播放前注意调整音量)

Android播放音乐屏幕录制 20241018


http://www.kler.cn/news/359937.html

相关文章:

  • 【分布式微服务云原生】《Redis RedLock 算法全解析:应对时钟漂移与网络分区挑战》
  • Python异常检测-3Sigma
  • exchange_proxy exchange 安全代理
  • SqlDbx连接oracle(可用)
  • PDF.js的使用及其跨域问题解决
  • 力扣244题详解:最短单词距离 II 的多种解法与模拟面试
  • 携手并进,智驭教育!和鲸科技与智谱 AI 签署“101 数智领航计划”战略合作协议
  • Apache Doris简介
  • Items View 项目视图
  • 基于Spring Boot、Vue和MyBatis的前后端分离座位管理系统:增删改查功能入门指南
  • Clickhouse集群_Zookeeper配置的dataDir目录磁盘占有率接近100%时,该dataDir目录是否可以清理及如何清理的脚本
  • Java之继承抽象类用法实例(三十一)
  • PostgreSQL模板数据库template0和template1的异同点
  • 如何在 CentOS 7 上使用 Nginx 将 www 重定向到非 www
  • 全面了解 NGINX 的负载均衡算法
  • RabbitMQ系列学习笔记(三)--工作队列模式
  • 基于卷积神经网络和 Swin Transformer 的图像处理模型
  • Docker设置日志滚动
  • restrict是如何限定指针访问的?C语言必须用.c为扩展名吗?为什么C系语言很流行?哪些语言可以称为C系语言?
  • GLSL(OpenGL Shading Language)学习路线