Android多媒体(音乐播放器)

状态检测防火墙中首包与后续包的差异化处理机制解析 本文深入解析状态检测防火墙中首包与后续包的差异化处理机制,详细介绍了会话表建立、安全策略匹配及快速转发等关键技术。通过实际案例和调试技巧,帮助网络工程师优化防火墙性能,确保网络安全与效率。特别强调了首包处理和后续包处理的智能差异,提升网络防护能力。 阅读详情

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/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.zking.administrator.g160628_android27_palymeusic.MainActivity">

    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/sb_main_bar"/>
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_media_play"
        android:onClick="PlayOrPause"/>
</LinearLayout>

1.手机内存(应用内)
public class MainActivity extends AppCompatActivity {

    private MediaPlayer mediaplayer;
    private SeekBar sb_main_bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar);
        /**
         * 给进度条设置滑动监听
         * 一定要在滑完之后才能放,
         * 如果你是在onProgressChanged里开始做,就会实现DJ的效果
         */
        sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override//进度条改变
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            }
            @Override//开始滑
            public void onStartTrackingTouch(SeekBar seekBar) {

            }
            @Override//停止滑
            public void onStopTrackingTouch(SeekBar seekBar) {
                //获取当前进度条的位置
                int currentPosition=seekBar.getProgress();
                //跳转到某个位置进行播放
                mediaplayer.seekTo(currentPosition);
            }
        });
    }
    public void PlayOrPause(View view){
        //把view强转为ImageButton
        ImageButton imageButton= (ImageButton) view;
        //实例化MediaPlayer
        //第一次进入判断mediaplayer为空就执行操作
        if(mediaplayer==null){
            mediaplayer = MediaPlayer.create(this, R.raw.s8);
            //开始
            mediaplayer.start();
            //暂停图标
            imageButton.setImageResource(android.R.drawable.ic_media_pause);
            //音乐只要一播放,获取音乐的播放时长
            int time=mediaplayer.getDuration();
            //设置进度条的最大值为音乐的播放时长
            sb_main_bar.setMax(time);
            new MyThread().start();
        }else if(mediaplayer.isPlaying()){
            //如果正在播放mediaplayer.isPlaying()暂停
            //暂停
            mediaplayer.pause();
            //播放图标
            imageButton.setImageResource(android.R.drawable.ic_media_play);
        }else{
            //如果你没用播放它会重新开始,如果是暂停的状态你点start就会接着放
            //在这里没有所谓的接着放的方法
            mediaplayer.start();
            //暂停图标
            imageButton.setImageResource(android.R.drawable.ic_media_pause);
        }
    }
    //要让进度条动起来就要用到子线程
    class MyThread extends Thread{
        @Override
        public void run() {
            super.run();
            //第一种:拿到进度条的当前进度,如果它小于最大值
            while(sb_main_bar.getProgress()<sb_main_bar.getMax()){
                //循环一次,获取音乐当前的播放位置
                int currentPosition=mediaplayer.getCurrentPosition();
                //音乐播放到这里进度条也设置到哪里
                sb_main_bar.setProgress(currentPosition);
            }
        }
    }
}

2.内存卡
public class MainActivity extends AppCompatActivity {

    private MediaPlayer mediaplayer;
    private SeekBar sb_main_bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar);
        /**
         * 给进度条设置滑动监听
         * 一定要在滑完之后才能放,
         * 如果你是在onProgressChanged里开始做,就会实现DJ的效果
         */
        sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override//进度条改变
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            }
            @Override//开始滑
            public void onStartTrackingTouch(SeekBar seekBar) {

            }
            @Override//停止滑
            public void onStopTrackingTouch(SeekBar seekBar) {
                //获取当前进度条的位置
                int currentPosition=seekBar.getProgress();
                //跳转到某个位置进行播放
                mediaplayer.seekTo(currentPosition);
            }
        });
    }
    public void PlayOrPause(View view){
        //把view强转为ImageButton
        ImageButton imageButton= (ImageButton) view;
        //实例化MediaPlayer
        //第一次进入判断mediaplayer为空就执行操作
        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("file://"+sdPath+"/s8.mp3"));
                    //播放内存卡里的音频,它需要准备一下才会播放(缓冲一下)
                    mediaplayer.prepare();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                mediaplayer.start();
                //暂停图标
                imageButton.setImageResource(android.R.drawable.ic_media_pause);
                //音乐只要一播放,获取音乐的播放时长
                int time=mediaplayer.getDuration();
                //设置进度条的最大值为音乐的播放时长
                sb_main_bar.setMax(time);
                new MyThread().start();
            }

        }else if(mediaplayer.isPlaying()){
            //如果正在播放mediaplayer.isPlaying()暂停
            //暂停
            mediaplayer.pause();
            //播放图标
            imageButton.setImageResource(android.R.drawable.ic_media_play);
        }else{
            //如果你没用播放它会重新开始,如果是暂停的状态你点start就会接着放
            //在这里没有所谓的接着放的方法
            mediaplayer.start();
            //暂停图标
            imageButton.setImageResource(android.R.drawable.ic_media_pause);
        }
    }
    //要让进度条动起来就要用到子线程
    class MyThread extends Thread{
        @Override
        public void run() {
            super.run();
            //第一种:拿到进度条的当前进度,如果它小于最大值
            while(sb_main_bar.getProgress()<sb_main_bar.getMax()){
                //循环一次,获取音乐当前的播放位置
                int currentPosition=mediaplayer.getCurrentPosition();
                //音乐播放到这里进度条也设置到哪里
                sb_main_bar.setProgress(currentPosition);
            }
        }
    }
}
AndroidManifest.xml
<!--播放内存卡里的音频用到的权限-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

