主要涉及类:MediaPlayer
(1) 当一个MediaPlayer对象被创建或者调用reset()方法之后,它处于空闲状态,调用release()方法后处于结束状态
1,一个MediaPlayer对象调用了reset()方法后,再调用其它方法可能会触发OnErrorListener.onError()事件,未调用reset()方法则不会触发
2,当Mediaplayer对象不再被使用时,最好调用release()方法对其进行释放,使其处于结束状态,此时它不能被使用
3,Mediaplayer对象被创建时(调用构造方法)处于空闲状态,若使用create()方法创建后则处于准备状态。
(2) 一般情况下,一些常用的播放控制操作可能因为音频、视频的格式不被支持或者质量较差以及流超时,也有可能由于开发者的疏忽使得Mediaplayer对象处于无效状态等而导致错误。此时可通过注册setOnErrorListener方法实现监控。如果发生了错误,Mediaplayer对象将处于多雾状态,可以使用reset()方法来回复错误。
(3) 任何Mediaplayer对象都必须先处于准备状态,然后才开始播放
(4) 要开始播放Mediaplayer对象都必须成功调用start()方法,可通过isPlaying()方法来检测是否正在播放
(5) 当Mediaplayer对象在播放时,可以进行暂停和停止操作,pause()方法暂停播放,stop()方法停止播放。处于暂停暂停时可通过start()方法恢复播放,但是处于停止状态时则必须先调用prepare()方法使其处于准备状态,再调用start()方法。
主要方法:
Mediaplayer:构造方法
create: 创建一个要播放的多媒体
getCurrentPosition:得到当前播放位置
getDuration: 得到文件的时间
prepare: 准备(同步)
prepareAsync:准备(异步)
seekTo: 指定播放的位置(以毫秒为单位)
setAudioStreamType: 设置流媒体的类型
setDataSource: 设置数据来源
setDisplay: 设置用SurfaceHolder来显示多媒体
setOnBufferingUpdateListener: 网络流媒体的缓冲监听
setOnErrorListener: 设置错误信息监听
setOnVideoSizeChangedListener:视频尺寸监听
setScreenOnWhilePlaying: 设置是否使用SurfaceHolder来显示
setVolume: 设置音量
//获取sd卡上的音频文件
setDataSource(“/sdcard/test.mp3”);
//装载资源中的音乐
MediaPlayer.create(Activity01.this,R.raw.test);
//目前存在问题,不能循环解析出音频文件
原因:.android_secure文件夹受保护,无法获取里面的文件信息
播放视频
相关类:VideoView
方法说明:
getBufferPercentage:得到缓冲的百分比
getCurrentPosition:得到当前播放位置
getDuration:得到视频文件的时间
resolveAdjustedSize:调整视频显示大小
setMediaController:设置播放控制器模式(播放进度条)
setOnCompletionListener:当视频文件播放完时触发事件
setVideoPath:设置视频源路径
setVideoURI:设置视频源地址
录音
相关类:MediaRecorder
方法说明:
MediaRecorder:构造方法
getMaxAmplitude:得到最大幅度
setAudioEncoder:设置音频编码
setAudioSource:设置音频源
setCamera:设置摄像机
setMaxDuration:设置最长录音时间
setMaxFileSize:设置文件的最大尺寸
setOutputFile:设置输出文件
setOutputFormat:设置输出文件格式
setPreviewDisplay:设置预览
setVideoEncoder:设置视频编码
setVideoFrameRate:设置视频帧的频率
setVideoSize:设置视频的宽度和高度(分辨率)
setVideoSource:设置视频源
File类下的方法:
public static File createTempFile(String prefix, String suffix, File directory)
Creates an empty temporary file in the given directory using the given prefix and suffix as part of the file name.
系统会自动在prefix和suffix之间加上一些数字来构建完整的文件名
实现录音的一般步骤:
1, 实例化MediaRecorder mr,调用构造方法
2, 初始化mr:mr.setAudioSource(MIC)/setVideoSource(CAMERA)
3, 配置DataSource:设置输出文件格式/路径,编码器等
4, 准备录制:mr.prepare()
5, 开始录制:mr.start()
6, 停止录制:mr.stop()
7, 释放资源:mr.release()
注:2,3不可调换顺序
添加许可:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO">
相机设置
相关类:Camera,它是专门用来连接和断开相机服务的类
Camera的几个事件:
Camera.AutoFocusCallback: 自动调焦功能
Camera.ErrorCallback: 错误信息捕捉
Camera.Parameters: 相机的属性参数
Camera.PictureCallback: 拍照、产生图片时触发
Camera.PreviewCallback: 相机预览设置
Camera.ShutterCallback: 快门设置
Camera.Size: 图片的尺寸
Camera类没有构造方法,可通过open()方法来打开相机设备
Camera类的方法介绍:
autoFocus: 设置自动对焦
getParameters: 得到相机参数
open: 启动相机服务
release: 释放相机服务
setParameters: 设置参数
setPreviewDisplay:设置预览
startPreview: 开始预览
stopPreview: 停止预览
takePicture: 拍照
注:takePicture方法要实现3个回调函数作为它的三个参数:Camera.ShutterCallback(快门),和两个Camera.Picture.Callback(图像数据)。
需要许可
<uses-permission android:name="android.permission.CAMERA" />
若要将图片存储至sd卡中,则需要sd卡读写许可
目前存在问题:只能拍照一次,不能重新回到预览界面
闹钟设置
相关类:AlarmManager,它是专门用来设定在某个指定的时间去完成指定的事件。AlarmManager提供了访问系统警报的服务,只要在程序中设置了警报服务,AlarmManager就会通过onReceive()方法去执行这些事件,就算系统处于待机状态,同样不会影响运行。可通过Context.getSystemService(ALARM_SERVICE)方法来获得该服务。
方法说明:
cancel: 取消AlarmManager服务
set: 设置AlarmManager服务
setInexactRepeating:设置不精确周期
setRepeating:设置精确周期
setTimeZone:设置时区
注:需创建一个BroadcastReceiver的子类,并覆盖onReceive()方法
铃声设置
系统自带的铃声都放在/system/medio/audio/文件夹中
铃音类型: TYPE_RINGTONE(来电铃音),TYPE_ALARM,TYPE_NOTIFICATION
相关类:RingtoneManager
方法介绍:
getActualDefaultRingtoneUri:取得指定类型的铃声
getCursor:返回所有可用铃声的游标
getDefaultType:得到指定URI默认的铃声类型
getRingtone
getRingtonePosition:得到铃声位置
getRingtoneUri
getValidRingtoneUri:得到一个可用铃声的URI
isDefault:得到指定的Uri是否为默认的铃声
setActualDefaultRingtoneUri:设置默认的铃声
获取的Cursor共有4列,列名依次为:_id,title,”content://media/internal/audio/media”,title_key
以设置手机铃音为例:
if (isFolder(strRingtongFolder)) {//如果不存在该文件夹则创建一个
// 打开系统铃声设置
Intent intent = new Intent(
RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, true);
// 类型为来电ringtong
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_RINGTONE);
// 设置显示的题目
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置来电的铃声");
// 当设置完成之后返回到当前的activity
startActivityForResult(intent, RingtongButton);
}
然后复写onActivityResult(int requestCode, int resultCode, Intent data)方法,resultCode就是点击设置dialog的按钮编号,需要判断是否点击了确认按钮
if (resultCode != RESULT_OK) {
return;
}
try {
// 得到我们选择的铃声
Uri pickedUri = data .getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
// 将我们选择的铃声选择成默认
if (pickedUri != null) {
RingtoneManager.setActualDefaultRingtoneUri(
Media_RingTongActivity.this,
RingtoneManager.TYPE_RINGTONE, pickedUri);
}
} catch (Exception e) {
e.printStackTrace();
} 相关推荐
Android之MediaPlayer详解,详细的Android学习指南
我坚信,坚持学习,每天进步一点,滴水穿石,我们离成功都很近!以下是总结出来的字节经典面试题目,包含:计算机网络,Kotlin,数据结构与算法,Framework源码,微信小程序,NDK音视频开发,计算机网络等。字节高级Android经典面试题和答案。
android Mediaplayer各种属性和方法简单介绍
主要涉及类:MediaPlayer (1) 当一个MediaPlayer对象被创建或者调用reset()方法之后,它处于空闲状态,调用release()方法后处于结束状态 1,一个MediaPlayer对象调用了reset()方法后,再调用其它方法可能会触发OnErrorListener.onError()事件,未调用reset()方法则不会触发 2,当Mediaplayer对象不再被使用时
用c++builder6.0开发小闹钟(用于提醒自己不要盯着屏幕太久)
基本要求:设想是有两个时间:专注时间和休息时间,这两个是可以设置的。专注时间一到,音乐响起,然后就停下手上的工作,休息;紧接其后,休息时间一到,相关的音乐响起,继续回来工作。
MediaPlayer的reset()方法的作用
MediaPlayer的reset()方法经常使用,但具体为什么要用却不是很明白,今天看MediaPlayer的API说明,才知道是为了重用MediaPlayer对象。 在MediaPlayer的API说明中有如下内容: In order to reuse a MediaPlayer object that is in the Error state and recover from
MediaPlayer控件属性描述
播放: MediaPlayer.Play() 暂停: MediaPlayer.Pause() 定位: MediaPlayer.SetCurrentEntry(lWhichEntry) MediaPlayer.Next() MediaPlayer.Previous() 循环: MediaPlayer.PlayCount = 0 0:the clip plays repeate
nvlddmkm事件ID14报错排查全指南:从找不到描述到显卡驱动崩溃
系统日志中的“无法找到描述”往往让人一头雾水,但这类提示其实隐藏着驱动故障的关键线索。Windows事件查看器通过事件源和ID记录系统异常,其中显卡驱动相关的内核模式驱动组件一旦超时失败,就会触发TDR机制,产生13、14、153等不同事件ID。理解这些ID的含义,比纠结“找不到描述”本身更重要。对于频繁出现的驱动崩溃问题,可以从日志频率和发生场景判断方向,再通过安全模式下彻底清理驱动、关闭冲突软件、检查供电和温度等步骤逐层定位。无论是游戏满载黑屏,还是睡眠唤醒后闪退,掌握NVIDIA驱动日志的解读逻辑,都
Delphi 多媒体(TMediaplayer 1)
VCL为简单多媒体操作提供MediaPlayer组件。 该组件可播放Wave文件、MIDI文件、AVI视频等等。如果只是简单的播放Wave文件,常常使用上一讲中的PlaySound函数。也可以使用更复杂的MediaPlayer组件。 窗体上显示出播放的控制按钮,控制按钮包括play、pause、stop、next、previous、step、back、record、eject。如上图中。
群晖NAS变身私有Git服务器:DS218+部署与TortoiseGit客户端实战指南
本文详细介绍了如何将群晖NAS(如DS218+)变身为私有Git服务器,并配置TortoiseGit客户端实现高效代码管理。通过硬件检查、系统更新、Git Server套件安装及权限配置等步骤,帮助开发者在局域网内搭建安全、高速的代码托管环境,特别适合小团队协作。
Android API学习 SoundPool 和 MediaPlayer
Android平台中关于音频播放有以下两种方式: 1. SoundPool —— 适合短促且对反应速度比较高的情况(游戏音效或按键声等) 2. MediaPlayer —— 适合比较长且对时间要求不高的情况 ---------------------------------------------------------------------------------------
ctf——writeup
ctf线上赛——第三关地址:http://106.75.86.18:2222提示:ip spoofing——ip伪造首先访问目标地址,一个正常的网页,挺文艺的。上面有些提示。根据上面的提示,我们浏览网页。找了好久,终于找到你。这个跳转链接。(在这个页面下方)我们接着点击这个链接,就跳转到administrator.php这个页面了。看到这个登录页面,就要知道用户名,密码,可是没有怎么办。一开始也试
Open3D:读写点云与可视化(C++)
迭代 //Open3D #include "Open3D/Open3D.h" //Eigen #include "Eigen/Dense" void testOpen3D::xjGetInformation(const QString &pcPath) { /* read PC */ auto cloud_ptr = std::make_shared<open3d::geometry::PointCloud>(); if (!open3d::io::ReadPointCl
Delphi多媒体设计之TMediaPlayer组件(一)
VCL为简单多媒体操作提供MediaPlayer组件。该组件位于选项板组件System中。 该组件可播放Wave文件、MIDI文件、AVI视频等等。如果只是简单的播放Wave文件,常常使用上一讲中的PlaySound函数。也可以使用更复杂的MediaPlayer组件。 TMediaPlayer组件最简单的使用方法就是将其拖放到窗体上。如下图: 窗体上显示出播放的控制按钮,控制按钮包括...
FFT中的精度博弈:定点数缩放、块浮点与溢出处理在Vivado IP核中的实践权衡
本文探讨了在Vivado FFT IP核中实现高精度快速傅里叶变换的关键技术,包括定点数缩放策略、块浮点模式及溢出处理机制。通过分析不同精度控制方案的资源开销与性能权衡,为工程师在医疗成像、雷达信号处理等高动态范围应用中优化FFT实现提供实践指导。
基于MFC的Media Player播放器的制作介绍
|版权声明:本文为博主原创文章,未经博主允许不得转载。 因为这次多媒体课程设计做一个基于MFC的播放器,因为本人实力太菜,需要播放音乐或视频文件时候,自己写不出解码 函数,所以准备使用第三方多媒体库或是第三方控件辅助播放,找来找去还是觉得用Windows Media Player控件来编写比较 方便,因此这次播放器的制作主要是根据Media Player控件来实现,因为在微软...
5分钟搞定SNMP工具安装:从Linux到Windows的snmpwalk/snmpget全攻略
本文提供了SNMP工具(snmpwalk/snmpget)在Linux和Windows系统上的快速安装与使用指南,涵盖从基础安装到高阶应用的全面解析。通过详细的命令示例和故障排查技巧,帮助用户快速掌握网络设备监控与诊断的核心技能,提升运维效率。
【经验&技巧】如何在ADS中导入示波器的时域波形?
从示波器中导出的时域波形数据,需要按照固定的格式进行修改,并通过Display dataset对话框导入ADS。
记一次qml获取rtsp流在release模式下无法铺满整个屏幕问题
在使用qml的MediaPlayer和VideoOutput播放rtsp视频流时,出现debug模式下可以铺满整个屏幕和release模式下视频图像侧边留白的问题,很诧异,明明是同一份代码,难道是编译器优化的结果?Sreen.desktopAvailableWidth :组成虚拟桌面的屏幕集合的可用宽度,以像素为单位,不包括窗口管理器保留的区域,如任务栏和系统菜单。于是在VideoOutput中强行设置width和heigh,这里应该根据系统的屏幕大小来设置,qml中可以通过Screen来获取。
使用 Python 爬取 Wikipedia 数据:抓取百科条目及其内容
维基百科的 API 提供了一些方便的接口,通过这些接口,我们可以轻松获取到维基百科的条目、类别、图片和其他相关信息。维基百科的 API 主要是基于 HTTP 请求的,通过向特定的 URL 发送 GET 请求来获取信息。:获取指定条目的内容。在本博客中,我们介绍了如何使用 Python 爬取维基百科的条目数据。通过使用 Wikipedia API 和网页抓取技术,我们能够高效地获取条目内容,并将其存储和分析。希望本篇教程能帮助你深入理解如何抓取和处理维基百科的数据。
音频播放
Android平台中关于音频播放有以下两种方式: 1. SoundPool —— 适合短促且对反应速度比较高的情况(游戏音效或按键声等) 2. MediaPlayer —— 适合比较长且对时间要求不高的情况 ---------------------------------------------------------------------------------------
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
JS控制Mediaplayer属性和方法
播放: MediaPlayer.Play() 暂停: MediaPlayer.Pause() 定位: MediaPlayer.SetCurrentEntry(lWhichEntry) MediaPlayer.Next() MediaPlayer.Previous() 循环: MediaPlayer.PlayCount = 0 0:the clip plays repeate
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
MediaPlayer属性大全
播放: MediaPlayer.Play() 暂停: MediaPlayer.Pause() 定位: MediaPlayer.SetCurrentEntry(lWhichEntry) MediaPlayer.Next() MediaPlayer.Previous() 循环: MediaPlayer.PlayCount = 0 0:the clip p
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
C#中MediaPlayer的基本属性
MediaPlayer.URL 播放歌曲的地址 MediaPlayer.Ctlcontrols.play();让歌曲播放 MediaPlayer.Ctlcontrols.pause();歌曲暂停 MediaPlayer.settings.volume 播放器的声音(0~100); MediaPlayer.settings.mute = true;静音功能 MediaPlayer.Ctlcontr...
Android mediaPlayer属性详解
一、首先说一下mediaplayer的状态 空闲状态:当mediaplayer对象背创建或者调用reset()之后 准备状态:调用create()之后 结束状态:调用release() 二、mediaplayer使用流程 1、首先创建一个mediaplayer对象:private MediaPlayer mediaPlayer = new MediaPlayer(); 2、mediap
Android_视频播放
1、xml添加控件 在SurfaceView控件上,能够存放视频等资源 2、初始化控件及操作工具属性 SurfaceHolder封装SurfaceView的回调函数 MediaPlayer设置视频的基本属性—>(循环,暂停,开始等) 本类实现回调函数后覆写三个方法 覆写方法: surfaceCreated在surfaceView显示时调用该方法,可以在此方法中初始化
1936



被折叠的 条评论
为什么被折叠?



