1st. У меня есть код для настройки как Ringtone. Одна вещь, которую я не понимаю. У меня есть 64 звуковых файла в моем приложении. Есть ли способ получить что-то вроде ID, когда я нажимаю на какую-нибудь кнопку, или мне нужно написать весь код для всех 64 файлов?Вопросы, касающиеся Set Ringtone Android
2-й. У меня есть список в моем приложении, и я хочу, чтобы на длинном элементе щелкнуть этот файл в качестве мелодии звонка. Теперь. Нужно ли мне писать весь код в случае, или я могу сделать еще одно действие, а затем просто установить рингтон с помощью этого способа? Что-то вроде этого
case 1:
RingtoneManager.setActualDefaultRingtoneUri(
myActivity,
Activity name.TYPE_RINGTONE,
newUri
break;
Ну вот об этом, можно ли получить идентификатор из файла, скопировать этот файл и установить его в качестве мелодии звонка на длинных кликах, или мне нужно писать код для всех 64 файлов? Редактировать: Если 1-й вопрос невозможен, как мне написать код для всех 64 файлов? Где их поставить? И как я могу определить, какой файл нужно скопировать, когда я нажимаю на определенную кнопку. Или просмотр списка
Мой код:
l.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String selectedName = ((ListView) view.findViewById(R.id.listView1)).getContext().toString();
AssetManager assetManager = getAssets();
File file = new File(Environment.getExternalStorageDirectory(),
"/myRingtonFolder/Audio/");
if (!file.exists()) {
file.mkdirs();
}
String path = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/MyRingtones/Audio/";
File out = new File(path + "/", selectedName);
if(!out.exists()){
copyFile(assetManager, "Yeah.mp3", out);
}
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, out.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "yeah");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.MediaColumns.SIZE, out.length());
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(out.getAbsolutePath());
ContentResolver mCr = getContentResolver();
Uri newUri = mCr.insert(uri, values);
try {
RingtoneManager.setActualDefaultRingtoneUri(
getApplicationContext(), RingtoneManager.TYPE_RINGTONE, newUri);
Settings.System.putString(mCr, Settings.System.RINGTONE,
newUri.toString());
}
catch (Throwable t)
{
//TODO Handle exception
}
switch (position){
case 0:
if(mp!=null)
{
mp.release();
mp=null;
}
MediaPlayer.create(MainActivity.this, R.raw.aint);
mp.start();
break;
case 1:
if(mp!=null)
{
mp.release();
mp=null;
}
mp = MediaPlayer.create(MainActivity.this,
R.raw.airh);
mp.start();
LogCat:
02-25 09:21:34.064: W/dalvikvm(10221): threadid=1: thread exiting with uncaught exception (group=0x41aac8b0)
02-25 09:21:34.074: E/AndroidRuntime(10221): FATAL EXCEPTION: main
02-25 09:21:34.074: E/AndroidRuntime(10221): java.lang.NullPointerException
02-25 09:21:34.074: E/AndroidRuntime(10221): at funnysounds.com.MainActivity$1.onItemClick(MainActivity.java:63)
02-25 09:21:34.074: E/AndroidRuntime(10221): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
02-25 09:21:34.074: E/AndroidRuntime(10221): at android.widget.AbsListView.performItemClick(AbsListView.java:1104)
02-25 09:21:34.074: E/AndroidRuntime(10221): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2792)
02-25 09:21:34.074: E/AndroidRuntime(10221): at android.widget.AbsListView$1.run(AbsListView.java:3468)
02-25 09:21:34.074: E/AndroidRuntime(10221): at android.os.Handler.handleCallback(Handler.java:730)
02-25 09:21:34.074: E/AndroidRuntime(10221): at android.os.Handler.dispatchMessage(Handler.java:92)
02-25 09:21:34.074: E/AndroidRuntime(10221): at android.os.Looper.loop(Looper.java:213)
02-25 09:21:34.074: E/AndroidRuntime(10221): at android.app.ActivityThread.main(ActivityThread.java:5225)
02-25 09:21:34.074: E/AndroidRuntime(10221): at java.lang.reflect.Method.invokeNative(Native Method)
02-25 09:21:34.074: E/AndroidRuntime(10221): at java.lang.reflect.Method.invoke(Method.java:525)
02-25 09:21:34.074: E/AndroidRuntime(10221): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
02-25 09:21:34.074: E/AndroidRuntime(10221): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
02-25 09:21:34.074: E/AndroidRuntime(10221): at dalvik.system.NativeStart.main(Native Method)
Пробовали ли вы с ' onItemClick() 'метод? –
Да, и это не сработало. Я не могу понять, как настроить создание файла и установить этот файл в качестве мелодии звонка по 1 клику. Я не могу заставить его работать onItemClick() в виде списка. Я новичок в разработке Android. Я сделал тестовое приложение, добавил 1 кнопку, и это сработало. Поэтому мне было интересно, есть ли что-то вроде: На элементе click> Execute Activity> Но не менять макет. –
Хорошо, сначала вопрос, должен ли я поставить весь код на случай? Или просто некоторые части. Я вложил весь код в случае, и это дало мне столько синтаксических ошибок, которые даже не имели смысла. В основном заменить; с, и тому подобное. Я сделал это, и код хорошо не использовался –