2016-08-09 4 views
0

Итак, я пытаюсь создать базовое музыкальное приложение на Android, которое отображает песни устройства в режиме просмотра списка, и когда один отбирает определенную песню, приложение должно воспроизводить ее в другом действии.Передача мультимедиа из одной активности в другую

До сих пор мне удалось извлечь песни с SD-карты, создать второе действие для воспроизведения песни (которая предоставляется кнопкой воспроизведения/паузы и стрелкой).

Но как бы передать песню, прослушанную пользователем в виде списка, для второго действия, чтобы воспроизвести ее.

ответ

0

Вы можете использовать либо одиночки в этом случае, так что вы можете создать SongManager, который будет вашим синглтон, которые хранят свою песню и играть во второй активности или вы можете показать ListView в фрагменте так что ваши SongManager НЕ singleton, но просто простой объект, управляемый активностью, которая показывает фрагмент, когда вы хотите воспроизвести песню, вы можете открыть другой фрагмент, который попросит песню воспроизвести ее.

Так

ACTIVITY (create the object `SongManager`) 
    FRAGMENT A (ListView) 
    FRAGMENT B (Play) 
0

Я хотел бы предложить просто передавая имя файла в виде строки, т.е.

Intent intent = new Intent(ActivityA.this, ActivityB.class); 
intent.putExtra("SongKey", songFileName); 
startActivity(intent); 
+0

Какую функцию на MediaPlayer следует использовать для воспроизведения песни, которую я пройду через Intent (по вашему рекомендованному методу). Я хочу сказать, что теперь я использую папку raw и использую функцию create (..) класса MediaPlayer. Теперь, когда я передам название песни, какую функцию я должен использовать для воспроизведения этой песни –

+0

Если вы используете MediaPlayer, обратитесь к ссылке: https://developer.android.com/reference/android/ media/MediaPlayer.html особый комплектDataSource(). Вы можете просто поместить абсолютный путь файла в качестве параметра setDataSource(). Но не забудьте выполнить все остальные шаги для инициализации MediaPlayer и воспроизведения. – Isaac

+0

https://stackoverflow.com/questions/38880528/media-player-in-android-using-mediastore Это проблема, с которой я столкнулся. Пожалуйста, взгляните на это. Я пробовал читать ресурс, который вы предоставили, но не смог полностью понять его. –

0

вам нужно разбор mp3 пути к новой деятельности, поэтому новая деятельность может играть свою песню

   Intent intent = new Intent(getActivity(),Play.class); 
        intent.putExtra("title", titleX); 
        intent.putExtra("path", mp3path); 
        startActivity(intent); 

затем в play.class Деятельность

 title = getIntent().getStringExtra("title"); 
     location = getIntent().getStringExtra("path"); 
     //other function 
     mediaPlayer.setDataSource(location); 
     mediaPlayer.prepare(); 
+0

Но как мне получить путь. Я борюсь с методом getExternalStorageDirecotry(), чтобы получить путь к песне. Правильно ли это? –

+0

, если вы можете извлечь песни с SD-карты, чтобы вы могли получить путь от нее. \t \t \t \t \t String fullpath = cur.getString (cur.getColumnIndex (MediaStore.Audio.Media.DATA)); – Muklas

+0

, а затем я должен передать эту переменную полного пути другому намерению через Bundle. 'String filePath =" somepath/somefile.mp3 "; Файл файла = новый Файл (filePath); FileInputStream inputStream = new FileInputStream (файл); mediaPlayer.setDataSource (inputStream.getFD()); inputStream.close(); ' и затем используйте этот код. –