【发布时间】:2014-04-05 16:08:23
【问题描述】:
到目前为止,我一直在通过为 1 个文件创建 1 个活动来制作具有设置为铃声功能的应用程序。这很糟糕,因为对于具有 20 多个铃声的应用程序,我需要 20 个活动,这会影响应用程序的大小和性能。然后我发现有一种方法可以做到这一点,只需 1 个活动和布局,通过 Intents 传递数据。现在我很清楚它是如何工作的,除了一件让我烦恼的事情。这就是我如何定义字符串。 我需要 1 个字符串作为名称,1 个字符串作为文件路径
我的代码:
Boolean success = false;
rsound = new File(rpath, "Slow tone.mp3");rpath.mkdirs(); //Copied file name
if (!rsound.exists()) {
try {
InputStream in = getResources().openRawResource(R.raw.s8slowtone); //path for file
FileOutputStream out = new FileOutputStream(rsound.getPath());
byte[] buff = new byte[1024];
int read = 0;
try {
while ((read = in.read(buff)) > 0) {
out.write(buff, 0, read);
}
} finally {
in.close();
out.close();
}
} catch (Exception e) {
success = false;
}
} else {
success = true;
setRingtone();
}
if (!success) {
setRingtone();
}
}
private void setRingtone() {
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, rsound.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "Slow tone"); //Ringtone name
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.ARTIST, " ");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(rsound.getAbsolutePath());
getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + rsound.getAbsolutePath() + "\"",
null);
Uri newUri = getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(
S15.this, RingtoneManager.TYPE_RINGTONE,
newUri);
Toast.makeText(getApplicationContext(), "Ringtone set successfully",
Toast.LENGTH_SHORT).show();
那么我该怎么做呢?如何为每个文件定义字符串以及如何传递它们?
由于某些成员的问题不清楚,我将使其更简单 我不知道应该如何编写字符串,所以当我使用 Intent 启动 RingtoneManager Activity 时,我会从字符串中传递数据。 那么我应该如何编写我的代码来传递这个
文件名“慢音.mp3”
文件路径:R.raw.s8slowtone)
铃声名称“慢音”
【问题讨论】:
-
我不明白你需要什么,是活动的代码设置了铃声吗?您想从意图中获取文件名和名称吗?
-
我想知道应该如何编写字符串,以便在开始新活动时传递它们。
-
"我应该如何写字符串" => 你能说得更具体点吗?您使用 " " 创建字符串
-
我应该如何制作字符串,这样当我传递它时它就有路径、文件名和铃声名称。
-
在这种情况下,您不会“创建”
String,而是从某个地方获得它......资源?您的铃声存储在哪里?
标签: java android string android-intent ringtone