`

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

 
阅读更多

录音,并且把录影文件放在了外存储设备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();
		}
	}
}

 

分享到:
评论

相关推荐

    C#使用NAudio录音和播放音频文件-实时绘制音频波形图

    包含使用NAudio进行录音和播放录音操作的代码,同时包括在录音时根据音频数据绘制波形图的代码,WPF绘制

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

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

    MP3音频录音机专业版破解版

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

    MP3音频录音机V9.62绿色特别版

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

    MP3音频录音机V9.621 破解版

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

    红苹果MP3音频录音机

    红苹果MP3音频录音机是一款功能强大的录音、播放软件。使用它,您可以录制来自电脑内部或外部声音(麦克风、线路输入、INTERNET的广播或各影音播放软件正在播放的声音),例如:将网络电话的通话内容、网络语音聊天...

    python录音输出wav文件

    要在Python中录制音频并将其输出为.wav文件,您可以按照以下步骤进行操作: 导入所需的库: 使用wave库来创建和写入.wav文件。 使用pyaudio库来录制音频。...停止录音和关闭文件: 关闭音频流。 关闭.wav文件对象。

    qt 基于Fmod实现音频的播放,以及音频波形图的实现

    qt 基于Fmod实现音频的播放,以及音频波形图的实现,可播放多种格式的音频文件,主要用wav文件来实现波形图,包含Fmod库,使用于WIndows下的64位的操作系统

    Audacity中文版(音频编辑和录音器) v2.2.2.rar

    免费好用的录音和音频编辑软件Audacity,更重要的是开源软件,它在国外软件站点长期位居同类第一,并且更新迅速,功能日益改进,可运行在Windows、Mac OS X、GNU/Linux及其它操作系统上。 功能特点 1.多语用户界面...

    超级mp3录音机 最2010加强版

    就像Microsoft Word对文字的掌控能力一样,使用蓝光影音Mp3录音机,你可以对声音进行各种切割,合并,录制,混合等操作,并制作为Mp3输出。蓝光影音Mp3录音机网页设计者,webmaster,博客(播客)用户,音乐爱好者及...

    win32API实现简单的录音播放软件

    个人实现简单的声音信息的收集、播放软件。... 不足及缺陷:未实现声音信息的保存及音频文件的播放。由于运行时录音信息保存于内存,因些也不宜录音时间太长。声音效果未进行处理。 综上:仅对学习或娱乐使用有意义

    【官方发布】小快笔录音整理工具6.2.rar

    运行软件后,点击“打开音频”按钮,导入会议录音音频文件,点击“播放”按钮,就可以边听录音边在文本框中输入录音内容。在录入过程中,可随时通过按F4键来暂停或播放录音,也可通过F5键快退5秒,F6键快进5秒。 ...

    客户来电录音软件

    设置方法二:开始——控制面版——声音和音频设备——音频——默认设备——下拉选择回原来声卡——仅使用默认设备 打勾——确定——退出播放软件——再试听录音——恢复正常.本方法在软件帮助文件最下方有介绍到,...

    Digital_Audio_Editor

    播放全部或部分的音频文件(播放、暂停,停止);从麦克风或其他输入设备录音(DVD/VCD/CD播放器,MP3播放器,Realplay,Windows Media Player等);可视化音频文件编辑(剪切,拷贝、删除段落,删除无声,粘贴,从...

    android中文件的保存与读取

    该压缩包中含有两个android工程:file和other。file中主要讲述了对文件的保存与读取的功能,other主要用来测试文件保存的四种操作模式。

    神狐录音机v1.0.exe

    软件能够实时录制电脑音频信号,如录制电脑播放器的声音和麦克风输入源声音等,可兼容MP3和WAV两种文件格式。内置强大的文件压缩引擎,使其录制好体积更小,且不会因为压缩而导致的声音信息的丢失的问题。另外你还...

    java绘制音频波形图

    // 打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作。 line.start();// 允许数据行执行数据 I/O int BUFFER_SIZE = 256; audioData = new byte[BUFFER_SIZE]; while (intBytes !=...

    梦幻录音机V2.0

    一款非常好用的录音软件,能够实现不限时录音,支持话筒、线路及任何播放器声音抓取并录音,频谱、波波形显示等功能,操作简单清晰显示各种音频信息,是一个非常有效的多功能录音工具。 特点: 1.录音机可以无限制...

    博士智能语音广播系统 v6.6.zip

    5、具备文稿转音频文件功能、录音功能、背景音乐播放等功能,是广告宣传和音频制作的好助手。 6、定时广播时,可以选择各国的播音角色来播放各国的语言,专业而又准确。 7、强大的音频处理功能,包括常用的音频...

Global site tag (gtag.js) - Google Analytics