Android源码修改后的语音录音代码

如下代码为Android源码的录音代码修改,只要稍微修改即可以运到自己的应用中。
package com.android.phone;

import android.app.Activity;
import android.os.Bundle;
import java.io.File;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.provider.MediaStore;
import android.provider.MediaStore.MediaColumns;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * This is main class which shows how to capture/record audio
 * 
 * @author The Developer's Info
 * 
 */
public class CallRecorder {

	private MediaRecorder mediaRecorder;
	private File file = null;
	static String PREFIX = "CR-"; // CallReading by kylin
	static final String EXTENSION = ".amr";// .3gpp by kylin
	public static boolean recorderOn = false;

	// Add by kylin 2011.10.21 begin
	private String mDisplayName;
	private String mDisplayNumber;

	Context mContext;

	/**
	 * This method starts recording process
	 * 
	 * @param displayNumber
	 * @throws Exception
	 */

	// Add by kylin 2011.10.21 begin
	public CallRecorder(Context context, String displayName,
			String displayNumber) {
		mContext = context;
		mDisplayName = displayName;
		mDisplayNumber = displayNumber;

		if (null != mDisplayName && !mDisplayName.trim().equals("")) {
			PREFIX = PREFIX + mDisplayName + "-";
		} else {
			PREFIX = PREFIX + mDisplayNumber + "-";
		}

	}

	// end

	public void startRecording() throws Exception {
		mediaRecorder = new MediaRecorder();
		mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
		mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
		mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

		// Mod by kylin 2011.10.03 begin
		String dir = Environment.getExternalStorageDirectory() + "/Recording";
		if (file == null) {
			// File rootDir = Environment.getExternalStorageDirectory();
			File newRootDir = new File(dir);
			if (!newRootDir.exists()) {
				newRootDir.mkdir();
			}
			file = File.createTempFile(PREFIX, EXTENSION, newRootDir);
		}
		mediaRecorder.setOutputFile(file.getAbsolutePath());
		// mediaRecorder.setOutputFile(dir);
		// end
		mediaRecorder.prepare();
		mediaRecorder.start();
	}

	/**
	 * This method stops recording
	 */
	public void stopRecording() {
		mediaRecorder.stop();
		mediaRecorder.release();
		mediaRecorder = null;
		PREFIX = "CR-"; // Add by kylin 2011.10.21
	}

	/**
	 * This method sets all metadata for audio file
	 */
	public void saveToDB() {
		ContentValues values = new ContentValues(3);
		long current = System.currentTimeMillis();
		long modDate = file.lastModified();
		Date date = new Date(current);
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String title = formatter.format(date);
		values.put(MediaStore.Audio.Media.IS_MUSIC, "0");
		values.put(MediaStore.Audio.Media.TITLE, title);
		values.put(MediaStore.Audio.Media.DATA, file.getAbsolutePath());
		values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));
		values.put(MediaStore.Audio.Media.DATE_MODIFIED, (int) (modDate / 1000));
		values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/mp3");
		values.put(MediaStore.Audio.Media.ARTIST, "CallRecord");
		values.put(MediaStore.Audio.Media.ALBUM, "CallRecorder");
		ContentResolver contentResolver = mContext.getContentResolver();
		Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
		Uri newUri = contentResolver.insert(base, values);
		mContext.sendBroadcast(new Intent(
				Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));
	}

	
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值