简易版的Media音乐播放器

MediaPlayer之音乐播放器完整解析 MediaPlayer 是一款音乐播放器也是一款视频吧哦,这篇先介绍一个音乐播放器吧!先看一下做好的效果吧! 这次介绍的功能点: 1、本地Sd卡中搜索音乐,并保存在List中 2、服务与Activity交互,可以用AIDL 、Binder,这次我们采用AIDL 3、SeekBar与音量关联同步 并修改时间 4、自定义TextView画歌词 并实现缓缓移动效果,并实现歌词与进度条同步 5、 阅读详情

1.首先给大家来张思维导图,熟悉一下播放器需要用哪些方法。





2.现在给大家演示一下代码:

布局 :

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/seekBar_main"
        />
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_media_play"
        android:onClick="playOrPause"
        />


</LinearLayout>


activity

package com.example.my_android_mediaplayer27;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.SeekBar;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private SeekBar seekBar;
    private ImageButton imageButton;
    private MediaPlayer mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        seekBar = (SeekBar) findViewById(R.id.seekBar_main);

        //给进度条设置滑动监听
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                //获取当前进度条的位置
                int currentPosition=seekBar.getProgress();
                //跳转的某个位置进行播放
                mediaPlayer.seekTo(currentPosition);
            }
        });
    }
    public  void playOrPause(View view){
        imageButton = (ImageButton) view;
        if (mediaPlayer==null){
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();
                mediaPlayer=new MediaPlayer();
                //设置音频流的类型
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
               //设置音源
                try {
                    //本地
//                    mediaPlayer.setDataSource(this, Uri.parse("fill://"+sdPath+"zhuandong.mp3"));
                    //网络
                    mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.238:8080/zhuandong.mp3"));
                    mediaPlayer.prepareAsync();

//                    mediaPlayer.prepare();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                //设置准备的监听
                mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mediaPlayer) {
                        mediaPlayer.start();
                        //暂停图标
                        imageButton.setImageResource(android.R.drawable.ic_media_pause);

                        //获取音乐播放时间
                        int time=mediaPlayer.getDuration();
                        //设置进度条的最大值为音乐的播放时间
                        seekBar.setMax(time);
                        new MyThread().start();
                    }
                });
            }
            //实例化MediaPlayer
//            mediaPlayer = MediaPlayer.create(this, R.raw.zhuandong);
        }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()){
                //获取音乐当前播放位置
                int CurrentPosition=mediaPlayer.getCurrentPosition();
                seekBar.setProgress(CurrentPosition);
            }
        }
    }
}

配置xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.my_android_mediaplayer27">

    <!--手机内存权限-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
    <!--网络权限-->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

到这就算结束了。有什么不懂或者问题或建议,可以进行留言或评论,谢谢。






基于Labview的音乐播放器 基于Labview的音乐播放器 文章目录基于Labview的音乐播放器一、设计摘要二、总体设计三、程序优化四、结论 一、设计摘要 用Labview设计了一个可以实现歌曲实时播放、切换上下曲和随机播放等功能的音乐播放器,主要利用数组、字符串和路径转换、路径和字符串转换、Windows Media Player播放器、属性节点、时间结构、循环结构、事件结构和条件结构等函数来实现。首先从前面板输入音乐文件的路径,通过for循环以及罗列文件夹把文件夹内歌曲曲目导出路径,然后转化为字符串后输入Windows 阅读详情

相关推荐

winform音乐播放器的实现

winform音乐播放器的实现

三杯两盏淡酒的专栏 6106

使用MediaPlayer播放音乐文件的简单例子

之前温习android的知识,就想复习一下mediaplayer的知识点,Demo很简单,代码如下: 先来布局文件:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schema

为你晴朗的博客 4485

python音乐播放器

当时学了半个月python,有一天突然心血来潮做的音乐播放器,这样就可以用自己的播放器听周杰伦的歌了!!! 做的还是比较粗糙,大致的功能是实现了,但是有时候歌还没有放完就会自动换歌,超级难受。 听歌是用了两种,一种是随机播放,另一种是选择文件播放。 壁纸的原理和选择文件播放类似。 然后就是播放器的常规界面,显示播放歌曲,歌曲时间(有点low),还有暂停,继续播放,下一首,结束播放,音量控制。 提...

du_du1的博客 2万+

音乐播放器  (完成音乐组件的应用 、本地通讯的应用设计)

