で音楽を再生すると、私は音楽アプリを開発していると私は、リスト内のすべてのSDカード音楽を照会しているが、私はを通じて選択した曲を再生することができませんの名前またはIDです。 listViewにリストしました。選択した項目をクリックすると、選択した曲の名前が表示されますが、mediaplayerクラスを使用して再生していません。それを解決するために私を助けてください。できませんが、私は<strong>アンドロイド</strong>開発の初心者です
1.これは、SDカードからの曲のリストを取得するためのまずJavaファイルです:
パブリッククラスMusicAppListは、アクティビティの下{
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.セカンドJavaのですが拡張ファイルここで私は曲を演奏しようとしています。
パブリッククラスMusicPlayingアクティビティを拡張{
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");
}
}}
Logcatエラー通りである: -
11-15 15:57:13.503:E/AndroidRuntime(996):致命的な例外:メイン 11-15 15:57:13.503:E/AndroidRuntime(996):プロセス:com.example.musicapp、PID:996
11-15 15:57:13.503:E/AndroidRuntime(996):java .lang.RuntimeException:アクティビティを開始できませんComponentInfo {com.example.musicapp/com.example.musicapp.MusicPlaying}:java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'void android.media.MediaPlayer.prepareAsync()'を呼び出そうとしました 11-15 15: 57:13.503:E/AndroidRuntime(996):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2455) 11-15 15:57:13.503:E/AndroidRuntime(996):android.app.ActivityThread。 handleLaunchActivity(ActivityThread.java:2517) 11-15 15:57:13.503:E/AndroidRuntime(996):android.app.ActivityThread.access $ 800(ActivityThread.java:162) 11-15 15:57:13.503 :E/AndroidRuntime(996):android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1412) 11-15 15:57:13.503:E/AndroidRuntime(996):android.os.Handler.dispatchMessage (Handler.java:106) 11-15 15:57:13.503:E/AndroidRuntime(996):at android.os.Looper.loop(Looper.java:189) 11-15 15:57:13.503:E/AndroidRuntime(996):android.app.ActivityThread.main(ActivityThread.java:5529) 11-15 15:57:13.503:E/AndroidRuntime(996):java.lang.reflect.Method.invoke(ネイティブメソッド) 11-15 15:57:13.503:E/AndroidRuntime(996):java.lang.reflect .Method.invoke(Method.java:372) 11-15 15:57:13.503:E/AndroidRuntime(996):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:950) 11-15 15:57:13.503:E/AndroidRuntime(996):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745) 11-15 15:57:13.503:E/AndroidRuntime(996) ):原因:java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'void android.media.MediaPlayer.prepareAsync()'を呼び出そうとしました 11-15 15:57:13.50 3:E/AndroidRuntime(996):com.example.musicapp.MusicPlaying.onCreate(MusicPlaying.java:60) 11-15 15:57:13.503:E/AndroidRuntime(996):android.app.Activity。 performCreate(Activity.java:5966) 11-15 15:57:13.503:E/AndroidRuntime(996):android.app。Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 11-15 15:57:13.503:E/AndroidRuntime(996):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2408)
あなたが持っているコードを入れよう –
質問のコードをテキストとして書式設定することができます。そのため、人々はコピー&ペーストしてテストして手助けをすることができます。あなたの質問を編集し、コードをテキストとして挿入してフォーマットしてください。 – Tom
1)MusicPlayingからいくつかのコードを投稿しますonCreate:意図データが正しく検索されているかどうかを確認してください。 2)logcatを投稿する必要があります:あなたはどのような例外を捕まえていますか? 3)スクリーンショットを撮るのではなく、コードをコピーして貼り付けるほうが良いとTomがすでに指摘しているように – c0rtexx