3.网络
public class MainActivity extends AppCompatActivity {

    private MediaPlayer mediaplayer;
    private SeekBar sb_main_bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar);
        /**
         * 给进度条设置滑动监听
         * 一定要在滑完之后才能放,
         * 如果你是在onProgressChanged里开始做,就会实现DJ的效果
         */
        sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override//进度条改变
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            }
            @Override//开始滑
            public void onStartTrackingTouch(SeekBar seekBar) {

            }
            @Override//停止滑
            public void onStopTrackingTouch(SeekBar seekBar) {
                //获取当前进度条的位置
                int currentPosition=seekBar.getProgress();
                //跳转到某个位置进行播放
                mediaplayer.seekTo(currentPosition);
            }
        });
    }
    public void PlayOrPause(View view){
        //把view强转为ImageButton
        final ImageButton imageButton= (ImageButton) view;
        //实例化MediaPlayer
        //第一次进入判断mediaplayer为空就执行操作
        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("http://193.168.4.247:8080/s8.mp3"));
                    //网络音乐要用异步准备
                    mediaplayer.prepareAsync();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                //设置准备监听
                mediaplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override//准备的
                    public void onPrepared(MediaPlayer mp) {
                        mediaplayer.start();
                        //暂停图标
                        imageButton.setImageResource(android.R.drawable.ic_media_pause);
                        //音乐只要一播放,获取音乐的播放时长
                        int time = mediaplayer.getDuration();
                        //设置进度条的最大值为音乐的播放时长
                        sb_main_bar.setMax(time);
                        new MyThread().start();
                    }
                });
            }
        }else if(mediaplayer.isPlaying()){
            //如果正在播放mediaplayer.isPlaying()暂停
            //暂停
            mediaplayer.pause();
            //播放图标
            imageButton.setImageResource(android.R.drawable.ic_media_play);
        }else{
            //如果你没用播放它会重新开始,如果是暂停的状态你点start就会接着放
            //在这里没有所谓的接着放的方法
            mediaplayer.start();
            //暂停图标
            imageButton.setImageResource(android.R.drawable.ic_media_pause);
        }
    }
    //要让进度条动起来就要用到子线程
    class MyThread extends Thread{
        @Override
        public void run() {
            super.run();
            //第一种:拿到进度条的当前进度,如果它小于最大值
            while(sb_main_bar.getProgress()<sb_main_bar.getMax()){
                //循环一次,获取音乐当前的播放位置
                int currentPosition=mediaplayer.getCurrentPosition();
                //音乐播放到这里进度条也设置到哪里
                sb_main_bar.setProgress(currentPosition);
            }
        }
    }
}

AndroidManifest.xml

    <!--网络权限-->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>



Android---多媒体(音乐播放器) 阅读详情

相关推荐

android多媒体音乐播放器(mediaPlayer)的三种类别的播放方法

一、简单的音乐播放器事例有 1、播放应用内的音频文件 2、播放SD卡的音频文件 3、播放网络的音频文件 下列的效果如图所示:下列是xml的布局文件

qq_33524771的博客 2974

Android 多媒体播放器