工具:Android Studio activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/a...

weixin_41422387的博客 480

C#音乐播放器(可播放wav &mp3格式)

C#音乐播放器 大二写的一个小项目(未联网),基本功能都实现了,基本功能主要包括歌曲切换、歌词展示、添加本地歌曲、用户登录注册(登录进去进行收藏)等等一些功能,下面总结一下各项功能的一些实现思路。 源码地址 ...

m0_48863007的博客 6534

JavaFX Media API入门:手把手教你打造简易音乐播放器

本文手把手教你使用JavaFX Media API从零构建一个简易桌面音乐播放器。通过实战演示,详细介绍了项目环境搭建、核心Media/MediaPlayer类的使用、UI界面设计、控制逻辑绑定以及播放列表管理等关键步骤,帮助Java开发者快速掌握桌面应用开发与音频处理技术。

weixin_29230901的博客 490

c#简易音乐播放器制作(media)

利用c#自带的media(无需任何安装)制作音乐播放器,源码+思路

LYXtosee的博客 2492

.NET MAUI与Jetpack Media3的音乐播放器实践

Jetpack Media3是Android平台上最新的媒体播放框架,提供了比ExoPlayer2更丰富的API和更好的系统集成。通知栏媒体控制:包括在快速设置中显示播放控制。系统事件响应:如响应系统的播放恢复事件。自定义通知:更灵活的通知样式定制。跨设备媒体信息共享:让汽车音响系统、智能手表等设备能够读取播放信息。通过.NET MAUI与Jetpack Media3的结合,我们可以创建一个功能丰富且与Android系统深度集成的音乐播放器。

m0_62153576的博客 153

【MFC】基于windows media player的音乐播放器

【MFC】基于windows media player的音乐播放器   如图所示,目前程序能完成添加单曲音乐,音量控制,播放控制,只是播放进度条在定期滑动时会引起音乐间断,初步猜测是线程问题。 //2011.10.21 经过测试,并非是线程问题,而是程序响应了滑动条OnNMCustomdrawProgress消息,并在此消息中又调整了音乐播放的位置,因此会出现播放反复现象。不过这个错误

Marcy_SEU的专栏 2661

MediaPlayer音乐播放器

音乐播放器,菜单从xml文件中装载,三个按钮(上一首,播放,下一首) 音乐播放时按钮图片变为暂停,再点击时变为播放, 选择搜索本地音乐文件,搜索sdcard卡下的所有.mp3为后缀的音乐文件 可单击音乐列表播放歌曲,显示歌曲当前时间和总时间 显示当前播放的歌曲的路径

android实现播放sd卡的音乐播放

查找到sd卡里所有的音乐,播放音乐 以及声音大小的控制

如何构建Gramophone:基于Media3的现代Android音乐播放器完整指南

Gramophone是一款遵循Android标准严格构建的智能音乐播放器,专为追求简洁、高效本地音乐播放体验的Android用户设计。这款开源播放器采用最新的Media3多媒体框架和Material Design 3设计语言,提供了完整的音乐库管理、同步歌词显示、ReplayGain 2.0支持等专业功能,同时保持了轻量级和稳定性的核心优势。 ## 项目架构与技术栈 Gramophone的核心

gitblog_00554的博客 645

GIS国土工具实战:从地类分析到坐标转换,一站式解决项目难题

本文详细介绍了GIS国土工具在国土整治项目中的高效应用,涵盖地类分析、坐标转换、影像加载等核心功能。通过实战案例展示如何利用该工具快速处理shp与txt文件转换、智能比对三调二调数据,以及优化影像加载策略,显著提升项目效率。特别适合需要处理复杂国土数据的专业人员使用。

weixin_28732953的博客 334

音乐播放器-C#实现

目录。

N201871643的博客 1631

无源低通滤波器

无源RC滤波器“滤除”不需要的信号,因为它们分离并允许仅通过其频率的正弦输入信号,最简单的是无源低通滤波器网络。在低频应用(高达100kHz)中,无源滤波器通常使用简单的RC(电阻-电容)网络构建,而高频滤波器(高于100kHz)通常由RLC(电阻-电感-电容)元件制成。无源滤波器由电阻器、电容器和电感器等无源元件组成,没有放大元件(晶体管、运算放大器等),因此没有信号增益,因此它们的输出电平始终小于输入。滤波器是根据它们允许通过它们的信号的频率范围来命名的,同时阻挡或“衰减”其余部分。

