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

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

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

Файловый менеджер
public class Main extends AppCompatActivity { ListView lv; File...

Файловый менеджер
здравствуйте,возник вопрос как отображать содержимое папки? например есть папка...

Файловый менеджер на Android
Доброго времени суток всем . Начал работать над реализацией простого файлового...

Файловый менеджер для андроида
Проблема такая-задали курсач по этой теме. Нужен обзор этих самых менеджеров...

Как сделать файловый менеджер
Как сделать файловый мененжер на подобии Total Commander Вот Вопрос: как...

1
Федоров Степан
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 55
17.07.2016, 16:44  [ТС] #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 "";
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2016, 16:44

Возможно ли сделать поочерёдное воспроизведение mp3 из файла ресурсов?
Всем привет! Хотел сделать проигрыватель mp3 и вшить его в один из своих...

Как сделать воспроизведение мелодии в формате mp3? [MASM]
Меня интересует при помощи какой процедуры в масме можно проиграть мелодию в...

Файловый менеджер
добрый день, хочу написать фаловый менеджер типа total comander на C#....


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

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

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