我想用我的应用发送自定义mp3通知声音。我还希望用户能够将通知声音更改为其他声音,并将其更改回使用标准Android通知声音选择器UI发送的声音。我的策略是将mysound.mp3复制到名为“Notifications”的文件夹中。当我手动执行此操作时,我的手机会自动查找通知,以便通过UI选择通知。我已经能够以编程方式将mysound.mp3文件从res / raw复制到另一个文件夹,但我无法将其复制到我想要的文件夹中。在某些情况下,我可以将文件复制到我的应用程序文件下名为Notifications的目录,但通知声音选择器UI不会在那里看到它。
我是Android新手,我甚至不知道是否允许应用程序复制到Notifications文件夹。我对另一种策略持开放态度。这是我的代码。
InputStream in = getResources().openRawResource(R.raw.mysound);
String destDir;
//Options for destination directory I tried but that didn't work
destDir = "";
destDir = "/data";
destDir = this.getExternalFilesDir(Environment.DIRECTORY_NOTIFICATIONS).toString();
destDir = this.getCacheDir().toString();
destDir = this.getFilesDir().getAbsolutePath();
destDir = this.getExternalCacheDir().toString();
File myDir = new File(destDir + "/Notifications");
myDir.mkdirs();
File destinationFile = new File(myDir + "/dundun.mp3");
destinationFile.delete(); //TODO: Delete this line when copy is working
Boolean exists = destinationFile.exists();
if (exists) return;
FileOutputStream out = null;
try {
out = new FileOutputStream(destinationFile.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
byte[] buff = new byte[1024];
int read = 0;
try
{
while ((read = in.read(buff)) > 0) {
out.write(buff, 0, read);
}
in.close();
out.close();
}
catch (IOException e) {
}