Android源码修改后的语音录音代码
16lz
2021-01-24
如下代码为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 kylinstatic final String EXTENSION = ".amr";// .3gpp by kylinpublic static boolean recorderOn = false;// Add by kylin 2011.10.21 beginprivate String mDisplayName;private String mDisplayNumber;Context mContext;/** * This method starts recording process * * @param displayNumber * @throws Exception */// Add by kylin 2011.10.21 beginpublic 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 + "-";}}// endpublic 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 beginString 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);// endmediaRecorder.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));}}
更多相关文章
- Android开发便签3:TextView的自动检测文本中的超链接和自动补全
- webkit中的javascript和android交互
- SQLiteException: no such column:好
- android中引入okhttp
- android Activity.java 源码
- WKWebView的JS与Native的交互,适配iOS和andriod的HTML代码
- Android基于自带的DownloadManager实现下载功能示例