【问题标题】:Android: save audio recording locally?Android:在本地保存录音?
【发布时间】:2012-03-15 20:57:52
【问题描述】:

如何将文件保存到 android 手机而不是 sdcard?我知道对于 sdcard,你这样做的方式是调用 Environment.getExternalStorageDirectory().getAbsoluteDirectory();或类似的东西无论如何我都是这样工作的。但我希望能够保存到我的手机,我是否需要清单中的权限才能做到这一点?我尝试将 getexternalst.... 替换为 getDataDirectory ,但这似乎不起作用。

一如既往,谢谢你:)

编辑---------------

03-15 21:29:26.213: W/dalvikvm(21686): threadid=1: 线程以未捕获的异常退出 (group=0x2aac8578) 03-15 21:29:26.213:E/AndroidRuntime(21686):致命异常:主要 03-15 21:29:26.213: E/AndroidRuntime(21686): java.lang.RuntimeException: 无法实例化活动 ComponentInfo{com.alphaphonefinder/com.alphaphonefinder.Main}: java.lang.NullPointerException

【问题讨论】:

    标签: android audio save local recording


    【解决方案1】:

    您可以使用Context#getFilesDir

    获取完整路径作为字符串(假设this是Activity):

    String path = this.getFilesDir().getAbsolutePath();
    

    【讨论】:

    • 感谢您的帮助,但这会改变我的很多程序,是否有获取字符串形式的目录?如果你明白我的意思,那么它会被一个方法指向?
    • 呃,导致应用程序崩溃:(是的,它是 Activity
    • 我认为它是一个空指针异常,来自 logcat 所说的我在编辑中发布它
    • 您是在onCreate 内部还是外部?如果在外面 - 把它移到里面。
    【解决方案2】:

    最简单的方法是调用Context#openFileOutput(String, int),它接受一个String 作为文件名,一个int 指定模式并返回一个FileOutputStream。然后在 FileOutputStream 上调用 write,将数据的字节数组传递给它。完成后请务必关闭 FOS。

    编辑: 如果您只想要内部文件目录,请尝试Context#getFilesDir,它返回一个文件,文件上的getPath()getAbsolutePath() 将目录作为字符串返回。

    【讨论】:

    • 感谢您的帮助,在我尝试之前只是一个简短的问题,是否可以像我获取 sdcard 目录的方式一样使用字符串方法:final String RECORDING_PATH = Environment .getExternalStorageDirectory().getAbsoluteDirectory();有这样的吗?只会为我节省大量重新编码和其他东西的时间
    • 是的,在那里尝试过,但这只会导致应用程序失败
    猜你喜欢
    • 2012-06-09
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    相关资源
    最近更新 更多