• Android 录音


    MediaRecorder类具体解释


    移动电话通常具有一个麦克风和照相机,和Android该系统将能够利用这些硬件的优点来记录的音频和视频。
    添加支持的音频和视频录制,Android该系统提供了MediaRecorder的类。该类的使用也很easy。以下让我们来了解一下这个类

    一、结构

    java.lang.Object->android.media.MediaRecorder


    二、类概述:

    用于录制音频和视频的一个类。

    三、状态图:





    说明:


    与MediaPlayer类很相似MediaRecorder也有它自己的状态图。

    以下是关于MediaRecorder的各个状态的介绍:


    1、Initial:初始状态,当使用new()方法创建一个MediaRecorder对象或者调用了reset()方法时,该MediaRecorder对象处于Initial状态。

    在设定视频源或者音频源之后将转换为Initialized状态。另外,在除Released状态外的其他状态通过调用reset()方法都能够使MediaRecorder进入该状态。




    2、Initialized:已初始化状态,能够通过在Initial状态调用setAudioSource()或setVideoSource()方法进入该状态。在这个状态能够通过setOutputFormat()方法设置输出格式。此时MediaRecorder转换为DataSourceConfigured状态。另外,通过reset()方法进入Initial状态。




    3、DataSourceConfigured:数据源配置状态,这期间能够设定编码方式、输出文件、屏幕旋转、预览显示等等。

    能够在Initialized状态通过setOutputFormat()方法进入该状态。

    另外,能够通过reset()方法回到Initial状态。或者通过prepare()方法到达Prepared状态。




    4、Prepared:就绪状态,在DataSourceConfigured状态通过prepare()方法进入该状态。

    在这个状态能够通过start()进入录制状态。另外,能够通过reset()方法回到Initialized状态。


    5、Recording:录制状态,能够在Prepared状态通过调用start()方法进入该状态。另外,它能够通过stop()方法或reset()方法回到Initial状态。




    6、Released:释放状态(官方文档给出的词叫做Idle state 空暇状态),能够通过在Initial状态调用release()方法来进入这个状态,这时将会释放全部和MediaRecorder对象绑定的资源。


    7、Error:错误状态。当发生错误的时候进入这个状态,它能够通过reset()方法进入Initial状态。


    提示:与MediaPlayer相似使用MediaRecorder录音录像时须要严格遵守状态图说明中的函数调用先后顺序,在不同的状态调用不同的函数,否则会出现异常。


    以下一个实例代码描写叙述了的创建过程:


    /**
    	 * 開始录音
    	 */
    	private void startRecording() 
    	{
    		BaseUtils.printd(TAG, "startRecording");
    		mParams.mFileName = mParams.mFileDir + System.currentTimeMillis() + "amr";
    		mRecorder = new MediaRecorder();
    		mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    		mRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
    		mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    		mRecorder.setOutputFile(mParams.mFileName);
    		mRecorder.setOnInfoListener(mRecorderOnInfoListener);
    		
    		if(mParams.mMaxFileSize > 0)
    		{
    			mRecorder.setMaxFileSize(mParams.mMaxFileSize);
    		}
    		
    		if(mParams.mMaxDurationSize > 0)
    		{
    			mRecorder.setMaxDuration(mParams.mMaxDurationSize);
    		}
    		
    		try 
    		{
    			mRecorder.prepare();
    			
    			mRecorder.start();
    			mObtainDecibelThread = new ObtainDecibelThread();
    			mObtainDecibelThread.start();
    		} 
    		catch (Exception e) 
    		{
    			BaseUtils.printe("Exception", "Exception:" + e);
    		}
    
    		
    
    	}



    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    bash特性
    FHS 层级文件系统
    环境变量的问题
    linux认识
    搜索引擎的使用
    nginx
    部署操作手册
    git
    添加tag
    pycharm中使用git
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4649242.html
Copyright © 2020-2023  润新知