暗夜老猫 2014-05-06 07:12 采纳率: 0%
浏览 858

6410开发板上跑Android 2.1 ,录音出现问题,求大神指点

我在6410的开发板上运行 Android 2.1,写了个程序 ,想要进行录音。代码 如下:
mediaRecorder = new MediaRecorder();
Toast.makeText(TelListenner.this,"new MedioRecorder()成功",
Toast.LENGTH_SHORT).show();
//myRecAudioFile = File.createTempFile("!"+MainActivity.strAddress1+MainActivity.strDate1, ".amr", dir);
myRecAudioFile=new File(dir,MainActivity.strAddress1+MainActivity.strDate1+"new.amr");
Toast.makeText(TelListenner.this,"createTempFile()成功",
Toast.LENGTH_SHORT).show();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Toast.makeText(TelListenner.this,"setAudioSource成功",
Toast.LENGTH_SHORT).show();
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Toast.makeText(TelListenner.this,"setOutputFormat成功",
Toast.LENGTH_SHORT).show();
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

                    mediaRecorder.setOutputFile(myRecAudioFile.getAbsolutePath());//保存路径   
                    Toast.makeText(TelListenner.this,"保存路径成功",
                            Toast.LENGTH_SHORT).show();
                    mediaRecorder.prepare();
                    Toast.makeText(TelListenner.this,"prepare成功",
                            Toast.LENGTH_SHORT).show();
                    mediaRecorder.start(); 

写了许多Toast,到
Toast.makeText(TelListenner.this,"保存路径成功",Toast.LENGTH_SHORT).show();
这一句还能弹出Toast,但是prepare()函数执行之后就不能弹出"prepare成功"的字样。
我查了一下prepare()函数的作用,是Prepares the recorder to begin capturing and encoding data。我怀疑是不是这个函数会调用底层硬件,而底层硬件可能有问题才导致的prepare()不运行??
另外,虽然File.createTempFile()这个函数执行了,但是在目录下面找不到建立的文件。这是因为什么?理论上讲,createTempFile()只要执行,就已经建立文件才对,虽然字节可能会是0,但是没理由文件都不存在啊。。。
这个问题困扰我两天了,求大神指导,万分感激~

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 01:19
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你已经正确创建了一个临时文件,但当你尝试使用MediaRecorder类时,它似乎没有启动。这可能是由于一些系统或库级别的原因造成的。以下是一些建议和解决方案:

    1. 确保你的设备支持录制音频。在AndroidManifest.xml中添加权限:

      <uses-permission android:name="android.permission.RECORD_AUDIO"/>
      
    2. 检查设备的硬件配置。如果硬件限制导致录制失败,请考虑升级设备以获得更好的性能。

    3. 检查是否有任何已安装的应用阻止了录制过程。你可以通过在AndroidManifest.xml中添加权限来检测这一点:

      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
      
    4. 如果上述方法都无法解决问题,可以考虑将录制逻辑移至后台,或者使用异步任务来处理录制操作。

    5. 如果你正在使用的是Android Studio,请确保你已经正确导入了所有必要的库。例如,在构建项目时,你应该看到MediaRecorder依赖项被正确地添加到了build.gradle文件中。

    6. 如果你仍然遇到问题,尝试使用不同的库,如Apache Commons Codec或OpenSL-JNI,它们可能更适合你的需求。

    7. 最后,如果你是在编写Java代码,请检查你的线程安全问题。在多线程环境中,可能存在内存泄漏等问题。

    希望这些信息对你有所帮助!

    评论

报告相同问题?