MediaPlayer播放音频文件

2024-08-31 20:32

本文主要是介绍MediaPlayer播放音频文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1,普通MediaPlayer播放音频文件

activity_sound_player.xml

<?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"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="点击播放,播放音乐" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/play"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="播放" /><Buttonandroid:id="@+id/pause"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="暂停" /><Buttonandroid:id="@+id/stop"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="停止" /></LinearLayout><TextViewandroid:id="@+id/desc"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="状态描述" /></LinearLayout>

SoundPlayerActivity.java
/*** 功能描述:测试MediaPlayer播放音乐* 时间:2016/8/4* 作者:vision*/
public class SoundPlayerActivity extends AppCompatActivity {/*** 播放音乐状态控制按钮*/private Button play, pause, stop;/*** 当前状态描述*/private TextView desc;/*** 音频播放器*/private MediaPlayer mediaPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sound_player);play = (Button) findViewById(R.id.play);pause = (Button) findViewById(R.id.pause);stop = (Button) findViewById(R.id.stop);desc = (TextView) findViewById(R.id.desc);mediaPlayer = MediaPlayer.create(SoundPlayerActivity.this, R.raw.b);play.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mediaPlayer != null) {try {mediaPlayer.reset();mediaPlayer.prepare();mediaPlayer.start();} catch (Exception e) {e.printStackTrace();}} else {try {mediaPlayer = MediaPlayer.create(SoundPlayerActivity.this, R.raw.b);mediaPlayer.prepare();mediaPlayer.start();} catch (Exception e) {e.printStackTrace();}}desc.setText("播放中");}});pause.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mediaPlayer.isPlaying()) {mediaPlayer.pause();}desc.setText("暂停中");}});stop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mediaPlayer.isPlaying()) {mediaPlayer.stop();}desc.setText("停止播放");}});}protected void onDestroy() {if (mediaPlayer.isPlaying()) {mediaPlayer.stop();}mediaPlayer.release();//释放资源super.onDestroy();}}

2,SurfaceView结合MediaPlayer播放音频文件
        activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:weightSum="1"><TextViewandroid:id="@+id/text_desc"android:layout_width="match_parent"android:layout_height="wrap_content" /><SurfaceViewandroid:id="@+id/surfaceview"android:layout_width="400dip"android:layout_height="450dip"android:layout_gravity="center"android:layout_weight="0.25" /><LinearLayoutandroid:id="@+id/ll"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"><Buttonandroid:id="@+id/bt1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="播放" /><Buttonandroid:id="@+id/bt2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="暂停" /><Buttonandroid:id="@+id/bt3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="停止" /></LinearLayout>
</LinearLayout>
        VideoPlayorActivity.java

/*** 功能描述:SurfaceView播放音乐* 时间:2016/8/4* 作者:vision*/
public class VideoPlayorActivity extends AppCompatActivity implements SurfaceHolder.Callback {/*** SurfaceView作播放器*/private SurfaceView surfaceView;/*** SurfaceView控制器*/private SurfaceHolder holder;/*** 开始播放*/private Button play;/*** 暂停*/private Button pause;/*** 停止*/private Button stop;/*** 视频播放器*/private MediaPlayer mediaPlayer;private TextView path;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);surfaceView = (SurfaceView) findViewById(R.id.surfaceview);play = (Button) findViewById(R.id.bt1);pause = (Button) findViewById(R.id.bt2);stop = (Button) findViewById(R.id.bt3);path = (TextView) findViewById(R.id.text_desc);path.setText(Environment.getExternalStorageDirectory().getPath() + "/a.mp3");holder = surfaceView.getHolder();holder.addCallback(this);holder.setFixedSize(400, 450);//设置视频播放分辨率holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//Surface类型play.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mediaPlayer.start();}});pause.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mediaPlayer.pause();}});stop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mediaPlayer.stop();}});}@Overridepublic void surfaceCreated(SurfaceHolder holder) {mediaPlayer = new MediaPlayer();
//        mediaPlayer = MediaPlayer.create(VideoPlayorActivity.this, R.raw.b);mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置数据源类型mediaPlayer.setDisplay(this.holder);//设置播放展示Viewtry {mediaPlayer.setDataSource(Environment.getExternalStorageDirectory() + "/a.mp3");
//            mediaPlayer.setDataSource("/storage/sdcard0/a.mp3");
//            mediaPlayer.setDataSource(String.valueOf(R.raw.b));mediaPlayer.prepare();} catch (Exception e) {e.printStackTrace();}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {if (mediaPlayer.isPlaying()) {mediaPlayer.stop();}mediaPlayer.release();}
}

源码下载



成功的人不是赢在起点,而是赢在转折点。

这篇关于MediaPlayer播放音频文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124915

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

Vue 中实现视频播放的艺术

随着前端技术的飞速发展,视频播放在 Web 应用中已经成为了一个不可或缺的功能。从社交媒体平台到教育网站,再到在线购物平台,视频元素无处不在。而 Vue.js 作为当今最流行的前端框架之一,在实现视频播放时提供了很多强大的工具和技巧。在这篇博客中,我们将深入探讨如何使用 Vue.js 实现视频播放功能,不仅仅是简单地嵌入视频,还要添加一些高级功能,如自定义播放器控件、播放进度条、视频切换、事件处理

浅析网页不安装插件播放RTSP/FLV视频的方法

早期很多摄像头视频流使用的是RTSP、RTMP协议,播放这类协议的视频通常是在网页上安装插件。但现在越来越多的用户,对于网页安装插件比较反感,且随着移动设备的普及,用户更多的希望使用手机、平板等移动设备,直接可以查看这些协议的视频。那是否有什么方案可以直接网页打开RTSP、RTMP协议的视频,直接观看不用安装插件呢?而且对于摄像头的数据,尽可能低延迟的获取实时画面。  其实很多摄像头厂家也注意到

使用WebRtcStreamer播放rtsp视频

一、使用步骤 1.安装WebRtcStreamer包 代码如下(示例): {"name": "default","version": "0.1.0","private": true,"scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build"},"dependencies": {"core-js":

关于视频播放和下载开发的一些总结

在项目中遇到的一些问题和经验的分享: KrVideoPlayerControlView 下载地址 先从视频播放说起,视频播放是借助于第三方的demo来做参考,cc视频的一个第三方,不过真心觉得cc视频很坑。建议不要在使用! 然后,做到最后实在是被改的做不下去,自该重新寻找新的方法,进行重新开始, 然后在网上看到了一个KrVideoPlayerController 的这个

【Unity-Lua】音乐播放器循环滚动播放音乐名

前言:Unity中UI节点 图1 如上所示,一开始本来是打算用ScrollView做的,觉得直接计算对应的文本位置就行,所以没用ScrollRect来做,可以忽略Scroll,Viewport这些名字。如下图:需要在一个背景Image组件上添加上Mask组件来显示固定位置的文本显示。 图2 图3 并且需要在要显示的文本上挂载Content Size Filter组件,但是这儿会有个坑