`

对音频文件的操作 录音和播放

 
阅读更多

录音,并且把录影文件放在了外存储设备sdcard中:

package com.quidng.practice;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;

public class RecordSound extends Activity implements OnClickListener{

	private Button btnRecord,btnStop;
	private MediaRecorder recorder;
	private File soundFile;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.record_sound);
		
		btnRecord = (Button) findViewById(R.id.record_sound_record);
		btnRecord.setOnClickListener(this);
		btnStop = (Button) findViewById(R.id.record_sound_stop);
		btnStop.setOnClickListener(this);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		if(soundFile != null && soundFile.exists() && recorder != null){
			recorder.stop(); 	//**停止录音**
			recorder.release(); //**释放资源**
			recorder = null;	
		}
	}

	@Override
	public void onClick(View v) {
		if(v.getId() == R.id.record_sound_record){
		    try {
		    	//直接存储到了sdcard中
		    	soundFile = new File(Environment.getExternalStorageDirectory().getCanonicalFile() + "/sound1.amr");
				recorder = new MediaRecorder();
			    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);  //录制的声音的来源
//			    recorder.setVideoSource(video_source);   //录制视频
			    
			    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);   //录制的声音的输出格式(必须在设置声音的编码格式之前设置)
			    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  //设置声音的编码格式
			    recorder.setOutputFile(soundFile.getAbsolutePath());    //设置声音的保存位置
				recorder.prepare();	 //**准备录音**
			    recorder.start();    //**开始录音**
			} catch (IllegalStateException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} 
		}else if(v.getId() == R.id.record_sound_stop){
			if(soundFile != null && soundFile.exists()){
				recorder.stop(); 	//**停止录音**
				recorder.release(); //**释放资源**
				recorder = null;	
			}
		}
	}
}

 播放音乐:

package com.quding.widget.musicplayer;

import java.io.IOException;
import android.app.Service;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;

public class MusicPlayerService extends Service{

	private MediaPlayer player;
	private AssetFileDescriptor asserAssetFileDescriptor;
	
	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}
	
	@Override
	public void onCreate() {
		super.onCreate();
		AssetManager assetManager = this.getAssets();   //获得一个assert资源管理器的实例
		try {
		    asserAssetFileDescriptor = assetManager.openFd("run_with_myself.mp3");   //获取一个raw资源
		} catch (IOException e) {
			e.printStackTrace();
		}
		player = new MediaPlayer();   //播放assert中的文件

//		player = MediaPlayer.create(getApplicationContext(), R.raw.run_with_myself);     //这个是播放raw中的音频文加

 //		player = new MediaPlayer();     //播放sdcard中的文件
//		try {
//			player.setDataSource("/sdcard/sound1.arm");   //指明路径
//			player.prepare();   //装载音频文件
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
		Log.i("tag", "service已经存在");
	}
	
	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		if(intent != null){
			Log.i("tag", intent.getData().toString());
				int operator = Integer.parseInt(intent.getData().toString()); //operate带着具体的操作信息
				switch (operator) {
				case 1 :    //打开
					playMusic();
					break;
				case 2 :	//暂停
					pauseMusic();
					break;
				case 3 :	//停止
					stopMusic();
					break;
			}
		}
	}
	
	private void playMusic() {
		if(player != null && !player.isPlaying()){
			try {
				//设置资源
				player.setDataSource(asserAssetFileDescriptor.getFileDescriptor(),
						asserAssetFileDescriptor.getStartOffset(),
						asserAssetFileDescriptor.getLength());
				player.prepare(); //加载资源
				player.start();
				Log.i("tag", "播放音乐");
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
	}
	
	private void pauseMusic(){
		if(player != null && player.isPlaying()){
			player.pause();
			Log.i("tag", "暂停");
		}
	}
	
	private void stopMusic(){
			player.stop();
			Log.i("tag", "停止");
		try {
			player.reset();   //使mediaPlayer会回到初始化之前的地方,需要重新加载文加,
			player.setDataSource(asserAssetFileDescriptor.getFileDescriptor(),
					asserAssetFileDescriptor.getStartOffset(),
					asserAssetFileDescriptor.getLength());
			player.prepare(); //加载资源
			Log.i("tag", "重新加载文件");
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

    wpf 录音和播放音频

    在WPF用户界面中,我们可以添加按钮控件来触发录音和播放操作,并通过绑定事件处理程序来实现交互。例如,为录音按钮添加一个点击事件,启动录音功能;为播放按钮添加点击事件,播放指定的音频文件。 4. **分析...

    C# NAudio录音和播放音频文件-实时绘制音频波形图(从音频流数据获取,而非设备获取)

    6. **结束操作**:当需要停止录音和播放时,调用相应的Stop方法,并确保释放所有资源。 在具体实现过程中,你可能会遇到一些挑战,比如性能优化、内存管理以及音频数据的正确处理。例如,对于较大的音频文件,可能...

    Android音频操作:录音和播放

    这个`Android音频操作:录音和播放`的示例项目旨在教你如何使用`MediaPlayer`和`MediaRecorder`这两个核心工具类来实现音频的录制与回放。接下来,我们将深入探讨这两个类以及它们在实际应用中的使用方法。 首先,`...

    详解Android开发录音和播放音频的步骤(动态获取权限)

    Android 开发录音和播放音频是Android开发中的一个重要环节,涉及到音频处理、权限管理和文件操作等多个方面。以下是详解Android开发录音和播放音频的步骤: 步骤一:配置权限 在 Android 中,需要在 ...

    vc-抓取声卡-录音和播放_录音播放_播放_录音_声卡抓取-录音_声卡_

    在VC++环境中,开发音频处理应用,如录音和播放功能,是常见的需求。这个压缩包提供的资源主要涉及了声卡数据的抓取、录音以及播放的相关技术。下面将详细讲解这些知识点。 首先,声卡抓取(Sound Card Capturing)...

    录音与播放源代码,实现音频文件的播放

    首先,项目的标题"录音与播放源代码,实现音频文件的播放"表明,其主要目标是提供一套能够处理音频文件播放的代码。在计算机科学中,音频播放通常涉及解码音频文件格式(如.wav),并将解码后的数据发送到声卡进行...

    QT音频录音和播放

    在QT中处理音频功能,我们可以利用QtMultimedia模块,该模块提供了丰富的音频和视频功能,包括录音和播放。 1. **QT多媒体模块介绍** QtMultimedia模块是Qt库的一部分,它为处理音频和视频提供了API。这个模块允许...

    wav音频文件 测试文件

    1. **音频播放**:确保音频文件在各种播放器和设备上都能正常播放,没有无声、失真或中断的情况。 2. **格式兼容**:检查不同操作系统、设备及应用对`.wav`格式的支持程度。 3. **编码解码**:测试编码和解码过程...

    android录音和播放

    本文将详细讲解如何实现Android中的录音和播放网络音频文件,以及涉及的相关技术。 首先,我们来看录音部分。在Android中,我们可以使用`MediaRecorder`类来实现录音功能。`MediaRecorder`提供了录音、视频录制等...

    VC下WAV音频录音播放程序

    6. **线程同步**:录音和播放可能会涉及到多线程操作,因此需要正确处理线程同步,例如使用事件对象或互斥量来协调读写操作。 7. **错误处理**:在开发过程中,需要对可能出现的错误进行捕获和处理,如设备打开失败...

    windows C 调用音频 输入设备 输出设备 实现 录音 播放

    在Windows操作系统中,使用C语言调用音频输入和输出设备进行录音和播放是常见的音频处理任务。本篇将深入探讨如何利用Windows API(应用程序接口)中的Waveform Audio(简称Wave或WAV)库来实现这一功能。 首先,...

    Android 录音及音频播放

    在Android平台上,录音和音频播放是移动应用开发中常见的功能,尤其在音乐、教育和通讯类应用中不可或缺。本文将详细解析如何实现Android录音及音频播放,并重点介绍使用彩虹进度条来实时显示播放进度。 首先,我们...

    WAV音频录音播放程序

    WAV(Waveform Audio Format)是由微软和IBM共同开发的一种无损音频文件格式,它保存原始音频数据,没有经过任何压缩,因此提供了极高的音质。这种格式的文件通常较大,但能确保音频的质量不受损失,是制作和编辑...

    MP3音频录音机 v12.10标准版.zip

    7、音频文件信息写入功能,您可将设定标题、艺术者、专集、作曲家、年代等信息并将以上信息写入到您录音后保存的音频文件内。 8、热键功能,您可使用热键F5(录音)、F6(播放)、F7(暂停/继续)、F8(停止)来...

    使用wav文件对象的录音和播放api文件

    本篇将重点介绍如何使用WAV文件对象进行录音和播放操作,以及与之相关的API函数。 WAV是一种常见的无损音频格式,全称为Waveform Audio File Format,它存储的是原始的PCM(脉冲编码调制)音频数据。在Windows编程...

    使用电脑自带声卡在labview中实现录音播放

    - **读取音频文件**:LabVIEW可以从WAV或其他格式的音频文件中读取数据,准备进行播放。 - **配置音频输出**:设置好播放设备(默认为声卡),并设定相应的播放参数。 - **数字信号到模拟信号转换**:使用D/A转换...

    录音文件转换工具ACT录音文件转换工具

    在实际使用中,用户可能需要了解一些基本的音频文件格式知识,例如不同格式的特点:MP3以其高效的压缩比和良好的音质被广泛使用,适合存储和分享;WAV是无损音频格式,保留原始音频的所有细节,但文件较大;AAC则在...

    封装的录音工具带有音频柱状图

    在音频处理中,"Media"通常指代音频文件、视频文件等多媒体内容。在这个上下文中,它可能包含了用于录音、播放和显示音频图的示例代码、配置文件或者库文件。 总之,这是一个集成了录音、播放和可视化功能的软件...

    手机录音,m4a音频损坏修复,亲测有用

    然而,有时候由于各种原因,如存储卡故障、文件传输错误或软件问题,可能会导致m4a音频文件损坏,无法正常播放。本文将深入探讨m4a音频文件损坏的原因及如何进行修复,以确保我们能够恢复那些宝贵的录音。 首先,...

    android 模仿微信按住录音语音播放

    对这个文件进行阅读和学习,可以帮助你更深入地理解如何在Android中实现类似微信的录音和播放功能。 总结一下,实现“android 模仿微信按住录音语音播放”主要涉及以下几个步骤和技术: 1. 使用`MediaRecorder`...

Global site tag (gtag.js) - Google Analytics