Android仿音乐播放器功能

发布时间 - 2026-01-10 22:59:42    点击率:

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

读取本地音乐文件

源代码:

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

  private MediaPlayer mediaPlayer;
  private SeekBar seekBar;
  private TextView tv_mian_stop;
  private TextView tv_mian_start;
  private int musicaction;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv_mian_start = (TextView) findViewById(R.id.tv_mian_start);
    tv_mian_stop = (TextView) findViewById(R.id.tv_mian_stop);
    seekBar = (SeekBar) findViewById(R.id.seekBar);


    //进度条的监听事件
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
      @Override
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
          //改变
         //每当进度条发生改变时tv_mian_start的值发生变化
         //new TimeUtil().secToTime()一个外部类(时间格式转化)
         tv_mian_start.setText(new TimeUtil().secToTime(mediaPlayer.getCurrentPosition()/1000)+"");
      }
      @Override
      public void onStartTrackingTouch(SeekBar seekBar) {
          //开始
      }

      @Override
      public void onStopTrackingTouch(SeekBar seekBar) {
          //结束
          //获取拖动结束之后的位置
        int progrss=seekBar.getProgress();
        mediaPlayer.seekTo(progrss);
      }
    });
  }

  public void isPlay(View view){
    ImageButton imageButton= (ImageButton) view;
    if (mediaPlayer==null){
      mediaPlayer = MediaPlayer.create(this, R.raw.seve);
      mediaPlayer.start();
      //把图标修改为暂停的图标
      imageButton.setImageResource(android.R.drawable.ic_media_pause);
      //获取音乐的总时长
      int muiscsum=mediaPlayer.getDuration();
      //设置进度条的最大值为总时长
       seekBar.setMax(muiscsum);

       //执行一个多线程的耗时操作
       new MyThread().start();

       tv_mian_stop.setText(new TimeUtil().secToTime(muiscsum/1000)+"");
    }else if (mediaPlayer.isPlaying()){
      mediaPlayer.pause();
      imageButton.setImageResource(android.R.drawable.ic_media_play);
    }else{
      mediaPlayer.start();
      imageButton.setImageResource(android.R.drawable.ic_media_pause);
    }
  }


  class MyThread extends Thread{
    @Override
    public void run() {
      super.run();
      //当进度条的当前值小于最大值时进度条发生改变
      while(seekBar.getProgress()<=seekBar.getMax()){

      //获取当前音乐播放的位置
      musicaction = mediaPlayer.getCurrentPosition();
      //让进度条动起来
     seekBar.setProgress(musicaction);

      }

    }
  }


}

时间格式转化类:

public class TimeUtil {

  public static String secToTime(int time) {
    String timeStr = null;
    int hour = 0;
    int minute = 0;
    int second = 0;
    if (time <= 0)
      return "00:00";
    else {
      minute = time / 60;
      if (minute < 60) {
        second = time % 60;
        timeStr = unitFormat(minute) + ":" + unitFormat(second);
      } else {
        hour = minute / 60;
        if (hour > 99)
          return "99:59:59";
        minute = minute % 60;
        second = time - hour * 3600 - minute * 60;
        timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second);
      }
    }
    return timeStr;
  }

  private static String unitFormat(int i) {
    String retStr = null;
    if (i >= 0 && i < 10)
      retStr = "0" + Integer.toString(i);
    else
      retStr = "" + i;
    return retStr;
  }

} 


真机效果图:

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


# Android音乐播放  # Android音乐播放器功能  # Android音乐播放器  # Android音乐播放器制作 点击歌曲实现播放(二)  # Android音乐播放器制作 扫描本地音乐显示在手机(一)  # Android简易音乐播放器实现代码  # 详解Android应用开发--MP3音乐播放器代码实现(一)  # Android MediaPlayer实现音乐播放器实例代码  # Android 开源在线音乐播放器  # Android 音乐播放器的开发实例详解  # Android基于Service的音乐播放器  # Android绘制音乐播放器示波器  # Android音乐播放器制作 加入控制台(三)  # 进度条  # 时长  # 播放器  # 拖动  # 大家分享  # 多线程  # 具体内容  # 源代码  # 大家多多  # 音乐播放  # 结束之后  # 为总  # musicaction  # int  # Override  # protected  # void  # private  # extends  # MainActivity 


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


相关推荐: 如何在云虚拟主机上快速搭建个人网站?  Android利用动画实现背景逐渐变暗  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何快速搭建FTP站点实现文件共享?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何在香港免费服务器上快速搭建网站?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  如何挑选高效建站主机与优质域名?  如何用搬瓦工VPS快速搭建个人网站?  JavaScript如何实现路由_前端路由原理是什么  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Laravel怎么在Controller之外的地方验证数据  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何基于云服务器快速搭建个人网站?  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel如何实现多对多模型关联?(Eloquent教程)  企业网站制作这些问题要关注  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  Windows Hello人脸识别突然无法使用  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  免费网站制作appp,免费制作app哪个平台好?  如何在阿里云完成域名注册与建站?  如何快速辨别茅台真假?关键步骤解析  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何优化应用性能?(缓存和优化命令)  千库网官网入口推荐 千库网设计创意平台入口  Laravel如何处理和验证JSON类型的数据库字段  香港网站服务器数量如何影响SEO优化效果?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  详解Android——蓝牙技术 带你实现终端间数据传输  如何用虚拟主机快速搭建网站?详细步骤解析  如何在景安云服务器上绑定域名并配置虚拟主机?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  *服务器网站为何频现安全漏洞?  制作公司内部网站有哪些,内网如何建网站?  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Java解压缩zip - 解压缩多个文件或文件夹实例