- 第1章 Android Studio
- 第2章 AndroidManifest.xml
- 第3章 配置文件
- 第4章 UI Layout
- 第5章 Toast
- 第6章 Environment
- 第7章 Schedule 计划任务
- 第8章 Internationalization i18n with Android 国际化
- 第9章 存储
- 第10章 相机与相册
- 第11章 麦克风与录音
- 第12章 多媒体开发
- 第13章 定位
- 第14章 电话
- 第15章 消息广播
- 第16章 Service
- 第17章 NFC Near field communication
- 第18章 OkHttp - An HTTP HTTP/2 client for Android and Java applications
- 第19章 EventBus
- 第20章 设计模式
- 第21章 java.net 介绍和使用
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第20章 设计模式
20.1. 单例模式
package cn.netkiller.voice; import android.media.MediaRecorder; import android.os.Environment; import android.util.Log; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class Audio { private boolean isRecord = false; private MediaRecorder mediaRecorder; private String filename; private Audio() { } private static Audio instance; public synchronized static Audio getInstance() { if (instance == null) instance = new Audio(); return instance; } public String getFilename() { return filename; } public void start() { if (mediaRecorder == null) { String path = Environment.getExternalStorageDirectory().getPath(); String folder = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); String name = new SimpleDateFormat("hhmmss").format(new Date()); new File(path, folder).mkdirs(); filename = String.format("%s/%s/%s.3gp", path, folder, name); Log.e("Voice", "voice path " + filename); try { mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); mediaRecorder.setOutputFile(filename); mediaRecorder.prepare(); mediaRecorder.start(); isRecord = true; } catch (IOException ex) { ex.printStackTrace(); } } } public void stop() { if (mediaRecorder != null && isRecord) { System.out.println("stopRecord"); isRecord = false; mediaRecorder.stop(); mediaRecorder.release(); mediaRecorder = null; } } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论