public class MainActivity extends Activity {
private MediaPlayer mediaPlayer;
private List musicList;
private int Index = 0;
private String MUSIC_PATH = new String(Environment.getExternalStorageDirectory().toString());
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer = new MediaPlayer();
System.out.println(Environment.getExternalStorageDirectory().toString());
findView();
musiclist();
}
//获取按钮
void findView() {
viewHolder.start = (Button) findViewById(R.id.start);
viewHolder.stop = (Button) findViewById(R.id.stop);
viewHolder.next = (Button) findViewById(R.id.next);
viewHolder.pause = (Button) findViewById(R.id.pause);
viewHolder.last = (Button) findViewById(R.id.last);
listView = (ListView) findViewById(R.id.android_list);
}
private void musiclist() {
musicList = new ArrayList<>();
File musicfile = new File(MUSIC_PATH);
// musicList.add(musicfile.getName());
if (musicfile.listFiles(new MusicFilter()).length > 0) {
for (File file : musicfile.listFiles(new MusicFilter())) {
musicList.add(file.getName());
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.musicitme, musicList);
listView.setAdapter(adapter);
}
}
private void playmusic(String path) throws IOException {
mediaPlayer.reset();
mediaPlayer.prepare();
mediaPlayer.setDataSource(path);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
try {
nextMusic();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
private void nextMusic() throws IOException {
if (++Index > musicList.size()) {
Index = 0;
} else {
playmusic(MUSIC_PATH + musicList.get(Index));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
网上的源码 应该是musiclist函数里的方法有错误NullPointerException: Attempt to get length of null array如何正确的获取到文件名字呢?