Ich bin Anfänger in android Entwicklung zu spielen und ich entwickle ein Musik-App und ich habe die ganze SD-Karte Musik in der Liste abgefragt, aber ich bin nicht in der Lage den Song zu spielen durch seine Name oder ID. Ich habe es in listView aufgelistet und durch Klicken auf das ausgewählte Element wird seinen Namen angezeigt, welches Lied ich ausgewählt, aber nicht spielen mit Mediaplayer-Klasse. Bitte hilf mir, es zu lösen.kann nicht Musik in android
1. Dies ist Erste Java Datei für Liste der Songs von SD-Karte bekommen:
public class MusicAppList erstreckt Aktivität {
TextView tv;
ContentResolver cr;
Cursor cs;
Uri uri;
ListView lv;
String tname,csong;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_music_app_list);
lv=(ListView)findViewById(R.id.songslist);
Songs();
}
public void Songs(){
cr=getContentResolver();
uri=android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
cs=cr.query(uri,null,null, null,"title ASC");
final ArrayList<String> list=new ArrayList<String>();
while(cs.moveToNext()){
list.add(cs.getString(cs.getColumnIndex(android.provider.MediaStore.Audio.Media.TITLE)));
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getApplicationContext(),R.layout.mlistinterface,list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
csong=(String)parent.getItemAtPosition(position);
Intent i1=new Intent(getApplicationContext(),MusicPlaying.class);
Bundle b=new Bundle();
b.putInt("pos", position);
b.putString("song", csong);
b.putStringArrayList("songlist", list);
i1.putExtras(b);
startActivity(i1);
}
}); }}
2. Unten ist die Zweite Java Datei wo ich versuche, den Song zu spielen.
public class MusicPlaying Aktivität erstreckt {
TextView tv;
ImageView pre,nxt,play;
ArrayList<String>songList;
String name;
private MediaPlayer mp;
String song;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_music_playing);
tv=(TextView)findViewById(R.id.songname);
pre=(ImageView)findViewById(R.id.previous);
nxt=(ImageView)findViewById(R.id.next);
play=(ImageView)findViewById(R.id.play);
tv.setSelected(true);
Bundle bb=getIntent().getExtras();
name=bb.getString("song");
tv.setText(String.valueOf(name));
songList=(ArrayList)bb.getStringArrayList("songlist") ;
int pos=bb.getInt("pos");
mp=new MediaPlayer();
Uri u=Uri.parse(songList.get(pos));
try{
mp.setDataSource(getApplicationContext(), u);
mp.prepareAsync();
mp.start();
}
catch(Exception e){
Log.e("ErrorPlaying", "Unable to get Reference of the song");
}
}}
3. Logcat Fehler ist als: -
11-15 15: 57: 13,503: E/Android Runtime (996): FATAL AUSNAHME: Haupt 11-15 15: 57: 13,503: E/Android Runtime (996): Prozess: com.example.musicapp, PID: 996
11-15 15: 57: 13,503: E/Android Runtime (996): java .lang.RuntimeException: Die Aktivität ComponentInfo konnte nicht gestartet werden {com.example.musicapp/com.example.musicapp.MusicPlaying}: java.lang.NullPointerException: Versuch, die virtuelle Methode 'void android.media.MediaPlayer.prepareAsync()' für eine Nullobjekt-Referenz aufzurufen 11-15 15: 57: 13.503: E/AndroidRuntime (996): bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2455) 11-15 15: 57: 13.503: E/AndroidRuntime (996): at android.app.ActivityThread. handleLaunchActivity (ActivityThread.java:2517) 11-15 15: 57: 13.503: E/AndroidRuntime (996): um android.app.ActivityThread.access $ 800 (ActivityThread.java:162) 11-15 15: 57: 13.503 : E/AndroidRuntime (996): bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1412) 11-15 15: 57: 13.503: E/AndroidRuntime (996): bei android.os.Handler.dispatchMessage (Handler.java:106) 11-15 15: 57: 13.503: E/AndroidRuntime (996): um android.os.Looper.loop (Looper.java:189) 11-15 15: 57: 13.503: E/AndroidRuntime (996): bei android.app.ActivityThread.main (ActivityThread.java:5529) 11-15 15: 57: 13.503: E/AndroidRuntime (996): at java.lang.reflect.Method.invoke (systemeigene Methode) 11-15 15: 57: 13.503: E/AndroidRuntime (996): at java.lang.reflect .Method.invoke (Methode.java:372) 11-15 15: 57: 13.503: E/AndroidRuntime (996): um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 950) 11-15 15: 57: 13.503: E/AndroidRuntime (996): unter com.android.internal.os.ZygoteInit.main (ZygoteInit.java:745) 11-15 15: 57: 13.503: E/AndroidRuntime (996): Verursacht von: java.lang.NullPointerException: Versuch, die virtuelle Methode 'void android.media.MediaPlayer.prepareAsync()' für eine Nullobjekt-Referenz aufzurufen 11-15 15: 57: 13.50 3: E/AndroidRuntime (996): bei com.example.musicapp.MusicPlaying.onCreate (MusicPlaying.java:60) 11-15 15: 57: 13.503: E/AndroidRuntime (996): bei android.app.Activity. performCreate (Activity.java:5966) 11-15 15: 57: 13.503: E/AndroidRuntime (996): bei android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1106) 11-15 15: 57: 13,503: E/Android Runtime (996): bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2408)
Geben Sie einen Code ein, den Sie haben. Teid –
Sie können den Code in der Frage als Text formatieren, damit die Leute sie kopieren und einfügen können, um sie zu testen und Ihnen zu helfen. Bitte bedenken Sie, Ihre Frage zu bearbeiten und den Code als Text (und formatiert) einzufügen. – Tom
Es wird sehr schwierig sein, Ihnen zu helfen, es sei denn: 1) Sie werden etwas Code von MusicPlaying onCreate veröffentlichen: Sind Sie sicher, dass die Intent-Daten korrekt abgerufen werden? 2) Sie sollten auch einige Logcat veröffentlichen: Welche Ausnahmen fangen Sie? 3) besser zu kopieren und fügen Sie Ihren Code statt Screenshots, wie Tom bereits hingewiesen – c0rtexx