「已注销」 2016-10-17 08:43 采纳率: 0%
浏览 928

安卓音乐播放器获取文件名出错 求指导

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如何正确的获取到文件名字呢?

  • 写回答

3条回答 默认 最新

  • Yang_Farley 2016-10-17 08:58
    关注

    System.out.println(Environment.getExternalStorageDirectory().toString());这个路径你打印出来了么?是不是有效路径?

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料