「已注销」 2016-10-22 15:04 采纳率: 0%
浏览 981

音乐播放器 路径设置错误 。。求帮忙

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.
求解决。。。

  • 写回答

1条回答 默认 最新

  • devmiao 2016-10-22 15:46
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)