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

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

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

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

23.09.2016, 01:31. Просмотров 305. Ответов 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
Нашел класс диалога выбора файла: package com.stetsenko.openfiledialog; import android.app.AlertDialog; import...

Как получить данные из файла .properties - Программирование Android
Всем привет. У меня есть класс который не наследуется от Activity. (Это класс фабрика) Как можно открыть в нем InputStream для чтения...

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

Data Backup -как получить адрес файла стандартных настроек - Программирование Android
Здравствуйте! На developer.android.com прочитал урок о использовании BackupAgentHelper. К сожалению, там приводится совсем элементарный...

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 653
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.
Pablito
2453 / 1898 / 590
Регистрация: 12.05.2014
Сообщений: 6,700
Завершенные тесты: 1
23.09.2016, 14:16     Получить дескриптор файла #4
а почему никто не спросил зачем ему нужен дескриптор?
и вопрос второй - какой смысл сравнивать его с AssetFileDescriptor ?
ну сравнили, да - несовместимый тип...а должен быть совместимый? зачем? почему он должен быть совместим с AssetFileDescriptor ?
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 653
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     Получить дескриптор файла
Еще ссылки по теме:

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

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

Возможно ли получить дескриптор файла по LCN его кластера на жестком диске? - C++ WinAPI
Здравствуйте, возможно ли получить дескриптор файла по LCN его кластера на жестком диске?

Получить дескриптор HBITMAP - C++ WinAPI
Для bmp-картинки, чтобы получить дескриптор HBITMAP, можно использовать функцию LoadImage. А как можно получить такой дескриптор, например,...

Запустить приложение и получить дескриптор окна - Delphi
Всем доброго времени суток. Я знаю, что подобные вопросы уже задавались, я много читал, но никак не могу разобраться, помогите пожалуйста....


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

Или воспользуйтесь поиском по форуму:
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     Получить дескриптор файла
Ответ Создать тему
Опции темы

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