weixin_44448586的博客 1万+

通过JLink下载实现工控MCU批量烧录实战案例

利用JLink下载工具实现高效稳定的工控MCU批量烧录,提升产线效率。案例详细解析了脚本配置与自动化流程,突出jlink下载的可靠性和可扩展性,适用于大规模嵌入式部署场景。

weixin_30205153的博客 812

Ubuntu下装个音乐播放器

<br />今天一直想着怎么在我的Ubuntu上安装个音乐播放器,功能强大一点的,最好能像win平台下的酷狗或者酷我,千千静听等等。<br />Step1:<br /> 第一个想到的就是wine,但是上次想在wine上装Dr.com时,忘了装那个软件是要重启的,我又不知道在Win

lilynupt的专栏 3822

手把手教你用u-center配置ublox GPS模块:从波特率到报文频率全流程

本文提供了一份详细的u-center软件配置ublox GPS模块的完整指南。从硬件连接到软件设置,逐步讲解了如何探测并设置正确的波特率、选择与启用关键的NMEA和UBX报文,以及配置输出频率。文章特别强调了配置固化的重要性,并分享了使用UBX协议进行高效数据解析等高级技巧,帮助开发者快速上手并优化GPS模块性能。

weixin_28285943的博客 897

Gramophone音乐播放器:基于media3的现代化Android音乐应用完全指南

Gramophone是一款基于media3和Material Design库构建的现代化Android音乐播放器,严格遵循Android标准设计规范。这款应用不仅提供了简洁直观的用户界面,还具备强大的音乐播放功能,让你在Android设备上享受高品质的音乐体验。 ## 🎵 Gramophone的核心优势 Gramophone音乐播放器凭借其独特的设计理念和技术架构,在众多音乐应用中脱颖而出。

gitblog_07525的博客 419

企业微信消息推送(一)接收消息服务器URL

企业微信限制过多,公司域名所有权检验不通过。采用接收消息服务器URL的方式。使用vscode,将UTF-8 BOM文本编码改为UTF-8。配置接收消息服务器URL。

Xiaoweidumpb 1万+

支持向量机算法(带你了解原理 实践)

支持向量机作为一种强大的分类算法,在各个领域都取得了显著的成果。其基于统计学习理论的原理使得它能够在高维空间中找到最优分类超平面,并通过核函数处理非线性问题。

2303_79387663的博客 3736

音乐播放器制作一(Windows Media Player控件)

音乐盒制作

张一西的博客 1634

HBase骚操作之数据加载方式BulkLoad

本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。HBase BulkLoad对于异构数据源的合并及大量数据一次性导入具有重要指导意义,相比HBase Put操作在性能上具有较高的优势

石榴姐yyds 7789

C#音乐播放器(WinForm简约小项目)

为什么使用Windows Media Player COM组件Windows Media Player控件可以播放当前最流行的音频、视频文件和大多数混合型的多媒体文件。Windows Media Player COM组件功能丰富,适配windowsWindows Media Player 控件的对象模型在 .NET Framework 与非托管代码和脚本中的对象模型基本相同,这为开发者提供了丰富的 API 来控制媒体播放和管理媒体库2。OGG:用于读取OGG后缀的音乐文件,并载入右侧的列表。

weixin_73767660的博客 1856

智能车复工日记【3】:图像处理——基本扫线和基本特征提取和十字补线

目录前言基本扫线(除了进入环岛状态或者坡道或者十字路口的普通扫线)基本数据和初步特征进一步特征提取1、计算并且显示前n行左右线各丢失数目(不break和break的都有)2、计算左右线方差(以右线为例)【a】计算右线曲率(选三个点:r_start、中点、break点)【b】如果右线曲率在一定的范围,就进行右线拟合,从空白行开始计算斜率,否则则从0行开始计算 前言 图像大小185*70,通过扫线获取.........

hanhan的博客 3万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android Car音乐播放器分析

                       Android Car音乐播放器分析   概述     Android Car系统音乐路径是packages/apps/Car/Media,应用名称是CarMediaApp,包名是com.android.car.media。系统音乐的数据来自同目录的LocalMediaPlayer,应用名称是LocalMediaPlayer,包名是com.and...

2791

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 四大基本组件之ContentProvider联系人
下一篇: 录制视频
张小卿-
博客等级 码龄10年 41粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值