Сохраните медиафайлы на SD-карту Blackberry - PullRequest
1 голос
/ 01 февраля 2011

Я создаю мультимедийное приложение, которое позволяет пользователю сохранять обои и мелодии звонка. Я знаю путь, по которому мне нужно их сохранить, это «SDCard / BlackBerry / ringtones / file.mp3» (или «/ pictures» для обоев). Я искал форумы и сообщения в течение пары дней, и единственное, что я нашел, было то, как писать текстовые файлы. Пока предположим, что мелодии и картинки сохраняются в папке ресурсов проектов. Если бы вы могли предоставить какой-либо вклад, я был бы очень признателен.

Ответы [ 2 ]

4 голосов
/ 01 февраля 2011

Сохранение чего-либо должно быть примерно таким же.Попробуйте что-то вроде этого:

    FileConnection fc;

    try {
        String fullFile = usedir + filename;
        fc = (FileConnection) Connector.open(fullFile, Connector.READ_WRITE);
        if (fc.exists()) {
             Dialog.alert("file exists");
        } else {
            fc.create();
            fileOS = fc.openOutputStream();
            fileOS.write(raw_media_bytes, raw_offset, raw_length);
        }
    } catch (Exception x) {
        Dialog.alert("file save error);
    } finally {
        try {
            if (fileOS != null) {
                fileOS.close();
            }
            if (fc != null) {
                fc.close();
            }
        } catch (Exception y) {
        }
    }

usedir и filename - ваши компоненты пути, raw_media_bytes - ваши данные и т. Д. И т. Д.

2 голосов
/ 02 февраля 2011

Спасибо за помощь, cjp.Вот код для сохранения файла mp3 ресурса на SD-карту:

byte[] audioFile = null;
try {
    Class cl = Class.forName("com.mycompany.myproject.myclass");
    InputStream is = cl.getResourceAsStream("/" + audioClip);
    audioFile = IOUtilities.streamToBytes(is);

    try {
        // Create folder if not already created
        FileConnection fc = (FileConnection)Connector.open("file:///SDCard/BlackBerry/ringtones/");
        if (!fc.exists())
            fc.mkdir();
        fc.close();

        // Create file
        fc = (FileConnection)Connector.open("file:///SDCard/BlackBerry/ringtones/" + audioClip, Connector.READ_WRITE);
        if (!fc.exists())
            fc.create();
        OutputStream outStream = fc.openOutputStream();
        outStream.write(audioFile);
        outStream.close();
        fc.close();

        Dialog.alert("Ringtone saved to BlackBerry SDcard.");
    } catch (IOException ioe) {
        Dialog.alert(ioe.toString());
    }
} catch (Exception e) {
    Dialog.alert(e.toString());
}

Как указывал cjp, вот как сохранить ресурс изображения на SD-карту:

EncodedImage encImage = EncodedImage.getEncodedImageResource(file.jpg"); 
byte[] image = encImage.getData();
try {
// create folder as above (just change directory)
// create file as above (just change directory)
} catch(Exception e){}
...