Android播放音乐案例分享

发布时间 - 2026-01-11 03:10:44    点击率:

本文实例为大家分享了Android播放音乐案例的具体实现代码,供大家参考,具体内容如下

效果:

分析:

和上一篇文章的结构是一样的,只不过我们需要在这里里面加上播放音乐的一些操作:

其实也就是调用系统的播放音乐的API而已,写在服务里面就好,

//媒体播放器
private MediaPlayer player;

public void onCreate() {
  File file=new File(Environment.getExternalStorageDirectory(),"a.mp3");
  player =new MediaPlayer();
  try {
   //设置播放源
   player.setDataSource(file.getAbsolutePath());
  } catch (Exception e) {
   e.printStackTrace();
  } 
  Log.d("fanfan", "onCreate");
  super.onCreate();
 }

public int onStartCommand(Intent intent, int flags, int startId) {
  
  try {
   //设置准备资源监听器,当资源准备完毕,回调监听器的onPrepared函数
   player.setOnPreparedListener(new OnPreparedListener() {
    @Override
    //准备资源准备好了会调用这个
    public void onPrepared(MediaPlayer arg0) {
     //播放音乐
     player.start();
    }
   });
   
   //准备资源,好来播放音乐
   //异步函数,这个函数内部会开启一个子线程
   player.prepareAsync();
   
  } catch (Exception e) {
   e.printStackTrace();
  } 
  
  Log.d("fanfan", "onStartCommand");
  return super.onStartCommand(intent, flags, startId);
 }
public void onDestroy() {
    //结束音乐
    player.stop();
    //释放资源,如果播放下一首的话,就用不着释放资源
    player.release();
    Log.d("fanfan", "onDestroy");
    super.onDestroy();
  }

第一步,照样找个类来继承服务类

package fry;

import java.io.File;
import java.io.IOException;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Environment;
import android.os.IBinder;
import android.util.Log;

public class myService extends Service{

  //媒体播放器
  private MediaPlayer player;
  /**
   * 当绑定这个服务的时候调用
   */
  @Override
  public IBinder onBind(Intent arg0) {
    Log.d("fanfan", "onBind");
    return null;
  }
  /**
   * service被创建后调用
   */
  @Override
  public void onCreate() {
    File file=new File(Environment.getExternalStorageDirectory(),"a.mp3");
    player =new MediaPlayer();
    try {
      //设置播放源
      player.setDataSource(file.getAbsolutePath());
    } catch (Exception e) {
      e.printStackTrace();
    } 
    Log.d("fanfan", "onCreate");
    super.onCreate();
  }
  
  /**
   * service被start后调用
   */
  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
    
    try {
      //设置准备资源监听器,当资源准备完毕,回调监听器的onPrepared函数
      player.setOnPreparedListener(new OnPreparedListener() {
        @Override
        //准备资源准备好了会调用这个
        public void onPrepared(MediaPlayer arg0) {
          //播放音乐
          player.start();
        }
      });
      
      //准备资源,好来播放音乐
      //异步函数,这个函数内部会开启一个子线程
      player.prepareAsync();
      
    } catch (Exception e) {
      e.printStackTrace();
    } 
    
    Log.d("fanfan", "onStartCommand");
    return super.onStartCommand(intent, flags, startId);
  }
  
  /**
   * service被停止后调用
   */
  @Override
  public void onDestroy() {
    //结束音乐
    player.stop();
    //释放资源,如果播放下一首的话,就用不着释放资源
    player.release();
    Log.d("fanfan", "onDestroy");
    super.onDestroy();
  }

}

第二步,该配置的监听服务也是要配置的

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.playMusic"
  android:versionCode="1"
  android:versionName="1.0" >

  <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="19" />

  <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
      android:name="fry.MainActivity"
      android:label="@string/app_name" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity android:name="fry.Activity01" android:exported="true"></activity>
    
    <service android:name="fry.myService">
      
    </service>
    
  </application>

</manifest>

第三步,播放或者结束音乐

package fry;

import com.example.playMusic.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class Activity01 extends Activity{
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity01);
  }
  
  public void onClick(View view){
    Intent intent=new Intent();
    intent.setClass(this, myService.class);
    switch(view.getId()){
    case R.id.btn_start://播放音乐,启动服务
      startService(intent);
      break;
    case R.id.btn_stop://结束音乐,停止服务
      stopService(intent);
      break;
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # 播放音乐  # Android实现多媒体之播放音乐  # Android开发中听筒无法播放音乐的解决方法  # Android编程实现使用SoundPool播放音乐的方法  # 教你轻松制作Android音乐播放器  # android暂停或停止其他音乐播放器的播放实现代码  # Android编程开发音乐播放器实例  # Android中播放在线音乐代码  # android音乐播放器监听电话状态实现代码  # Android简易音乐播放器实现代码  # Android简单音乐播放实例  # 媒体播放器  # 一首  # 就用  # 不着  # 准备好了  # 回调  # 在这里  # 就好  # 上一  # 找个  # 大家分享  # 写在  # 第二步  # 绑定  # 第三步  # 具体内容  # 大家多多  # 只不过  # 是一样的  # flags 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  如何选择可靠的免备案建站服务器?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  如何在IIS管理器中快速创建并配置网站?  如何用PHP工具快速搭建高效网站?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  大连网站制作公司哪家好一点,大连买房网站哪个好?  IOS倒计时设置UIButton标题title的抖动问题  无锡营销型网站制作公司,无锡网选车牌流程?  如何在IIS7上新建站点并设置安全权限?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  浅析上传头像示例及其注意事项  香港服务器如何优化才能显著提升网站加载速度?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Android自定义控件实现温度旋转按钮效果  如何在阿里云香港服务器快速搭建网站?  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  图册素材网站设计制作软件,图册的导出方式有几种?  如何注册花生壳免费域名并搭建个人网站?  如何在阿里云ECS服务器部署织梦CMS网站?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  ,怎么在广州志愿者网站注册?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何挑选最适合建站的高性能VPS主机?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  常州企业网站制作公司,全国继续教育网怎么登录?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  如何在Windows虚拟主机上快速搭建网站?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  活动邀请函制作网站有哪些,活动邀请函文案?  电商网站制作价格怎么算,网上拍卖流程以及规则?  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  如何在云虚拟主机上快速搭建个人网站?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  如何在IIS中新建站点并解决端口绑定冲突?  详解jQuery停止动画——stop()方法的使用  如何在搬瓦工VPS快速搭建网站?