Как воспроизвести песню, загруженную из внутренней памяти - PullRequest
0 голосов
/ 28 мая 2020

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

Помогите мне решить эту проблему.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    view=  inflater.inflate(R.layout.fragment_music, container, false);
    if(ContextCompat.checkSelfPermission(getContext(), Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
        if(ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)){
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSTION_REQUEST);

        } else {
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSTION_REQUEST);
        }
    } else {
        doStuff();
    }

    return view;
}
public void doStuff(){
    ListView listView = view.findViewById(R.id.musicrecyclerview);
    musicModes = new ArrayList<>();
    getMusic();
    ArrayAdapter adapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, musicModes);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent =new Intent();
            intent.setAction(Intent.ACTION_VIEW);

        }
    });
}
public void getMusic(){
    ContentResolver contentResolver = getActivity().getApplicationContext().getContentResolver();
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor mycursor = contentResolver.query(uri, null, null, null, null);
    if(mycursor != null && mycursor.moveToFirst()){
        songtitle = mycursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
        songsize = mycursor.getColumnIndex(MediaStore.Audio.Media.DATA);
        column_index = mycursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
        do{
            currenttitle = mycursor.getString(songtitle);
            currentsize = mycursor.getString(songsize);
            musicModes.add(currenttitle+ "\n"+ currentsize);
        } while(mycursor.moveToNext());
    }
}

1 Ответ

0 голосов
/ 28 мая 2020

Попробуйте это:

int dataIndex= mycursor.getColumnIndex(MediaStore.Audio.Media.DATA);
String data =  mycursor.getString(dataIndex)
Uri uri= Uri.parse("file:///" + data);

MediaPlayer player= new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDataSource(getApplicationContext(), uri);
player.prepare();
player.start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...