Ich versuche, die Musikdaten abzurufen, die Daten in eine Reihe Liste speichernd und die Datenschnur in uri umwandelt und es benutze, um die Musik aber die App zu spielen, die abstürzt, wenn ich klicke. Listenansicht Artikel wird die Musik durch ihre uri spielen hier ist mein Code `Wie man Musik durch sein uri
public class Mediafileinfo {
private String title;
private String artist;
private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
` Dies ist die Klasse, wo ich meine Mediendaten speichere und ich versuche, wie diese zu spielen, wo ich bin falsch machen
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Mediafileinfo item = new Mediafileinfo();
Uri myUri = Uri.parse(item.getData());
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(String.valueOf(myUri));
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();
}
});
meine Haupttätigkeit Klasse wurden ich erhalte die Daten
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
External();
ListView listView = (ListView) findViewById(R.id.listView);
ArrayAdapter arrayAdapter = new CustomeAdapter(this, audioList);
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Mediafileinfo item = new Mediafileinfo();
Uri myUri = Uri.parse(item.getData());
mediaPlayer = new MediaPlayer();
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(MainActivity.this,myUri);
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();
}
});
}
private void External() {
try {
String[] proj = {MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.DATA};// Can include more data for more details and check it.
String selection = MediaStore.Audio.Media.DURATION + ">=90000";
String[] selectionArgs = null;
String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
Cursor audioCursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, selection, selectionArgs, sortOrder);
if (audioCursor != null) {
if (audioCursor.moveToFirst()) {
do {
int audioTitle = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
int audioartist = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);
int audioalbum = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION);
int audiodata= audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
Mediafileinfo info = new Mediafileinfo();
info.setData(audioCursor.getString(audiodata));
info.setTitle(audioCursor.getString(audioTitle));
info.setAlbum(audioCursor.getLong(audioalbum));
info.setArtist(audioCursor.getString(audioartist));
audioList.add(info);
} while (audioCursor.moveToNext());
}
}
audioCursor.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
mein custome Adapter
public class CustomeAdapter extends ArrayAdapter {
public CustomeAdapter(Context context, ArrayList<Mediafileinfo> audioList) {
super(context,R.layout.custome,audioList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflate=LayoutInflater.from(getContext());
View v=inflate.inflate(R.layout.custome,parent,false);
Mediafileinfo item = (Mediafileinfo) getItem(position);
TextView text1 = (TextView) v.findViewById(R.id.textView);
text1.setText(item.getData());
TextView text2 = (TextView) v.findViewById(R.id.textView2);
text2.setText(item.getArtist());
TextView text3=(TextView)v.findViewById(R.id.textView3);
text3.setText(String.format("%02d:%02d",
TimeUnit.MILLISECONDS.toMinutes(item.getAlbum()),
TimeUnit.MILLISECONDS.toSeconds(item.getAlbum()) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(item.getAlbum()))));
return v;
}
}
Auf diese Weise ich die Daten immer bin und wie ich es spielen kann, wenn Einzelteil geklickt
Was ist das Fehlerprotokoll beheben? – Shaishav
Java null Punkt Ausnahme uri Zeichenfolge – SAVVY
überprüfen [http://stackoverflow.com/questions/16715003/simple-mediaplayer-play-mp3-from-file-path] – ashutiwari4