一、录用文件问题

情景:在一次录音结束时,马上进行第二次录音,并同时开启上传线程。

问题:在第二次录音开始,需要配置录音文件路径,导致前一次音频文件还没来得及上传,就已经被删除。导致上传文件错误。

解决方法:在前一次录音结束时,将音频文件马上重命名,或是复制到其他目录。

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 2013-10-08 15:56  soper  阅读(562)  评论(0)    收藏  举报