zoukankan      html  css  js  c++  java
  • MediaPlayer介绍

    MediaPlayer介绍

    Android下对于音频、视频的支持均需要使用到MediaPlayer。

    1. MediaPlayer主要用来控制Android下播放文件或流的类。
    2. MediaPlayer处于Android多媒体下"android.media.MediaPlayer"

    MediaPlayer构造方法

    MediaPlayer仅有一个无参的构造函数。

    MediaPlayer初始化

    无参初始化

    1. MediaPlayer mp = new MediaPlayer();
    2. 设置DataSource

    具体setDataSource一共四个方法:

    • setDataSource (String path)
    • setDataSource (FileDescriptor fd)
    • setDataSource (Context context, Uri uri)
    • setDataSource (FileDescriptor fd, long offset, long length)

    其中需要注意的是使用FileDescriptor时,需要将文件放到与res文件夹平级的assets文件夹里,然后使用:

    AssetFileDescriptor fileDescriptor = getAssets().openFd("rain.mp3");
    m_mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(), fileDescriptor.getLength());
    

    create方法

    使用create得到的MediaPlayer实例不需要调用setDataSource了

    1. static MediaPlayer create(Context context,int resid):通过音频资源的Id来创建一个MediaPlayer实例。
    2. static MediaPlayer create(Context context,Uri uri):通过一个音频资源的Uri地址来创建一个MediaPlayer实例。

    小结

    根据MediaPlayer要播放的文件来源可分为以下三种:

    • 用户在应用中事先自带的resource资源
      例如:MediaPlayer.create(this, R.raw.test);
    • 存储在SD卡或其他文件路径下的媒体文件
      例如:mp.setDataSource("/sdcard/test.mp3");
    • 网络上的媒体文件
      例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3");

    此外要注意读写文件的权限,需要在AndroidManifest.xml注册权限

    MediaPlayer播放音乐

    1. void statr():开始或恢复播放。
    2. void stop():停止播放。
    • void pause():暂停播放。
    • int getDuration():获取流媒体的总播放时长,单位是毫秒。
    • int getCurrentPosition():获取当前流媒体的播放的位置,单位是毫秒。
    • void seekTo(int msec):设置当前MediaPlayer的播放位置,单位是毫秒。
    • void setLooping(boolean looping):设置是否循环播放。
    • boolean isLooping():判断是否循环播放。
    • boolean isPlaying():判断是否正在播放。
    • void prepare():同步的方式装载流媒体文件。
    • void prepareAsync():异步的方式装载流媒体文件。
    • void release ():回收流媒体资源。
    • void setAudioStreamType(int streamtype):设置播放流媒体类型。
    • void setWakeMode(Context context, int mode):设置CPU唤醒的状态。
    • setNextMediaPlayer(MediaPlayer next):设置当前流媒体播放完毕,下一个播放的MediaPlayer。
    • setOnCompletionListener(MediaPlayer.OnCompletionListener listener):当流媒体播放完毕的时候回调。
    • setOnErrorListener(MediaPlayer.OnErrorListener listener):当播放中发生错误的时候回调。
    • setOnPreparedListener(MediaPlayer.OnPreparedListener listener):当装载流媒体完毕的时候回调。
    • setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener):当使用seekTo()设置播放位置的时候回调。

    要点:

    1. 使用prepare()或prepareAsync()方法把流媒体装载进MediaPlayer,才可以调用start()方法播放流媒体。 
    2. setAudioStreamType()方法用于指定播放流媒体的类型,它传递的是一个int类型的数据,均以常量定义在AudioManager类中, 一般我们播放音频文件,设置为AudioManager.STREAM_MUSIC即可。  

    Media使用技巧

    1. 异步加载
    2. 资源回收
    3. 单曲循环
    4. 异常处理
  • 相关阅读:
    QT全局热键(用nativeKeycode封装API,不跨平台)
    Android 短信模块分析(二) MMS中四大组件核心功能详解
    一个高效过滤非UTF8字符的C函数(也可用来判断是否utf8)
    Windows-1252对Latin1编码有改变(并不完全兼容),而且Latin1缺失了好多西欧字符(法语,德语,西班牙语都有)
    C++静态库与动态库
    CFBundleName系列参数的含义
    QT完美转换特殊字符的大小写
    Java-继承的应用
    RTTI、虚函数和虚基类的实现方式、开销分析及使用指导(虚函数的开销很小,就2次操作而已)
    delphi如何获得当前操作系统语言环境
  • 原文地址:https://www.cnblogs.com/Shambryce/p/10889915.html
Copyright © 2011-2022 走看看