一、录用文件问题
情景:在一次录音结束时,马上进行第二次录音,并同时开启上传线程。
问题:在第二次录音开始,需要配置录音文件路径,导致前一次音频文件还没来得及上传,就已经被删除。导致上传文件错误。
解决方法:在前一次录音结束时,将音频文件马上重命名,或是复制到其他目录。
android 文件重命名方法:
File file = new File(path); File file2 = new File(CreatePath.sanitizePath(Url.NEW_RECORD_PATH)); if (file2.exists()) { file2.delete(); } file.renameTo(file2);
二、java单例模式
这里描述最简单的单例模式,详细在下一篇
1 /** 2 * @author 作者:fangxiaopeng E-mail: fxp.2008@163.com 3 * @version 创建时间:2013-10-7 下午8:43:41 4 * 类说明 :最简单的单例模式,lazy模式,非线程安全 5 * 优点:Lazy,初次使用时初始化,避免了资源的浪费 6 * 缺点:1、初次初始化时非常耗时,可能引起资源浪费 7 * 2、非线程安全,多线程下,可能会初始化几个对象 8 */ 9 public class SingletonOne { 10 11 //单例实例变量 12 private static SingletonOne instance = null; 13 14 //私有化构造方法,保证外部的类不能够通过构造器实例化 15 private SingletonOne(){ 16 17 } 18 19 20 /* 21 * 获取单例对象 22 * @return 单例对象 23 * 24 */ 25 public SingletonOne getInstance (){ 26 if (null == instance) { 27 instance = new SingletonOne(); 28 } 29 return instance; 30 } 31 32 33 } 34 35 /*** 36 * 分析“非线程安全”问题 37 * 1、当线程A进入第26行时,检查到instance此时为空。 38 * 2、此时线程B抢到CPU资源,线程A暂停,切换到线程B执行,线程B进入到26行,检查instance此时为空,继续执行27行,创建一个实例,返回。 39 * 3、线程A继续执行,由于之前执行的结果为空,继续执行27行,创建实例,返回; 40 * 4、由此我们可以看出,在这样的情况下,创建了两个instance实例。 41 * 42 */
三、android MediaRecoder编码问题
视频编码格式:default,H263,H264,MPEG_4_SP
获得视频资源:default,CAMERA
音频编码格式:default,AAC,AMR_NB,AMR_WB,
获得音频资源:defalut,camcorder,mic,voice_call,voice_communication,voice_downlink,
voice_recognition, voice_uplink;
输出方式:amr_nb,amr_wb,default,mpeg_4,raw_amr,three_gpp.
posted on
浙公网安备 33010602011771号