我需要读取从智能手机的麦克风录制的音频文件,为此,我正在使用以下代码:
pathSave = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+ UUID.randomUUID().toString()+"audio_record.3gp";
问题在于,在Android Studio中不赞成使用方法getExternalStorageDirectory()(我使用的是3.5.3版,但我没有指出我的API级别)。
还有另一种方法代替了getExternalStorageDirectory(),其他方法不会对我的代码进行太多更改。
谢谢。
答案 0 :(得分:0)
与Android Studio版本无关。折旧在SDK级别上。 Docs say:
在API级别29中不赞成使用此方法。为了提高用户隐私,不建议直接访问共享/外部存储设备。 当应用程序定位到Build.VERSION_CODES.Q时,此方法返回的路径将不再可直接用于应用程序。通过迁移到Context#getExternalFilesDir(String),MediaStore或Intent#ACTION_OPEN_DOCUMENT等替代方案,应用程序可以继续访问共享/外部存储中存储的内容。
如果您不针对Q,则可以暂时忽略它,因为折旧意味着您应该停止使用该方法,而不是突然停止工作。
我没有指出我的API级别)
那不是事实。
答案 1 :(得分:0)
Environment.getExternalStorageDirectory()
此方法在API级别29中已不推荐使用。改善用户 隐私,直接访问共享/外部存储设备是 不推荐使用。当应用定位到 Build.VERSION_CODES.Q 时,路径 此方法返回的值不再可供应用直接访问。 应用程序可以继续访问共享/外部存储中存储的内容 通过迁移到诸如 Context#getExternalFilesDir(String),MediaStore或Intent#ACTION_OPEN_DOCUMENT 。
对于以下示例,代码较旧。 (已弃用)
val storageDir = File(Environment.getExternalStorageDirectory(), "pics")
storageDir.mkdirs()
我们可以如下使用Context方法
val storageDir = File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "pics")
storageDir.mkdirs()
请检查以下链接以获取更多详细信息
答案 2 :(得分:0)
我改用Environment.getExternalStorageDirectory()
String getRootDir(){ 返回ctx.getExternalFilesDir(null).getParent()。split(“ / Andro”)[0];
}