主要涉及类: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各种属性和方法简单介绍的更多相关文章

  1. 使用Kotlin开发Android应用(I):简单介绍

    使用Kotlin开发Android应用(I):简单介绍 @author ASCE1885的 Github 简书 微博 CSDN 原文链接 Kotlin是一门基于JVM的编程语言.它正成长为Androi ...

  2. InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。

    InputStreamReader 和 OutputStreamWriter类使用方法简单介绍. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是 ...

  3. android MediaPlayer API大全已经方法详解(转载)

    通过这张图,我们可以知道一个MediaPlayer对象有以下的状态: 1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态.当调用了rele ...

  4. Android Fragment(三)ListFragment简单介绍以及Fragment之间通信

    一.Fragment通信简单介绍:Fragments之间是不能够直接通信的,他们之间的通信是通过Activity这个中间件来通信的, 为了让Fragment跟它的Activity通信,我们可以在Fra ...

  5. Android 驱动(二) IIC简单介绍

    一. I2C简单介绍 I2C(Inter-Integrated Circuit)总线是一种由 Philips 公司开发的两线式串行总线,用于连接微控制器及其外围设备.I2C 总线最基本的长处就是简单性 ...

  6. Neo4j属性图模型简单介绍

    本文主要是对Neo4j属性图模型简单的介绍. Neo4j是什么? Neo4j是一款是由java语言实现的图数据库,图形数据库将数据以图的数据结构进行存储和管理,并且能够以高度可问的方式优雅地表示任何种 ...

  7. java类中的static成员变量和static方法简单介绍,持续补充

    一.静态成员变量 1.属于整个类而不是某个对象实例,所以可以直接通过类名和对象名去调用. 2.静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收 二.静态方 ...

  8. android MediaPlayer的一些使用方法简历

    这里提供一些MediaPlayer的简单方法,方便以后熟练的使用它! 1)如何获得MediaPlayer实例: 可以使用直接new的方式: MediaPlayer mp = new MediaPlay ...

  9. Android 最火高速开发框架AndroidAnnotations简单介绍

    在上一篇Android 最火的高速开发框架androidannotations配置具体解释中介绍了在eclipse中配置androidannotation的步骤,如需配置请參考. 1.目标 andro ...

随机推荐

  1. Atom编辑器入门到精通(一) 安装及使用基础

    为什么选择使用Atom Atom是GitHub推出的一款编辑器,被称为21世纪的黑客编辑器,主要的特点是现代,易用,可定制.我之前用过多款编辑器,现在来总结一下个人对各编辑器的看法: Vim是我用的时 ...

  2. Unity3D 之UGUI 按钮

    新建一个按钮 按钮对应的属性 按钮下面只有一个文本的 游戏对象,是Button对应的显示文字 Interactable -->是否可以交互 Transition -->变换,对应各种关于按 ...

  3. ActionBar只显示图标不显示文字

    问题:ActionBar菜单项android:showAsAction设置为android:showAsAction="always|withText"或者android:show ...

  4. MySql免安装版配置方法

    第1步:下载如下图安装包 第2步:解压mysql压缩包,然后进入解压后的安装包 将my-default.ini复制一份,并改名为my.ini(我已经完成) 把下面内容复制到my.ini,并保存 [cl ...

  5. 【培训】Linux笔记 自学

    1.关机 查看在线用户 who:查看网络联机状态 netstat -a:查看后台执行程序 ps -aux 关机 shutdown -h now.init 0 halt.poweroff 硬件关机 重启 ...

  6. v4l2简介

    V4L是linux内核中关于视频设备的子系统,为linux下的视频驱动提供了统一的接口,使应用程序可以使用统一的API操作不同的视频设备,简化视频系统的开发与维护 V4L2相比与V4L有更好的扩展性和 ...

  7. windows phone 扫描二维码

    在网上找了找扫描二维码的例子,利用ZXing库实现(下载),提供的Silverlight版本的下载,在网上搜了一下已经有wp的dll可用了,不过网上实现的条码扫描的例子还都是用的Silverlight ...

  8. PHP AOP

    看到一篇好文,果断收藏 点击打开链接http://www.cnblogs.com/afritxia2008/archive/2010/07/03/1770427.html

  9. EF初始化mysql数据库codefirst

    EF使用Code First修改生成数据库表名的方法 1. 重写OnModelCreating,去掉表名复数 System.Data.Entity.ModelConfiguration.Convent ...

  10. CSS3之简易的3D模型构建[原创开源]

    CSS3之简易的3D模型构建[开源分享] 先上一张图(成果图):这个是使用 3D建模空间[源码之一] 制作出来的模型之一 当然这是一部分模型特写, 之前还制作过枪的3D模型等等. 感兴趣的朋友可以自己 ...