zoukankan      html  css  js  c++  java
  • Android 记录的(MediaRecorder)而播放(MediaPlayer)

    经MediaRecorder和MediaPlayer实现声音记录和回放,代码比较简单,直接附着到代码。

    xml文档面对只有四个button不贴。

    UI


    代码:

    VoiceActivity.class

    package com.zy.ione;
    
    import com.zy.media.UPlayer;
    import com.zy.media.URecorder;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Toast;
    
    public class VoiceActivity extends Activity {
    
    	private String path = null;
    	private URecorder recorder;
    	private UPlayer player;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		this.setContentView(R.layout.activity_voice);
    		
    		
    		path = Environment.getExternalStorageDirectory().getAbsolutePath();  
    		path += "/ione.pcm";  
    		
    		recorder = new URecorder(path);
    		player = new UPlayer(path);
    		
    		//開始录音
    		findViewById(R.id.ione_record_start_btn).setOnClickListener(new OnClickListener() {
    			
    			@Override
    			public void onClick(View arg0) {	
    				
    				Toast.makeText(VoiceActivity.this, "start record", Toast.LENGTH_SHORT).show();
    				
    				recorder.start();
    			}
    		});
    		
    		//停止录音
            findViewById(R.id.ione_record_stop_btn).setOnClickListener(new OnClickListener() {
    			
    			@Override
    			public void onClick(View arg0) {
    				Toast.makeText(VoiceActivity.this, "stop record", Toast.LENGTH_SHORT).show();
    				recorder.stop();
    			}
    		});
            
           //開始播放
          	findViewById(R.id.ione_play_start_btn).setOnClickListener(new OnClickListener() {
          			
          		@Override
          		public void onClick(View arg0) {	
          				
          			Toast.makeText(VoiceActivity.this, "start play", Toast.LENGTH_SHORT).show();
          			player.start();
          		}
          	});
          		
          	//停止播放
             findViewById(R.id.ione_play_stop_btn).setOnClickListener(new OnClickListener() {
          			
          		@Override
          		public void onClick(View arg0) {
          			Toast.makeText(VoiceActivity.this, "stop play", Toast.LENGTH_SHORT).show();
          			player.stop();
          		}
          	});
    	}
    
    }
    
    操作接口
    package com.zy.media;
    
    public interface IVoiceManager {
    	
    	public boolean start();
    	public boolean stop();
    }

    录音

    package com.zy.media;
    
    import java.io.IOException;
    
    import android.media.MediaRecorder;
    import android.util.Log;
    
    public class URecorder implements IVoiceManager{
    	
    	private final String TAG = URecorder.class.getName();
    	private String path;
    	private MediaRecorder mRecorder;  
    	public URecorder(String path){
    		this.path = path;
    		mRecorder = new MediaRecorder();
    	}
    	
    	/*
    	 * 開始录音
    	 * @return boolean
    	 */
    	@Override
    	public boolean start() {	
    		//设置音源为Micphone  
            mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
            //设置封装格式  
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
            mRecorder.setOutputFile(path);  
            //设置编码格式  
            mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  
      
            try {  
                mRecorder.prepare();  
            } catch (IOException e) {  
                Log.e(TAG, "prepare() failed");  
            }  
            //录音
            mRecorder.start();  
    		return false;
    	}
    
    	/*
    	 * 停止录音
    	 * @return boolean
    	 */
    	@Override
    	public boolean stop() {
    		mRecorder.stop();  
            mRecorder.release();  
            mRecorder = null; 
    		return false;
    	}
    	
    }

    播放

    package com.zy.media;
    
    
    import android.media.MediaPlayer;
    import android.util.Log;
    
    public class UPlayer implements IVoiceManager {
    	
        private final String TAG = UPlayer.class.getName();
    	private String path;
    	
    	private MediaPlayer mPlayer;
    	public UPlayer(String path){
    		this.path = path;
    		mPlayer = new MediaPlayer();
    	}
    	
    	@Override
    	public boolean start() {
            try {  
    			 //设置要播放的文件
    			 mPlayer.setDataSource(path);
    			 mPlayer.prepare();
    			 //播放
    			 mPlayer.start();		
    		 }catch(Exception e){
    			 Log.e(TAG, "prepare() failed");  
    		 }
    
    		return false;
    	}
    
    	@Override
    	public boolean stop() {
    		mPlayer.stop();
    		mPlayer.release();
    		mPlayer = null;
    		return false;
    	}
    
    }
    


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

  • 相关阅读:
    解决Oracle XE报错ORA-12516(oracle回话数超出限制)
    端口被占用如何处理
    ORACLE initialization or shutdown in progress 错误解决办法
    oracle的闪回功能
    Linux入门
    oracle字段like多个条件
    navicat常用快捷键与SQL基本使用
    Oracle四舍五入,向上取整,向下取整
    无限循环小数化分数
    筛选素数
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4758512.html
Copyright © 2011-2022 走看看