Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
#1

Получить дескриптор файла - Android

23.09.2016, 01:31. Просмотров 226. Ответов 6
Метки нет (Все метки)

Если wav файл лежит в assets, то я дескрипторы получаю так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mAssetManager = getAssets();
        // получим идентификаторы звуков
        soundDot = loadSound("Dot.wav");
 
// ...
 
   private int loadSound(String fileName) {
        AssetFileDescriptor afd;
        try {
            afd = mAssetManager.openFd(fileName);
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), "Не могу загрузить файл " + fileName,
                    Toast.LENGTH_SHORT).show();
            return -1;
        }
        return mSoundPool.load(afd, 1);
    }
А если файл лежит не в assets, то как получить дескрипторы? Файл создаю в приложении и сохраняю так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        String FileDashName = "Dash.wav"; // имя файла
        fos = null;
        try {
            fos = openFileOutput(FileDashName, Context.MODE_PRIVATE);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            fos.write(FileDash);
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
В эмуляторе он оказывается в каталоге files.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2016, 01:31     Получить дескриптор файла
Посмотрите здесь:

Поиск файла на внешних устройствах или как получить список всех смонтированных носителей Android
Data Backup -как получить адрес файла стандартных настроек Android
Получить содержимое строки по содержанию переменной, но не из файла strings.xml Android
Android Как получить объект класса LinearLayout из файла .xml?
Как получить данные из файла .properties Android
Android Получить имя файла из диалога выбора файла
Получение хеша бинарного файла сборки для выполняемого apk-файла Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
23.09.2016, 01:54     Получить дескриптор файла #2
Попробуй так:
Java
1
2
File file = ...;
FileDescriptor fd = new FileInputStream(file).getFD();
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
23.09.2016, 13:53  [ТС]     Получить дескриптор файла #3
Mikalai, К сожалению не получается.
Java
1
2
3
4
5
6
7
        File file = new File(this.getFilesDir(), "Dot.wav");
        try {
            FileDescriptor fd = new FileInputStream(file).getFD();
            soundDot = fd;
        } catch (IOException e) {
            e.printStackTrace();
        }
так soundDot = fd - несовместимый тип.

Добавлено через 10 часов 49 минут
что то никак не выходит.
int load(String path, int priority) Загрузка файла из указанного пути.
Java
1
2
3
4
5
6
7
8
9
        soundDot = loadSound("Dot.wav");
 
// ...
 
    private int loadSound(String fileName) {
 
String patchDot="files/"+fileName;
        return mSoundPool.load(patchDot, 1);
    }
В результате в дебаггере soundDot = 0.
Паблито
резкий
1960 / 1695 / 525
Регистрация: 12.05.2014
Сообщений: 6,046
Завершенные тесты: 1
23.09.2016, 14:16     Получить дескриптор файла #4
а почему никто не спросил зачем ему нужен дескриптор?
и вопрос второй - какой смысл сравнивать его с AssetFileDescriptor ?
ну сравнили, да - несовместимый тип...а должен быть совместимый? зачем? почему он должен быть совместим с AssetFileDescriptor ?
Mikalai
253 / 229 / 92
Регистрация: 11.01.2015
Сообщений: 648
23.09.2016, 14:48     Получить дескриптор файла #5
Можно просто другой метод взять у SoundPool:

load(FileDescriptor fd, long offset, long length, int priority)
Load the sound from a FileDescriptor.
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
23.09.2016, 15:47  [ТС]     Получить дескриптор файла #6
Mikalai,
Java
1
2
3
4
5
6
7
8
9
10
11
    private int loadSound(String fileName) {
        File file = new File(this.getFilesDir(), fileName);
        FileDescriptor fd;
        try {
            fd = new FileInputStream(file).getFD();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        return mSoundPool.load(fd, 0,0,1);
    }
return mSoundPool.load(fd, 0,0,1);Переменная fd не может быть инициализирована. Да и насчёт того, что подставлять в long length есть сомнения.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2016, 23:35     Получить дескриптор файла
Еще ссылки по теме:

Получить доступ к картинке, при помощи переменной с именем файла Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
24.09.2016, 23:35  [ТС]     Получить дескриптор файла #7
Получилось.
Java
1
2
3
4
5
6
7
8
9
10
soundDot = loadSound("Dot.wav");
 
//...
 
 
 private int loadSound(String fileName) {
        String mypatch = getApplicationInfo().dataDir; // путь к директории приложения
        mypatch = mypatch + "/files/"+fileName;
        return mSoundPool.load(mypatch, 1);
    }
Yandex
Объявления
24.09.2016, 23:35     Получить дескриптор файла
Ответ Создать тему
Опции темы

Текущее время: 22:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru