获取手机sd卡中的音乐并点击播放
来源:互联网 发布:ai人工智能设计软件 编辑:程序博客网 时间:2024/05/21 21:46
package lipengfei.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import java.io.File;import java.util.ArrayList;import java.util.HashMap;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Environment;import android.os.Handler;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.Window;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements OnClickListener { private static final String LOG = "MP3ListActivity"; private ListView lv; private SeekBar seekBar; private Button modelButton; private Button backButton; private Button pauseButton; private Button nextButton; private TextView nameText; private ArrayList<HashMap<String, String>> musicList; private ArrayList<String> musicpathlist; private String path = Environment.getExternalStorageDirectory().getPath(); private String musicpath; private String musicname; private MediaPlayer mediaPlayer; public int songNum; // 当前播放的歌曲在List中的下标 private boolean isStartTrackingTouch; private Handler handler = new Handler(); private int Sequence = 1;//顺序播放 private int Shuffle = 2;//随机播放 private Button fristButton; private Button secondButton; String music = "/Music"; String mp3 = "/mp3"; int i = 0; int flag = 0; @Override protected void onCreate(Bundle savedInstanceState) { this.requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); seekBar = (SeekBar) findViewById(R.id.seekBar); modelButton = (Button) findViewById(R.id.model); backButton = (Button) findViewById(R.id.back); pauseButton = (Button) findViewById(R.id.pause); nextButton = (Button) findViewById(R.id.next); nameText = (TextView) findViewById(R.id.name); fristButton = (Button) findViewById(R.id.list1); secondButton = (Button) findViewById(R.id.list2); musicList = new ArrayList<HashMap<String, String>>(); musicpathlist=new ArrayList<String>(); mediaPlayer = new MediaPlayer(); //获得视频列表,默认显示放松音乐 mp3List(music); fristButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //清空列表和保存的地址信息 musicpathlist.clear(); musicList.clear(); //获得视频列表 mp3List(music); } }); secondButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //清空列表和保存的地址信息 musicpathlist.clear(); musicList.clear(); //冥想列表 mp3List(mp3); } }); pauseButton.setOnClickListener(this); backButton.setOnClickListener(this); modelButton.setOnClickListener(this); nextButton.setOnClickListener(this); //进度条监听器 seekBar.setOnSeekBarChangeListener(new MySeekBarListener()); nextButton.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent arg1) { // TODO Auto-generated method stub if(arg1.getAction() == MotionEvent.ACTION_DOWN){ } else if(arg1.getAction() == MotionEvent.ACTION_UP){ } return false; } }); backButton.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { // TODO Auto-generated method stub if(event.getAction() == MotionEvent.ACTION_DOWN){ } else if(event.getAction() == MotionEvent.ACTION_UP){ } return false; } });// pauseButton.setOnTouchListener(new OnTouchListener() {//// @Override// public boolean onTouch(View arg0, MotionEvent arg1) {// // TODO Auto-generated method stub// int i = 0;// i++;// if(i % 2 == 0){//// }// return false;// }// }); } //获得视频列表 private void mp3List(String music){ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // File path = Environment.getExternalStorageDirectory();// 获得SD卡路径 System.out.println("path-------》" + path); //File[] files = path.listFiles();// 读取 String musicPath = path + music; getFileName(musicPath); //视频列表 Log.i(LOG, musicPath); } SimpleAdapter adapter = new SimpleAdapter(this, musicList, R.layout.sd_list, new String[] { "name" }, new int[] { R.id.mp4 }); lv.setAdapter(adapter); for (int i = 0; i < musicList.size(); i++) { Log.i(LOG, "list. name: " + musicList.get(i)); } lv.setOnItemClickListener(new ListView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View view, int position,long id) {// //顺序播放// if(flag == 0){// songNum = position;// }// //随机播放// else if(flag == 1){// songNum = (int)(Math.random()*musicList.size());;// } songNum = position; initMediaPlayer(songNum); } }); } //仅搜索当前目录下的文件 private void getFileName(String url) { File files = new File(url); File[] file = files.listFiles(); //先判断目录是否为空,否则会报空指针 if (files != null) { for (File f : file) { String fileName = f.getName(); if (fileName.endsWith(".mp3")||fileName.endsWith(".wav")) { HashMap<String, String> map = new HashMap<String, String>(); String s = fileName.substring(0,fileName.lastIndexOf(".")).toString(); //获取文件的地址 musicpath = f.getPath(); Log.i(LOG, "文件名mp3或wav:: " + s); map.put("name", fileName); // map.put("mp3", f.getName()); musicpathlist.add(musicpath); musicList.add(map); } } } } //进度条监控 private final class MySeekBarListener implements OnSeekBarChangeListener { //移动触发 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } //起始触发 public void onStartTrackingTouch(SeekBar seekBar) { isStartTrackingTouch = true; } //结束触发 public void onStopTrackingTouch(SeekBar seekBar) { mediaPlayer.seekTo(seekBar.getProgress()); isStartTrackingTouch = false; } } //如果是顺序播放 private void initMediaPlayer(int songNum){ musicname = musicpathlist.get(songNum); Log.i(LOG, musicname); if (musicname != null) { try { mediaPlayer.reset(); //重置多媒体 //指定音频文件地址 mediaPlayer.setDataSource(musicname); //这是一个地址 String path = musicpathlist.get(songNum); String Text[] = path.split("/"); Log.i(LOG, Text[5]); //设置当前播放文件 nameText.setText(Text[Text.length - 1]); Log.i(LOG, "播放"); //准备播放 mediaPlayer.prepare(); start();// if (!mediaPlayer.isPlaying()) {// mediaPlayer.start();// System.out.println("开始播放");// } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.pause: Toast.makeText(getApplicationContext(), "暂停", Toast.LENGTH_SHORT).show(); pause(); break; case R.id.next: next(); break; case R.id.back: back(); break; case R.id.model: i++; if(i % 2 == 1){ Toast.makeText(getApplicationContext(), "随机播放", Toast.LENGTH_SHORT).show(); //产生一个随机数// songNum = (int)(Math.random()*musicList.size());// System.out.println("song---" + songNum);// initMediaPlayer(songNum); //随机播放falg flag = 1; } else{ Toast.makeText(getApplicationContext(), "循环播放", Toast.LENGTH_SHORT).show(); //循环播放 flag = 0; } break; default: break; } } public void start() { try { mediaPlayer.start();//开始播放 //设置进度条长度 seekBar.setMax(mediaPlayer.getDuration()); //发送一个Runnable, handler收到之后就会执行run()方法 handler.post(new Runnable() { public void run() { // 更新进度条状态 if (!isStartTrackingTouch) //获取当前播放音乐的位置 seekBar.setProgress(mediaPlayer.getCurrentPosition()); // 1秒之后再次发送 handler.postDelayed(this, 1000); } }); //setOnCompletionListener 当当前多媒体对象播放完成时发生的事件 mediaPlayer.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer arg0) { next();//如果当前歌曲播放完毕,自动播放下一首. } }); } catch (Exception e) { Log.v("MusicService", e.getMessage()); } } public void next() { Toast.makeText(getApplicationContext(), "下一首", Toast.LENGTH_SHORT).show(); if(flag == 0){ songNum = songNum == musicList.size() - 1 ? 0 : songNum + 1; } else if(flag == 1){ songNum = (int)(Math.random()*musicList.size()); } initMediaPlayer(songNum); } public void back() { Toast.makeText(getApplicationContext(), "上一首", Toast.LENGTH_SHORT).show(); if(flag == 0){ //songNum = songNum == 0 ? musicList.size() - 1 : songNum - 1; songNum = songNum - 1 < 0 ? musicList.size() - 1 : songNum - 1; } else if(flag == 1){ songNum = (int)(Math.random()*musicList.size()); } initMediaPlayer(songNum); } public void pause() { if (mediaPlayer.isPlaying()) { Toast.makeText(getApplicationContext(), "继续", Toast.LENGTH_SHORT).show(); mediaPlayer.pause(); } else mediaPlayer.start(); } public void stop() { if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.stop(); //mediaPlayer.release(); } }}
阅读全文
0 0
- 获取手机sd卡中的音乐并点击播放
- SD卡播放音乐
- Android Media(多媒体)获取手机内存卡下的音乐并播放
- 获取Android手机中的所有的可用音乐播放器
- android获取手机和sd卡上音乐列表
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
- FPGA实现SD卡音乐播放
- 上传音乐到Android模拟器的SD卡,并在Android模拟器上播放
- 利用Android的媒体库,遍历SD卡中的音乐文件,并用Service制作简单的音乐播放
- 手机SD卡的获取
- 实现点击音乐文件跳转到音乐播放器并自动播放音乐
- 点击按钮播放音乐
- 时间戳获取
- 【Java面试题】之CAS原理深度分析
- spring的value标签获取不值原样输出${}
- 除了助长“假新闻”的嚣张气焰,AI还可以为真正的新闻出把力
- faster rcnn 训练自己的数据(python)
- 获取手机sd卡中的音乐并点击播放
- VIM 个人常用快捷键总结
- spark on yarn 的那些坑
- html5 video标签嵌入视频
- 深入理解Spring MVC 思想
- 网康上网行为管理NI3200-40
- 《C专家编程》5-6章阅读收获
- 机器学习:吴恩达Coursera机器学习课后作业答案MATLAB和Python版本分享
- Java 反射的作用