tts文件不会从安卓系统上的api 29或更高版本中保存



我正在使用synthesizeToFile 保存tts文件

但是,在将compileSdkVersion和targetSdkVersion增加到30之后,它不起作用。源代码如下感谢阅读

public void saveToFile()
{
File folder = new File(Environment.getExternalStorageDirectory(),SAVE_FOLDER);
if(!folder.exists())
{
folder.mkdir();
}
}
long now = System.currentTimeMillis();
Date day = new Date(now);
SimpleDateFormat getCurrentTime = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String fileName = String.valueOf(getCurrentTime.format(day));
File sd = Environment.getExternalStorageDirectory();
String savePath = "//" + SAVE_FOLDER + "//" + fileName + ".wav";
file = new File(sd,savePath);

HashMap<String, String> myHashRender = new HashMap();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, edtContents.getText().toString());
int result = tts.synthesizeToFile(edtContents.getText().toString(),myHashRender,file.toString());
}
Environment.getExternalStorageDirectory()   

此方法在API 29级中已弃用。为了改善用户隐私,不赞成直接访问共享/外部存储设备。什么时候一个应用程序的目标是Build.VERSION_CODES.Q,从中返回的路径方法不再可由应用程序直接访问。读取getExternalStorageDirectory

你应该试试

File fileOBJ = new File(getExternalCacheDir().getAbsolutePath());
File fileOBJParam = new File(getExternalCacheDir().getAbsolutePath(),"2nd Param");

最新更新