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

Воспроизведение mp3 в программе, способной это сделать(файловый менеджер) - Android

Восстановить пароль Регистрация
 
Федоров Степан
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 55
14.07.2016, 11:14     Воспроизведение mp3 в программе, способной это сделать(файловый менеджер) #1
Здравствуйте, уважаемые форумчане, я недавно пополнил ряды новичков в программировании под android и решил запрограммировать файловый менеджер, чтобы закрепить некоторый материал(работа со списками + намерения). И все шло хорошо пока я не начал программировать открытие файлов. Беда заключается именно в открытии аудио файлов, все другие типы файлов открываются более-менее адекватно. Я перепробовал три способа, которые смог найти в интернете, но результат тот же(не может найти программу для воспроизведения музыки). Возможно мой проигрыватель использует другое намерение,? Или с аудио файлами все очень сложно? Другой файловый менеджер без проблем открывает аудио файлы в моем проигрывателе(тестил на реальном устройстве).
Вот код(работал в Android Studio):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 private void openFile(String file){
       /*для всех вариантов
        String type;
        MimeTypeMap mime = MimeTypeMap.getSingleton();
 
        int index = file.lastIndexOf(".");
        type = mime.getMimeTypeFromExtension(file.substring(index + 1).toLowerCase());
        
        Вариант первый
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(file), type);
        
        Вариант второй(работает не адекватно если не положить тип)
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("file://" + file));
        intent.setType(type);
        
        
        Для всех вариантов:
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(Intent.createChooser(intent, "Выбор программы"));*/
 
        //Вариант третий(работает так же, как и первый, но смотрится длиннее)
        Intent intent = new Intent(Intent.ACTION_VIEW);
 
        if (file.contains(".doc") || file.toString().contains(".docx") ||file.toString().contains(".odt")) {
            // Word document
            intent.setDataAndType(Uri.parse(file), "application/msword");
        } else if (file.toString().contains(".pdf")) {
            // PDF file
            intent.setDataAndType(Uri.parse(file), "application/pdf");
        } else if (file.toString().contains(".ppt") || file.toString().contains(".pptx")) {
            // Powerpoint file
            intent.setDataAndType(Uri.parse(file), "application/vnd.ms-powerpoint");
        } else if (file.toString().contains(".xls") || file.toString().contains(".xlsx")) {
            // Excel file
            intent.setDataAndType(Uri.parse(file), "application/vnd.ms-excel");
        } else if (file.toString().contains(".zip") || file.toString().contains(".rar")) {
            // ZIP Files
            intent.setDataAndType(Uri.parse(file), "application/zip");
        } else if (file.toString().contains(".rtf")) {
            // RTF file
            intent.setDataAndType(Uri.parse(file), "application/rtf");
        } else if (file.toString().contains(".wav") ||file.toString().contains(".mp3")) {
            // WAV audio file
            intent.setDataAndType(Uri.parse(file), "audio/x-wav");
        } else if (file.toString().contains(".gif")) {
            // GIF file
            intent.setDataAndType(Uri.parse(file), "image/gif");
        } else if (file.toString().contains(".jpg") || file.toString().contains(".jpeg") || file.toString().contains(".png")) {
            // JPG file
            intent.setDataAndType(Uri.parse(file), "image/jpeg");
        } else if (file.toString().contains(".txt")) {
            // Text file
            intent.setDataAndType(Uri.parse(file), "text/plain");
        } else if (file.toString().contains(".3gp") || file.toString().contains(".mpg") || file.toString().contains(".mpeg") || file.toString().contains(".mpe") || file.toString().contains(".mp4") || file.toString().contains(".avi")) {
            // Video files
            intent.setDataAndType(Uri.parse(file), "video/*");
        } else {
            intent.setDataAndType(Uri.parse(file), "*/*");
        }
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2016, 11:14     Воспроизведение mp3 в программе, способной это сделать(файловый менеджер)
Посмотрите здесь:

Сделать в программе что-то вроде бонуса Android
Android Воспроизведение аудио
Файловый менеджер Android
Файловый менеджер на андроид Android
Android Как сделать просмотр содержимого в программе, как в браузере
Видел у друга чехол, который при открывании разблокировывает смартфон, как это сделать? Android
Android Файловый менеджер для андроида
Получил рут через Baidu Root. Теперь хочу назад отключить. Как это сделать надежнее всего? Android
Взять символы с EditText и прировнять их к переменным.Как это можно сделать? Android
Android Кто может это переработать для андроида? И вообще это возможно?
Android Необходимо открыть pdf документ из сети, есть только ссылка на файл, как это можно сделать
Android Воспроизведение аудиопотока из интернета

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Федоров Степан
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 55
17.07.2016, 16:44  [ТС]     Воспроизведение mp3 в программе, способной это сделать(файловый менеджер) #2
Оказалось, что неправильно открываются и остальные файлы, но проблему сумел решить очень просто. Выяснилось что все приложения используют конструкцию :"file://" + [путь к файлу]. Вот правильный код открытия файла:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void openFile(String file){//file - путь к файлу
        String type = getTypeOfFile(file);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse("file://" + file), type);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        Intent chooser = Intent.createChooser(intent, "Выбор программы");
        startActivity(chooser);
    }
 
private String getTypeOfFile(String file){//получаем тип файла по пути к нему используя стандартный класс MimeTypeMap
        String type = "";
        MimeTypeMap mime = MimeTypeMap.getSingleton();
 
        int index = file.lastIndexOf(".");
        if(index != 0) {
            type = mime.getMimeTypeFromExtension(file.substring(index + 1).toLowerCase());
        }
        if(type != null)
            return type;
        else
            return "";
    }
Yandex
Объявления
17.07.2016, 16:44     Воспроизведение mp3 в программе, способной это сделать(файловый менеджер)
Ответ Создать тему
Опции темы

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