Android установить мелодию звонка и уведомление

Привет, у меня проблема с сохранением звука в качестве мелодии звонка или уведомления. Я продолжаю получать свой набор Toast - Failed - Check your SDCard

Где ошибка?

Код: http://pastebin.com/in5ckvk0


person Nelson Biggety    schedule 05.03.2012    source источник


Ответы (2)


Проблема здесь

  String path=Environment.getExternalStorageDirectory().getPath()+"/sdcard/media/ringtone/";

Environment.getExternalStorageDirectory() в любом случае вернет вам путь /SDCard, используйте другое имя папки для хранения рингтона. как /yourPackage/media вместо /sdcard/media

как это будет интерпретировано как /SDCard/yourPackage/media/

Надеюсь, поможет

person Some one Some where    schedule 05.03.2012
comment
да, Environment.getExternalStorageDirectory() в любом случае вернет вам путь /SDCard, поэтому вместо этого пропустите эту часть - person Some one Some where; 05.03.2012
comment
Используйте 1_ - person Some one Some where; 05.03.2012
comment
Теперь у меня есть ошибки: (481): Неперехваченный обработчик: выход основного потока из-за необработанного исключения (481): android.content.res.Resources$NotFoundException: Идентификатор ресурса #0x0 (481): at android.content.res.Resources. getValue(Resources.java:891) AndroidRuntime(481): в android.content.res.Resources.openRawResource(Resources.java:816) AndroidRuntime(481): в android.content.res.Resources.openRawResource(Resources.java: 798) InputStream fIn = getBaseContext().getResources().openRawResource(ressound); (сохранение(selectedSoundId)){ if(item.getTitle()==Ringtone){function1(item.getItemId());} - person Nelson Biggety; 05.03.2012
comment
не используйте имя пакета Android по умолчанию и попробуйте протестировать его с собственным именем пакета/папки, возможно, папка, в которую вы сейчас пишете, недоступна, лучше создайте свою собственную папку и повторите попытку. - person Some one Some where; 05.03.2012
comment
Строковый путь = Environment.getExternalStorageDirectory().getPath() + /com.ring/‌​media; Не работает... - person Nelson Biggety; 05.03.2012
comment
проверьте в эмуляторе путь /sdcard создал ли он папку com.ring/ Я начинаю сомневаться, что это операция чтения, которая вызывает исключение при чтении необработанного файла медиафайла - person Some one Some where; 05.03.2012
comment
Сообщите мне, какая строка вызывает исключение после отладки вашего кода. - person Some one Some where; 05.03.2012
comment
Если запускаю на телефоне с sdcard тоже не работает. Как добавить, чтобы он автоматически выбирал запись на SD или во внутреннюю память? - person Nelson Biggety; 05.03.2012
comment
Отладка, когда я нажал установить рингтон pastebin.com/Xx7Z9SQT Встал на него и застрял - person Nelson Biggety; 05.03.2012
comment
Вы не сталкиваетесь с исключением из-за хранения на SDCard, потому что вы не можете открыть папку Raw Resource, чтобы прочитать свои музыкальные файлы из нее. Поместили ли вы свои рингтоны (медиафайлы с расширением .ogg) в папку res/raw вашего проекта? - person Some one Some where; 05.03.2012
comment
В вашем getBaseContext().getResources().openRawResource(ressound); попробуйте поместить статический файл как ressound=R.raw.yourFile.ogg просто для проверки. - person Some one Some where; 05.03.2012
comment
вы пробовали ressound=R.raw.yourFile правильно, не с расширением, это была опечатка, какое исключение выдало на этот раз, когда вы сделали все статическим? - person Some one Some where; 05.03.2012
comment
это отписанная SDCard? Ваш эмулятор определен с помощью SDCard во время его создания? - person Some one Some where; 05.03.2012
comment
pastebin.com/sm2g1ije ‹ -- Ошибки, если у меня есть: строка 209: InputStream fIn =getBaseContext().getResources ().openRawResource(звук); 128-я строка: (savenot(selectedSoundId)){ 107-я строка: else if(item.getTitle()==Notification){function2(item.getItemId());} - person Nelson Biggety; 05.03.2012

хорошо, вот пример кода, который я сейчас использую в своем приложении для хранения данных на моей SDCard, посмотрите и попробуйте использовать его.

    File newSoundFile;
    ContentResolver mCr;

    Log.e("check this tag","path for SDCard:"+Environment.getExternalStorageDirectory().getAbsolutePath());

    //storing at:  /mnt/sdcard/media 
    File directoryStructure=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Halloween");


    //if directory doesn't exist create a directory if that fails too return false
    if(!(directoryStructure.exists())){
        if(!(directoryStructure.mkdirs())){
            return false;
        }
    }

    /*for(int allRing=0;allRing<ringId.length;allRing++)*/{

        newSoundFile     = new File(directoryStructure, "/"+HalloweenWallpaper.longPressSelected+".mp3");
        Uri mUri = Uri.parse("android.resource://"+getApplication().getPackageName()+"/"+ringId[HalloweenWallpaper.longPressSelected]);
        mCr = HalloweenWallpaper.this.getContentResolver();
        AssetFileDescriptor soundFile;
        try {
            soundFile= mCr.openAssetFileDescriptor(mUri, "r");
        } catch (FileNotFoundException e) {
            soundFile=null;
            Log.e("first check", "here --"+e.getMessage());
            return false;
        }

        try {
            byte[] readData = new byte[1024];
            FileInputStream fis = soundFile.createInputStream();
            FileOutputStream fos = new FileOutputStream(newSoundFile);
            int i = fis.read(readData);

            while (i != -1) {
                fos.write(readData, 0, i);
                i = fis.read(readData);
            }

            fos.close();
        } catch (IOException io) {
            Log.e("Second Check", "--"+io.getMessage());
            return false;
        }       

    }


    //STORES SUCCESFULLY 
person Some one Some where    schedule 05.03.2012