package com.example.administrator.musicplayer;
import android.annotation.TargetApi;
import android.app.Activity;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
private ListView listView;
private MusicList_Adapter adapter_musicList;
private List list;
String MUSIC_PATH = String.valueOf(Environment.getExternalStorageDirectory());
private Button button;
MediaPlayer mediaPlayer = new MediaPlayer();
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivity.this.requestWindowFeature(Window.FEATURE_NO_TITLE);
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.parseColor("#87CEEB"));
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.start);
System.out.println(Environment.getExternalStorageDirectory());
listView = (ListView) findViewById(R.id.music_list);
list = new ArrayList<>();
musiclist();
adapter_musicList = new MusicList_Adapter(this, list);
listView.setAdapter(adapter_musicList);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
playmusic(MUSIC_PATH + list.get(position));
}
});
}
private void playmusic(String path) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(path);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
private void musiclist() {
File music = new File(MUSIC_PATH);
if (music.listFiles(new MusicFilter()).length > 0) {
for (File file : music.listFiles(new MusicFilter())) {
list.add(file.getName());
}
}
}
}
上面是全部代码 SD卡的读写权限也都加上了 然后点列表的时候就报错
java.io.IOException: setDataSource failed.
求解决。。。