- 浏览: 321000 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (228)
- ArcGis (4)
- UI设计 (32)
- SQLite (7)
- ListView (12)
- Handler_Thread (6)
- XML (5)
- Menu (7)
- TabHost (6)
- Inflater (2)
- Activity (5)
- SDCard (3)
- Dialog (7)
- Spinner (3)
- 设备信息 (2)
- 资源文件 (7)
- 多媒体 (7)
- 图片浏览 (5)
- 工具的使用 (3)
- Animation动画 (7)
- GIS (14)
- 软件发布 (4)
- GPS (2)
- 手机Feature开发 (6)
- 加密解密 (1)
- Time (2)
- JWeb (5)
- SQL (2)
- PhoneGap (3)
- JavaScript (3)
- Object-C入门 (7)
- Oracle (1)
- AutoCompleteTextView (1)
- APN (1)
- IOS开发 (12)
- 数据库工具 (3)
- UITableView (0)
- Arcgis for iOS (1)
最新评论
-
waterM:
...
DBVis 连接数据库配置 -
航空母舰:
上源码吧,差资源,都跑不起来!
ListView_split 分割 -
wade200:
学习了
启动另一个Activity并返回结果(附源码) -
AndLi:
里面的坐标被我写死了啊,你注释掉就可以了
GPS定位 -
kunlinchen2010:
求指教,QQ:446482624
GPS定位
public class AudioListView extends ListActivity implements OnClickListener { private Button play_btn;// 播放 private Button record_btn;// 录音 private Button pause_btn;// 暂停 private Button del_btn;// 删除 private TextView list_id_txt; private File fileName;/* 录制的音频文件 */ private File filePath; String SDPATH = null; private static final String AUDIO_DIR = Environment .getExternalStorageDirectory().getAbsolutePath() + File.separator + "mobileoa" + File.separator + "audio";// 录音目录 private MediaRecorder mMediaRecorder;/* MediaRecorder对象 */ private List<String> mMusicList = new ArrayList<String>();/* 录音文件列表 */ private String tempName = "";/* 零时文件的前缀 */ private int filePosition = 0;// 文件ID /* 顶部菜单 */ Button tBack_btn;// 返回按钮 Button tMenu_btn;// 菜单按钮 TextView title_txt;// 标题 RelativeLayout audioLayout; RelativeLayout mainFrame; GlobalVariable gv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gv = (GlobalVariable) getApplication(); gv.getActivityList().add(this); this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉信息栏注意,这个设置必须放在设置布局前面,不然会报错 /* 渲染主窗体 */ LayoutInflater inflater = LayoutInflater.from(AudioListView.this); mainFrame = (RelativeLayout) inflater.inflate( R.layout.audiolistview, null); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); addContentView(mainFrame, params); mainFrame.setBackgroundResource(gv.getBackground()); /* 主窗体中添加公共的顶部菜单 */ RelativeLayout topmenu = (RelativeLayout) inflater.inflate( R.layout.topmenu, null); mainFrame.addView(topmenu, params); this.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title); /*----------------顶部菜单的处理----------------------------- */ // 获得标题对象 title_txt = (TextView) findViewById(R.id.title_text); // 设置标题的内容 title_txt.setText("录音"); tBack_btn = (Button) findViewById(R.id.topback_btn);// 获得返回按钮对象 tBack_btn.setOnClickListener(new OnClickListener() {// 注册返回按钮事件 @Override public void onClick(View v) { AudioListView.this.finish(); } }); tMenu_btn = (Button) findViewById(R.id.topemenu_btn);// 获得菜单按钮对象 tMenu_btn.setVisibility(View.INVISIBLE); checkState(); musicList();/* 更新所有录音文件到List中,这边的方法只被执行一次 */ findView(); setListener(); } // 检查是否有内存卡 private void checkState() { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { File file = new File(AUDIO_DIR); if (!file.isDirectory()) { file.mkdirs(); } filePath = file; } else { Toast.makeText(AudioListView.this, "SD卡不存在!无法保存相片", 3000).show(); } } @Override protected void onPause() { super.onPause(); clearList(); musicList();/* 更新所有录音文件到List中 */ } @Override protected void onPostResume() { super.onPostResume(); clearList(); musicList();/* 更新所有录音文件到List中 */ } /** * 控件实例化 */ private void findView() { play_btn = find(play_btn, R.id.play_btn); record_btn = find(record_btn, R.id.record_btn); pause_btn = find(pause_btn, R.id.pause_btn); del_btn = find(del_btn, R.id.del_btn); list_id_txt = (TextView) findViewById(R.id.list_id_txt); } /** * Button实例化方法 */ public Button find(Button button, int id) { button = (Button) findViewById(id); return button; } /** * 注册监听事件 */ private void setListener() { play_btn.setOnClickListener(this); record_btn.setOnClickListener(this); pause_btn.setOnClickListener(this); del_btn.setOnClickListener(this); // back_btn.setOnClickListener(new BackOnClickListener()); } /** * 返回按钮的监听事件 */ class BackOnClickListener implements OnClickListener { @Override public void onClick(View v) { Service.TurnMainView(AudioListView.this, MainView.class, MainView2.class, getString(R.string.dbname)); AudioListView.this.finish(); } } /** * 播放录音 */ private void playMusic(File file) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "audio");/* 设置文件类型 */ startActivity(intent); } /** * 根据位置获取文件 * * @param position */ public File getFile(int position) { File playfile = new File(filePath.getAbsolutePath() + File.separator + mMusicList.get(position)); return playfile; } /** * 列表项监听事件 */ protected void onListItemClick(ListView l, View v, int position, long id) { File playfile = new File(filePath.getAbsolutePath() + File.separator + mMusicList.get(position)); list_id_txt.setText(playfile.getName());// 设置示当前文件名 filePosition = position; } /** * 添加播放列表 */ public void musicList() { // 取得指定位置的文件设置显示到播放列表 File home = filePath; if (home.listFiles(new MusicFilter()).length > 0) { for (File file : home.listFiles(new MusicFilter())) { mMusicList.add(file.getName()); } ArrayAdapter<String> musicList = new ArrayAdapter<String>( AudioListView.this, R.layout.listaudio, mMusicList); setListAdapter(musicList); } } // 先清空ListView原来的数据 public void clearList() { mMusicList.clear(); ArrayAdapter<String> musicList = new ArrayAdapter<String>( AudioListView.this, R.layout.listaudio, mMusicList); setListAdapter(musicList); } /* 过滤文件类型 */ class MusicFilter implements FilenameFilter { public boolean accept(File dir, String name) { return (name.endsWith(".amr")); } } @Override public void onClick(View v) { int id = v.getId(); String s = list_id_txt.getText().toString(); switch (id) { case R.id.record_btn:// 录音 pause_btn.setEnabled(true); record_btn.setEnabled(false); Toast.makeText(AudioListView.this, "开始录音...", 1000).show(); record_btn.setText("录音中..."); try { tempName = new Universal().getTimeStr() + "_";// 获取时间 fileName = File.createTempFile(tempName, ".amr", filePath);/* 创建录音文件 */ mMediaRecorder = new MediaRecorder();/* 实例化MediaRecorder对象 */ mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);/* 设置麦克风 */ mMediaRecorder .setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);/* 设置输出文件的格式 */ mMediaRecorder .setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);/* 设置音频文件的编码 */ mMediaRecorder.setOutputFile(fileName.getAbsolutePath());/* 设置输出文件的路径 */ mMediaRecorder.prepare();/* 准备 */ mMediaRecorder.start();/* 开始 */ } catch (IOException e) { e.printStackTrace(); } break; case R.id.play_btn:// 播放 if (s.equals("")) { Toast.makeText(AudioListView.this, "请选择一条要播放的录音!", 1000).show(); } else { playMusic(getFile(filePosition)); } break; case R.id.pause_btn:// 停止 record_btn.setText("录音"); if (fileName != null) { mMediaRecorder.stop();/* 停止录音 */ mMusicList.add(fileName.getName());/* 将录音文件添加到List中 */ ArrayAdapter<String> musicList = new ArrayAdapter<String>( AudioListView.this, R.layout.listaudio, mMusicList); setListAdapter(musicList); mMediaRecorder.release();/* 释放MediaRecorder */ mMediaRecorder = null; } pause_btn.setEnabled(false); record_btn.setEnabled(true); new AlertDialog.Builder(AudioListView.this) .setTitle("提示") .setMessage("录音完成,是否添加到邮件附件?") .setPositiveButton("添加", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { FileChooser.fileName = fileName.getName(); FileChooser.filePath = fileName.getAbsolutePath(); finish(); } }) .setNegativeButton("取消", null).create().show(); break; case R.id.del_btn:// 删除 if (s.equals("")) { Toast.makeText(AudioListView.this, "请选择一条要删除的记录!", 1000).show(); } else { new AlertDialog.Builder(AudioListView.this).setMessage( "确定要删除吗?").setPositiveButton("是", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { File file = new File(filePath.getAbsolutePath() + File.separator + mMusicList.get(filePosition)); file.delete(); clearList();// 先清空原数据 musicList();// 重新读取数据 list_id_txt.setText(""); } }).setNegativeButton("否", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // finish(); } }).show(); } break; default: break; } } }
发表评论
-
拍照:图片质量设置
2012-03-23 11:31 936bitmap.compress(CompressFormat. ... -
拍照Test
2012-02-12 22:50 845package com; import java.io. ... -
audiorecorder录制音频,格式为wav
2012-02-12 22:34 3728一.变量声明 private AudioRecord au ... -
调用本机的播放器
2012-02-12 21:17 911// 调用系统播放器,播放录音 private void pl ... -
相机Camera
2012-01-03 16:24 957public class Main extends Activ ... -
简单拍照的实现
2011-10-02 10:26 1375public class Main extends Activ ...
相关推荐
1初始化MediaRecorder对象并设置必要的参数,比如音频源、视频源、输出文件格式等。 2.配置音频和视频的编码器,例如使用AMR NB或AMR WB作为音频编码器,使用MPEG4或H.264作为视频编码器。 3.设置录制视频的尺寸和...
`MediaRecorder` 是Android SDK中的一个核心组件,它允许开发者录制音频、视频或者捕获图像,然后保存到本地文件。在进行语音录制时,`MediaRecorder` 提供了设置音频源、编码格式、输出文件路径等关键参数的功能。 ...
在Android开发中,`MediaRecorder` 是一个非常重要的类,用于录制音频、视频或混合媒体。这个`Android MediaRecorder Demo1` 是一个基础的录音应用示例,旨在帮助初学者了解如何使用`MediaRecorder` API。如果你是...
MediaRecorder类是Android SDK提供的一种强大工具,用于处理多媒体数据的录制,包括音频和视频。本文将深入探讨如何使用MediaRecorder类来录制音频。 **MediaRecorder概述** MediaRecorder是一个Android系统类,它...
在Android平台上,录制视频通常涉及使用`MediaRecorder`类,这是一个强大的工具,允许开发者实现音频和视频的捕获。在本篇文章中,我们将深入探讨如何使用`MediaRecorder`类进行视频录制,以及在这个过程中需要注意...
根据需要选择录音格式,设置`setOutputFormat()`为`MediaRecorder.OutputFormat.AMR_NB`(AMR窄带)或`MediaRecorder.OutputFormat.WAVE_FORMAT_PCM_16BIT`(WAV格式)。同时,指定录音文件路径和文件名。 2. **...
在Android平台上,MediaRecorder是一个非常重要的类,它用于处理多媒体数据的录制,包括音频、视频以及图像。在本文中,我们将深入探讨如何利用MediaRecorder来实现Android应用中的录音功能。 首先,我们需要理解...
在Android平台上,MediaRecorder是一个非常重要的工具类,用于处理多媒体数据的录制,包括音频和视频。...通过这个项目,你不仅可以学习到如何录制视频,还能了解到Android多媒体处理的一些基础概念和最佳实践。
综上所述,Android录制音频转MP3格式的过程包括使用MediaRecorder进行音频录制,通过FFmpeg进行格式转换,以及妥善管理文件存储。理解并熟练掌握这些技术,能帮助开发者实现高质量的音频处理功能。
在Android平台上,MediaRecorder类是用于音频、视频录制的核心组件。它可以帮助开发者实现从麦克风捕获音频,从相机捕获视频,或者同时进行音频和视频的录制。本篇文章将深入探讨如何使用MediaRecorder在Android应用...
在Android应用开发中,MediaRecorder是一个非常重要的组件,它允许开发者录制音频、视频,并将其输出为多媒体文件。这个源码示例"Android应用源码之MediaRecorder"是针对Android平台上媒体录制功能的一个实践项目,...
1. **音频录制**:`MediaRecorder`支持多种音频编码格式,如AAC、AMR_NB、AMR_WB等。开发者可以通过`setAudioSource()`和`setAudioEncoder()`方法来配置音频输入源和编码器。 2. **视频录制**:同样,`...
在Android平台上,MediaRecorder是一个非常重要的类,它用于处理多媒体数据的录制,涵盖了音频、视频以及图像等。本文将深入探讨如何使用MediaRecorder进行录音和播放操作,通过源码解析来帮助开发者理解其实现原理...
MediaRecorder是Android系统提供的一个类,用于录制音频、视频或者捕获摄像头数据。在录音功能中,我们主要关注其音频录制功能。首先,需要初始化MediaRecorder对象,设置其音频源、输出格式、音频编码以及输出文件...
至于常用的mp3格式,使用MediaRecorder没有该视频格式输出。一些人的做法是使用AudioRecord录音,然后编码成wav格式,再转换成mp3格式 再贴上一些测试工程。 功能描述: 1、点击“录音WAV文件”,开始录音。...
在使用MediaRecorder录制音视频时,需要进行一系列配置,如设定输出文件路径、视频分辨率、帧率、视频编码格式(如H.263)以及音频编码格式(如AMR_NB)。还需要确保相机和麦克风权限已获取,并正确设置预览显示。 ...
在Android平台上,MediaRecorder是用于录制音频和视频的关键类。它是Android多媒体框架的一部分,提供了从摄像头和麦克风捕获媒体数据并将其编码到文件的功能。本文将深入解析MediaRecorder的生命周期、使用方法以及...
在Android系统中,`MediaRecorder` 是一个非常重要的类,用于录制音频、视频以及合成多媒体流。这个类提供了丰富的功能,让开发者能够轻松地构建多媒体录制应用。在本压缩包中,我们很可能是得到了`MediaRecorder`类...
- 音频采集:MediaRecorder类可用于录制音频,它支持多种编码格式,如AAC、AMR等。在视频通话中,通常会使用麦克风捕捉声音。 2. **网络通信**: - 实现视频通话通常需要使用实时通信(RTC)协议,如WebRTC。...