Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
gvsp
14 / 3 / 0
Регистрация: 10.11.2015
Сообщений: 71
#1

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

23.09.2016, 01:31. Просмотров 447. Ответов 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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2016, 01:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Получить дескриптор файла (Программирование Android):

Получить имя файла из диалога выбора файла
Нашел класс диалога выбора файла: package com.stetsenko.openfiledialog; ...

Как получить данные из файла .properties
Всем привет. У меня есть класс который не наследуется от Activity. (Это класс...

Как получить объект класса LinearLayout из файла .xml?
Как вместо этого: LinearLayout layout = new LinearLayout(this);...

Как можно получить картинку альбома для аудио файла
Получаю list аудио файлов таким образом: public @Nullable List<Audio> ...

Получить содержимое строки по содержанию переменной, но не из файла strings.xml
"a" это кнопка, и я задаю название кнопки. Название кнопки записано в файле...

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

6
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
23.09.2016, 01:54 #2
Попробуй так:
Java
1
2
File file = ...;
FileDescriptor fd = new FileInputStream(file).getFD();
0
gvsp
14 / 3 / 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.
0
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
23.09.2016, 14:16 #4
а почему никто не спросил зачем ему нужен дескриптор?
и вопрос второй - какой смысл сравнивать его с AssetFileDescriptor ?
ну сравнили, да - несовместимый тип...а должен быть совместимый? зачем? почему он должен быть совместим с AssetFileDescriptor ?
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
23.09.2016, 14:48 #5
Можно просто другой метод взять у SoundPool:

load(FileDescriptor fd, long offset, long length, int priority)
Load the sound from a FileDescriptor.
0
gvsp
14 / 3 / 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 есть сомнения.
0
gvsp
14 / 3 / 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);
    }
0
24.09.2016, 23:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2016, 23:35
Привет! Вот еще темы с решениями:

Data Backup -как получить адрес файла стандартных настроек
Здравствуйте! На developer.android.com прочитал урок о использовании...

Поиск файла на внешних устройствах или как получить список всех смонтированных носителей
В общем есть задача найти файл test.txt в директории testdir на любом...

Нужно получить дескриптор окна имея дескриптор контрола
Нужно получить дескриптор окна имея дескриптор контрола, подскажите как

как получить дескриптор файла, открытый функцией fopen
как получить дескриптор файла, открытый функцией fopen


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru