Мне удалось получить код для вывода списка всех песен MP3 из хранилища, но я не могу воспроизвести его при выборе элемента списка, пробовал несколько других способов воспроизведения мультимедиа, но я все еще не могу воспроизвести его
вот код
public class MainActivity extends AppCompatActivity {
Context context;
int Title;
public static final int RUNTIME_PERMISSION_CODE = 7;
String[] ListElements = new String[] { };
ListView listView;
String SongTitle;
MediaPlayer mMediaPlayer;
List<String> ListElementsArrayList ;
ArrayAdapter<String> adapter ;
ContentResolver contentResolver;
Cursor cursor;
Uri uri;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView1);
button = (Button)findViewById(R.id.button);
context = getApplicationContext();
ListElementsArrayList = new ArrayList<>(Arrays.asList(ListElements));
adapter = new ArrayAdapter<String>
(MainActivity.this, android.R.layout.simple_list_item_1, ListElementsArrayList);
// Requesting run time permission for Read External Storage.
AndroidRuntimePermission();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
GetAllMediaMp3Files();
listView.setAdapter(adapter);
}
});
// ListView on item selected listener.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
// Showing ListView Item Click Value using Toast.
Toast.makeText(MainActivity.this,parent.getAdapter().getItem(position).toString(),Toast.LENGTH_LONG).show();
String filename =cursor.getString(Title);
try {
if (mMediaPlayer.isPlaying()) {
mMediaPlayer.reset();
}
mMediaPlayer.setDataSource(filename);
mMediaPlayer.prepare();
mMediaPlayer.start();
} catch (Exception e) {
}
}
});
}
public void GetAllMediaMp3Files(){
contentResolver = context.getContentResolver();
uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
cursor = contentResolver.query(
uri, // Uri
null,
null,
null,
null
);
if (cursor == null) {
Toast.makeText(MainActivity.this,"Something Went Wrong.", Toast.LENGTH_LONG);
} else if (!cursor.moveToFirst()) {
Toast.makeText(MainActivity.this,"No Music Found on SD Card.", Toast.LENGTH_LONG);
}
else {
Title = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
//Getting Song ID From Cursor.
//int id = cursor.getColumnIndex(MediaStore.Audio.Media._ID);
do {
// You can also get the Song ID using cursor.getLong(id).
//long SongID = cursor.getLong(id);
String SongTitle = cursor.getString(Title);
// Adding Media File Names to ListElementsArrayList.
ListElementsArrayList.add(SongTitle);
} while (cursor.moveToNext());
}
}
// Creating Runtime permission function.
public void AndroidRuntimePermission(){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
if(shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)){
AlertDialog.Builder alert_builder = new AlertDialog.Builder(MainActivity.this);
alert_builder.setMessage("External Storage Permission is Required.");
alert_builder.setTitle("Please Grant Permission.");
alert_builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ActivityCompat.requestPermissions(
MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
RUNTIME_PERMISSION_CODE
);
}
});
alert_builder.setNeutralButton("Cancel",null);
AlertDialog dialog = alert_builder.create();
dialog.show();
}
else {
ActivityCompat.requestPermissions(
MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
RUNTIME_PERMISSION_CODE
);
}
}else {
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
switch(requestCode){
case RUNTIME_PERMISSION_CODE:{
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
}
else {
}
}
}
}
}
Я ожидаю, что музыка будет воспроизводиться