Извините, если это уже был дан ответ, но я не могу задать свой вопрос очень хорошо. У меня есть активность, которая требует файла песни с вашего устройства, и я хочу, когда я нажму кнопку, чтобы открыть диалоговое окно, чтобы спросить вас, как вы хотите открыть файл (например, выбрать файл-проводник), а затем пользователь будет выберите mp3-файл (необходимо ввести как внутреннюю память, так и внешнюю, по крайней мере те, которые доступны для пользователей, например, в моем Xperia V, который имеет 2 внутренних раздела и SD-карту) и когда выбран музыкальный файл (. wav, .mp3, .acc), чтобы загрузить его имя и путь к файлу в моем приложении. Как мне это сделать? Я не предоставляет какой-либо код, потому что это все, что мне нужноAndroid выбрать mp3-файл
ответ
Я использую следующую команду, чтобы выбрать файл mp3:
Intent intent;
intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("audio/mpeg");
startActivityForResult(Intent.createChooser(intent, getString(R.string.select_audio_file_title)), REQ_CODE_PICK_SOUNDFILE);
, а затем вы можете получить Uri назад в onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQ_CODE_PICK_SOUNDFILE && resultCode == Activity.RESULT_OK){
if ((data != null) && (data.getData() != null)){
Uri audioFileUri = data.getData();
// Now you can use that Uri to get the file path, or upload it, ...
}
}
}
Я считаю, что выбор других типов аудиофайлов был бы вопросом установки дикой карты в MIME-типе, делая intent.setType("audio/*)
, хотя я не тестировал это.
Пожалуйста, дайте мне знать, если это работает для вас ;-)
Незначительные Поправка к ответу 2Dee в:
Intent audiofile_chooser_intent;
audiofile_chooser_intent = new Intent();
audiofile_chooser_intent.setAction(Intent.ACTION_GET_CONTENT);
audiofile_chooser_intent.setType("audio/*");
ActivityOptions options = ActivityOptions.makeScaleUpAnimation(view, 0,
0, view.getWidth(), view.getHeight());
startActivityForResult(Intent.createChooser(audiofile_chooser_intent, getString(R.string.select_audio_file_title)), RQS_OPEN_AUDIO_MP3, options.toBundle());
Toast("File Chooser initiated..");
Намерение внутри метода слушателя OnClick, чтобы начать FileChooser активность/Dialog
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == RQS_OPEN_AUDIO_MP3) {
Uri audioFileUri = data.getData();
String MP3Path = audioFileUri.getPath();
Toast(MP3Path);
}
}
}
Метод OnActivityResult для получения FilePath выбранного файла для последующего использования
Позвольте мне исправить это: вы «исправление» должны удалить расширение файла mpeg из типа файла, чтобы выбрать? Как это исправляет мой ответ? Как это улучшает его? Вы даже не знаете, что делает ваш код? Почему вы добавили ActivityOptions.makeScaleUpAnimation и почему необходимо выбрать mp3-файл? Так много вопросов, и я, вероятно, никогда не получу ответа. Ах, радости SO :-) – 2Dee
Вам понадобился год, чтобы заметить это: P @ 2Dee – grant
Чтобы открыть файл эксплорер, requestCode только целое число, так что для сакэ, пройти 1
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*"); // specify "audio/mp3" to filter only mp3 files
startActivityForResult(intent,1);
Настройка Media Player,
MediaPlayer player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
Fetch результата файл из проводника,
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
/*check whether you're working on correct request using requestCode , In this case 1*/
if(requestCode == 1 && resultCode == Activity.RESULT_OK){
audio = data.getData(); //declared above Uri audio;
Log.d("media", "onActivityResult: "+audio);
}
super.onActivityResult(requestCode, resultCode, data);
}
Start Воспроизведение аудио,
player.setDataSource(new FileInputStream(new File(audio.getPath())).getFD());
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
player.start();
}
});
player.prepareAsync();
Чтобы остановить аудио,
if(player.isPlaying())
player.stop();
Наконец, добавить разрешение в манифесте для чтения внешних файлов,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Добавьте виджеты контроллер и играть с методами MediaPlayer, чтобы создать настраиваемую MP3-плеер;)
Я пробую ваши решения, но не знаю, почему эта ошибка:/document/802: open failed: ENOENT (Нет такого файла или каталог) –
- 1. Android - Как выбрать контекст?
- 2. Android SQLite ВЫБРАТЬ Query
- 3. Android Dropdown (Выбрать) CSS
- 4. Как выбрать метод android для Android?
- 5. Как выбрать лучший Android-телефон для Android?
- 6. Android ListView: как выбрать элемент?
- 7. Android выбрать изображение из галереи
- 8. DatePicker MinDate можно выбрать - Android
- 9. Android DatePicker выбрать неправильную дату
- 10. Android выбрать конкретную ориентацию ландшафта
- 11. Android Spinner: Не удается выбрать
- 12. Android Studio - Невозможно выбрать объявление
- 13. Вставить и выбрать в Android
- 14. Android выбрать вкладку из активности
- 15. Android, как выбрать невидимый счетчик
- 16. Как выбрать папку в Android?
- 17. Как выбрать вход в Android?
- 18. Андроид для Android выбрать Whatsapp
- 19. Android - не выбрать поле EditText
- 20. Android файла выбрать из «Последние»
- 21. Android - вручную выбрать тип макета
- 22. Android сетка вид выбрать изображение на прокрутке автоматически выбрать изображение
- 23. Заставить пользователя выбрать одну фотографию в android
- 24. Android Fragment View не может выбрать макет
- 25. Как выбрать несколько изображений из галереи Android
- 26. Получить и выбрать контакты в android
- 27. Пользователь студии Android может выбрать цвет
- 28. Android - Как выбрать зону с нажатием кнопки?
- 29. Намерение выбрать камеру или галерею в Android
- 30. Как правильно выбрать строку в Android?
что такое REQ_CODE_PICK_SOUNDFILE –
Это код запроса, который используется как в startActivityForResult, так и inActivityResult, чтобы помочь определить, какой результат вы получаете (очень полезно, если вы можете начать различные действия, чтобы получить разные типы результатов t, например, один для выбора аудиофайлов, другой - для выбора или снятия картинки и т. д.). Официальная документация: http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, int) – 2Dee