1.Android中播放音频文件通过MediaPlayer类来实现的,常用的控制方法: 2.MediaPlayer的工作流程 首先需要创建出一个MediaPlayer对象,然后调用setDataSource()方法来设置音频文件的路径,再调用prepare()方法使MediaPlayer进入到准备状态,接下来调用start()方法就可以开始播放音频,调用pause()方法就会暂停播放,调用reset()方法就会停止播放。 3.部分代码: 获取运行时权限: if(ContextCompat.checkSelf

weixin_43917227的博客 545

Android多媒体播放器开发实战指南

Android多媒体框架是构建在Linux内核之上的,为开发者提供了丰富的API来处理音频和视频。该框架包括了从捕捉到播放的整个媒体处理流程,并且支持多种格式和编解码器。它允许应用直接与底层的多媒体硬件交互,同时也提供了软件编解码的能力,使得开发者可以更灵活地处理各种媒体场景。Android多媒体框架的核心组件包括MediaPlayer和MediaRecorder,前者用于媒体播放,后者用于媒体录制。

weixin_42601702的博客 777

构建android上多媒体apk

1.音频的使用, a.比如说你现在在播放音乐界面则可以在activity的oncreate中setVolumeControlStream(AudioManager.STREAM_MUSIC);表示当调整音量时会调整系统的音乐音量。 b.使你的apk具有监听外部音频控制按钮的功能,例如实现线控播放,下一首,调整音量等。 注册广播, public class RemoteCont

ThinkDo的博客 396

安卓Android源码——音乐播放器源码深度解析

本文还有配套的精品资源,点击获取 简介:本源码文件提供了安卓平台上音乐播放器应用的完整源代码,适合作为学习移动应用开发的实践项目。通过深入源码,开发者将掌握Android系统的多媒体处理、UI设计、事件处理和权限管理等关键技术点。内容涵盖多媒体框架使用、文件系统操作、UI组件应用、后台服务处理、应用生命周期管理、通知栏控制、异步处理技术、权限请求和流媒体播放等核心开发概念。...

weixin_32747681的博客 1374

安卓多媒体播放器

安卓多媒体播放器 集成Vitamio 可以播放本地和网络的音频和视频文件 支持多种格式

Android 多媒体 - 播放音视频

主要介绍了如何使用 MediaPlayer 实现一个带滑动进度条的播放器,并利用它提供的方法去控制音视频的播放,以及简单使用 VideoView 播放视频的方式。

AmieVastness的博客 958

基于Android的简单多媒体播放器

基于Android的简单多媒体播放器,用于学习Android上的音频、视频播放操作。

安卓 多媒体音乐播放器

今天给大家分享一下音频播放器,其代码如下:xml:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro

l_blackeagle的博客 500

android多媒体音乐(MediaPlayer)播放器制作代码

主要为大家详细介绍了android多媒体音乐(MediaPlayer)播放器的制作相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Android多媒体之VideoView视频播放器

主要为大家详细介绍了Android多媒体之VideoView视频播放器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Android 多媒体(音乐播放器)

在这里主要是用两个简单的按钮实现音乐的播放和停止功能,工程的目录结构为: 同时添加一个文件夹,里面放后缀为mp3的文件就可以了。 在main配置文件主要是添加两个Button: 添加一个activity类和一个service类AndroidManifest.xml配置文件为: 创建一个MusicServiceActivity类启动service类: package

G_MuHan的博客 516

几款常见存储系统的对比分析

如何对比选择存储系统?本文给你答案!本文将详细对比NetApp、Lsilon、Vast Data、DDN lustre和WekaFS的五个存储系统的简单性、速度、规模及标准。

hongcloudtech的博客 1679

Android多媒体--音乐播放器实例

From:http://blog.youkuaiyun.com/Nio96/article/details/15499921

MaximusKiang的专栏 894

相机SDK开发C++篇-常用开发函数封装讲解(迈德威视相机)

/ 软触发失败,返回false } return true;= (nRet = CameraSetSysOption("NumBuffers", QString("%1").arg(getImageBufferNodeNum()).toLocal8Bit().data()))) { setLastErrorMsg("相机#%1设置缓存区数量错误,错误码:%2").arg(getCameraIndex()).arg(nRet);

GodJhin的博客 1542

VCS和UVM常用编译选项

VCS编译选项 -full64 在64bit模式下编译、仿真,用于64位操作系统 -j8 指定编译器可以并行编译的进程数为8 -timescale=1ns/1ps 指定仿真时间和精度 +libext+.v+.V+.sv+.svh 识别.v、.sv、.svh等多种格式文件 -sverilog 支持system verilog 编译 -f xxx.lisf 指定包含所有设计文件列表的文件名 -top test 设置顶层模块为test。(指包含.

qq_40571921的博客 9934

Android多媒体框架对音乐播放器的支持

下面介绍一下Andriod多媒体框架对开发者提供的支持有哪些。 1. MediaScannerReceiver 这个广播接收者在接收到ACTION_BOOT_COMPLETED、ACTION_MEDIA_MOUNTED或 ACTION_MEDIA_SCANNER_SCAN_FILE 广播时对SD卡中的图片、音乐和视频文件进行了扫描...

weixin_30768661的博客 132

【项目分享】RailTracker: 火车票务数据采集与分析

从12306使用爬虫爬取火车站及车次信息、火车票价 通过本项目,我们将带领访问者手把手完成火车票数据采集、数据清洗、数据集成、可视化的一整个流程!

zhushatong的博客 3345

Android多媒体之音乐播放器

Android 音乐播放器有很多种方式,首先由一个音乐播放器:<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> //进度条 <SeekBar android:layout_width="match_parent"

JueDream的博客 919

综合能源系统多时间尺度优化调度!诸多创新点让你抓住审稿人的心!

主要介绍综合能源系统的设备组成结构,并针对屋顶光伏系统、冷-热-电联供系统中的燃气轮机、燃气锅炉、光伏溴化锂制冷机、卡琳娜余热发电、中央空调系统,以及外网交互系统的配电网与天然气管网交互关系进行数学建模。1) 源-荷-储协同调度:研究屋顶光伏、燃气轮机、燃气锅炉等源侧设备,中央空调、电-热-冷负荷、可平移电负荷、可削减温控负荷等负荷侧资源,以及储能系统、电动汽车等储能侧设备的协同调度,以提高风光消纳能力,满足社会能源需求。通过电转热、电转冷、电转气等多能耦合方式,可进一步促进可再生能源的应用与发展。

weixin_48747334的博客 1488

阿里云学生机2核4G,30分钟搞定DNF台服联机(CentOS 7.6保姆级教程)

本文提供阿里云学生机2核4G搭建DNF台服联机的详细教程,涵盖服务器选购、网络配置、服务端部署及客户端联机设置。通过CentOS 7.6系统优化和端口配置,30分钟内即可完成搭建,适合学生和技术爱好者低成本实现游戏联机体验。

weixin_42537919的博客 359

android 多媒体——音乐播放器

使用 MediaPlayer 对音频操作 1.Android-播放应用内音频文件 //实例化一个MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.danche);//R.raw.danche为mp3音频文件路径 //设置类型 mediaPlayer.setAudioStreamType(AudioManager.S

W_Mayday的博客 808

HDOCK 蛋白蛋白对接软件使用;LZerD、pyDock、ClusPro网页在线对接

参考:hdock支持蛋白与蛋白,也支持蛋白与核酸对接计算。

weixin_42357472的博客 1万+

Android 多媒体中的音乐播放器

MediaPlayer 对音频操作(核心)1.Android-播放应用内音频文件 //实例化一个MediaPlayermediaPlayer = MediaPlayer.create(this, R.raw.cheng);//R.raw.danche为mp3音频文件路径 //设置类型mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)

snail_Long的博客 2850

【YOLOv11工业级实战】27. TensorRT量化实战:FP16/INT8极致加速!边缘设备YOLOv11推理速度提升4倍,精度损失控制在1.5%内

摘要:本文针对智慧园区200路摄像头实时分析的工业痛点——RTX 3080单卡仅能处理12路视频流(YOLOv11-nano FP32精度45FPS,需≥120FPS且精度损失≤3%),提供TensorRT量化完整解决方案。从原理解析(FP16/INT8精度差异与量化逻辑)到实操落地(ONNX转换、FP16引擎构建、INT8精细校准),全程给出可复用代码。实测显示:FP16量化后速度达128FPS(×2.8),精度损失0.2%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1719

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android之多媒体MediaPlayer(一个简单的音乐播放器)

音乐播放器MediaPlayer: 利用Environment.getExternalStorageDirectory()方法得到sdcard路径,然后用new File(得到的sdcard父路径,子路径)得到音乐存放路径。用File[]型的数组存放得到的所有音乐文件,接着就可以播放。 用MediaPlay需要在manifests中申请权限android.permission.R

NiZhuanXingHeIT的博客 1992

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 获取手机的联系人
下一篇: 视频播放与拍照
XHui_Lin
博客等级 码龄10年 27粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值