「已注销」 2016-10-21 01:37 采纳率: 0%
浏览 1001

安卓音乐播放器 路径设置错误? 求帮忙看一下。。。

public class MainActivity extends Activity implements AdapterView.OnItemClickListener {
private MediaPlayer mediaPlayer;
private List musicList;
private int Index = -1;
private String MUSIC_PATH = new String("/storage/emulated/0/kgmusic/download");
ListView listView;

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        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.TRANSPARENT);
    }


    setContentView(R.layout.activity_main);
    mediaPlayer = new MediaPlayer();
    System.out.println(Environment.getExternalStorageDirectory().toString());
    findView();
    musiclist();
    start();
    stop();
    pause();
    lastmusic();
    nextMusic();
    listView.setOnItemClickListener(this);
    Log.e("KeyEvent", "KEYCODE_BACK");
    //    seekbar();
}

//获取按钮
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);
    viewHolder.seekBar = (SeekBar) findViewById(R.id.seekbar);
    viewHolder.current_time = (TextView) findViewById(R.id.current_time);
    viewHolder.total_time = (TextView) findViewById(R.id.total_time);
}

private void musiclist() {
    musicList = new ArrayList<>();
    File musicfile = new File(MUSIC_PATH);

    if (musicfile.listFiles(new MusicFilter()).length >= 0) {
        for (File file : musicfile.listFiles(new MusicFilter())) {
            musicList.add(file.getName().replace(".mp3",""));
        }
        ListAdapter listAdapter = new jukeboxv2.bmvod.net.testplayer.ListAdapter(this,musicList);
        listView.setAdapter(listAdapter);
    }
}


private void playmusic(String path) {

    try {
        mediaPlayer.reset();
        mediaPlayer.setDataSource(path);
        mediaPlayer.prepare();
        mediaPlayer.start();
    } catch (IOException e) {
        e.printStackTrace();
    }


    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {

            nextMusic();
        }
    });
}

private void stop() {
    viewHolder.stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mediaPlayer.isPlaying()) {
                mediaPlayer.stop();
            }
        }
    });
}

private void start() {
    viewHolder.start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            playmusic(MUSIC_PATH + musicList.get(Index));
        }
    });
}

private void pause() {
    viewHolder.pause.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mediaPlayer.isPlaying()) {
                mediaPlayer.pause();
            } else {
                mediaPlayer.start();
            }
        }
    });
}

private void lastmusic() {
    viewHolder.last.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (Index != 0) {
                if (--Index >= 0) {
                    Index = musicList.size();
                } else {
                    playmusic(MUSIC_PATH + musicList.get(Index));
                }
            } else {
                playmusic(MUSIC_PATH + musicList.get(Index));
            }
        }
    });

}

private void nextMusic() {
    viewHolder.next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (++Index > musicList.size()) {
                Index = 0;
            } else {
                playmusic(MUSIC_PATH + musicList.get(Index));
            }
        }
    });

}

private void seekbar() {
    int progress = viewHolder.seekBar.getProgress();
    int musicmaxlength = mediaPlayer.getDuration();
    int seekbarmax = viewHolder.seekBar.getMax();
    mediaPlayer.seekTo(musicmaxlength * progress / seekbarmax);
}


@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);
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {//med
    Index = position;
    playmusic(MUSIC_PATH + musicList.get(Index));

}

java.io.IOException: setDataSource failed.
错误
请问是什么原因呢?

  • 写回答

5条回答 默认 最新

  • qq_23113827 2016-10-21 01:39
    关注

    代码这么长。。。谁看啊,你是在播放时错误么?这显示流错误可能是获取音乐路径有问题,你查查

    评论

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)