`

Android MP3音乐播放器总结

阅读更多



    经过五六天的努力,我的音乐播放器终于初步完成了,在过程中对Android有了进一步的了解。以下是我的播放器实现的功能:

      1.上一曲,下一曲 ,随机播放          2.暂停,播放

      3.时间,进度条随歌曲播放改变       4.歌词歌名的显示

      5.来电暂停,挂断继续                     6.实现后台播放

      7.能遍历内存卡所有歌曲并显示出歌曲信息

      8.界面的跳转                                   9.实现摇晃一下换歌

  

下面介绍一下其中的几个功能:

    一.  歌词的实现

       1.首先是从内出卡获取歌词

          遍历内存卡,将文件都取出在判断文件类型,将包含.lrc的文件的信息保存到一个list容器中 创建一个file对象,获取当前歌曲的歌词信息

            

//获取歌词
	public void findlrc(String path){  
	    //创建一个file对象   
	    File file=new File(path);  
	      if(file.exists()){        
	        if(file.isFile()){            
	           if(file.getName().contains(".lrc")){           //获取后缀为lrc的文件           
	                String s=file.getAbsolutePath();  
	                  Map<String,Object> map=new HashMap<String,Object>();  
	                 map.put("url",s );  
	                 map.put("title", file.getName().substring(0, file.getName().length()-".lrc".length()));  
	                    list_lrc.add(map);          
	           }
	      }  
	          else if(file.isDirectory()){                  
	              //如果是文件夹,就要遍历文件夹下的所有文件或目录   
	             //创建一个File数组   
	             File[] files=file.listFiles();  
	              if(files!=null){                      
	                 for(File f:files){                        
	                    //递归调用自身   
	                      findlrc(f.getAbsolutePath());  
	                 }  
	             }  
	          }  
	     }  
	}

 

 

    2.将当前所选歌曲的歌词获取

       将当前歌曲名到list中寻找与之匹配的title;若有匹配的这将歌词文件封装成文件流,再调用readLine()方法按行读取,并将文件前端的时间信息分离出来保存到time_list中(要转换格式)。否则显示“歌词不存在”

  

public void song(){
		for(int i=0;i<PlayMusicActivity.list_lrc.size();i++){
			String lrc_title=(String) list_lrc.get(i).get("title");
			String lrc_url=(String) list_lrc.get(i).get("url");
			if(lrc_title.equals(title))   //如果lrc_title中包含了当前歌曲名,则表示该歌曲有歌词
			//System.out.println("================"+title);
			{
			File file=new File(lrc_url); 
			FileInputStream fis;
			try {    //将歌词封装成流
				fis = new FileInputStream(file);
				InputStreamReader is=new InputStreamReader(fis);  
                BufferedReader br=new BufferedReader(is);
               while((line=br.readLine())!=null)  //读取流
               {	              	   
               String time=line.substring(0, line.indexOf("]")+1);            //因为在歌词中,时间都是放在一对【】中,所以要把时间取出来   
              
               time=time.replace("[", "");     //歌词中时间的格式是mm:ss.xx,所以要把:和.代替掉,   
               time=time.replace("]", "");  
  		       time=time.replace(".", ":");   //在这里不能写成time=time.replace(":", ".");因为‘.’会转义 
  		       lrc_time=time.split(":");      //分离时间
  		      
  		     line=line.substring(line.indexOf("]")+1);
  		     if(lrc_time.length==3){
  		    	Map<String,String> map=new HashMap<String,String>();  
  			    map.put("time",lrc_time[0]+":"+lrc_time[1]);  
  			    map.put("line",line);  
  			   time_list.add(map); 
               System.out.println(line);
  		     }
               }
               
			} catch (Exception e) {
				
				e.printStackTrace();
			}  
			
			}
			else
				musiclrc.setText("歌词不存在"); 
		}
	}

    3.实现歌词的同步

       因为在歌词文件中没句歌词都有对应的时间,我们只需要将歌词的时间与当前播放时间比较,若相同则显示对应的歌词。

for(final Map<String, String> t:time_list){  
   	   String str = t.get("time");    //获取歌词时间			    	          
   	   if(s.equals(str)){  //如果当前时间与歌词时间相等则输出歌词
          musiclrc.post(new Runnable(){  
			   public void run(){  
			    	musiclrc.setText(t.get("line"));  
			    	 }  
			     });  
		   }  
		}  
 

 

二.来电暂停,挂断播放

      这实际就是添加一个对电话状态的监听,在这个监听接口中有各种抽象方法,我们只需要在相应的方法中对歌曲播放状态进行设置即可。

       

 //  实现接电话暂停,挂电话开始功能		  
	tmanger=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);	
	PhoneStateListener phone_listener=new PhoneStateListener(){	
		public void onCallStateChanged(int state, String incomingNumber) {
			super.onCallStateChanged(state, incomingNumber);
			switch(state){
			case TelephonyManager.CALL_STATE_OFFHOOK:  //摘机
				mp.pause();	     
				break;
				
			case TelephonyManager.CALL_STATE_RINGING:  //接通电话
				mp.pause();
				break;
				
			case TelephonyManager.CALL_STATE_IDLE:   //无活动
				mp.start();
				break;					
			}			
		}
	};
	tmanger.listen(phone_listener, PhoneStateListener.LISTEN_CALL_STATE); //监听打电话的状态
	}

      在这几天的Android学习中学到了很多。不管是敲代码还是其他方面,很重要的一点是,我们要自己专研才会学到跟多东西。别人讲的我们只是听了一遍,其中的内涵还要我们不断实践,查阅资料才能理解深刻,才能学会运用。通过这几天的学习,我也开始喜欢Android这个平台,这只是一个开始阶段的小结,以后还有更多的东西等着我去学。加油。



 

 

  • 大小: 134.1 KB
  • 大小: 114.2 KB
分享到:
评论

相关推荐

    android音乐播放器demo

    总结来说,开发Android音乐播放器涉及的知识点包括:MediaPlayer类的使用,音频文件的加载和播放控制,UI设计和事件处理,MediaStore接口的运用以访问音乐库,以及项目结构和最佳实践。通过深入理解和实践“android...

    android音乐播放器源码

    总结,开发一个Android音乐播放器涉及到的知识点包括:`MediaPlayer`的使用、音频数据的管理与同步、UI设计与交互、`ContentProvider`、SQLite数据库、元数据操作、服务(`Service`)与通知、后台播放、以及性能优化...

    基于Android的音乐播放器的源代码和app

    总结,"Mymusic"项目是一个全面的Android音乐播放器实现,涵盖了Android开发的多个关键方面,包括多媒体处理、UI设计、数据存储、服务、广播接收器、权限管理和通知栏控制等。对于想要深入Android开发,尤其是音乐...

    本地Mp3音乐播放器app源码(android).rar

    总结来说,"本地Mp3音乐播放器app源码(android).rar"提供了一个基础的Android音乐播放器实现,涵盖了文件管理、媒体扫描、音乐播放控制、以及可能的UI设计等多个方面。通过对这个源码的学习和研究,开发者可以深入...

    简单android mp3 格式音乐播放器

    总结来说,构建一个简单的Android MP3音乐播放器需要掌握`Android Service`的使用,以实现后台播放;运用`MediaPlayer`播放MP3文件并处理播放控制;理解外部存储的访问方式,遍历并加载MP3文件;最后,设计合适的...

    android平台音乐播放器

    总结,开发一个Android平台的音乐播放器需要深入理解Android应用开发的基础,掌握MediaPlayer和AudioManager的使用,熟悉UI设计原则,以及了解文件存储、线程管理和测试策略。这是一个涵盖了Android开发多个方面的...

    mars android mp3播放器源码

    总结起来,通过研究"Mars Android MP3播放器"的源码,开发者可以学到如何利用Android Media框架进行音频处理,如何设计和实现播放控制器,如何处理音频流控制,以及如何在Android平台上实现背景播放等功能。...

    安卓音乐播放器相关-音乐播放器(2).zip

    总结来说,开发一个安卓音乐播放器需要掌握音频处理、用户界面设计、媒体库访问以及服务和广播接收器的使用等技术。通过这个压缩包中的资料,开发者可以深化这些知识点的理解,并实践到自己的项目中。

    Android MP3播放器 (简单练习版)

    总结来说,创建一个简单的Android MP3播放器需要掌握Android的文件操作、UI设计、数据绑定、多媒体播放以及线程管理等技术。这个过程不仅可以提升开发者对Android框架的理解,也为更复杂的音乐应用开发打下基础。

    android的MP3PLAY播放器

    总结起来,这个MP3PLAY播放器项目涵盖了Android应用开发的关键部分:媒体播放、文件操作、网络通信、数据库操作、UI设计和权限管理。对于初学者来说,这是一个全面学习Android开发的好起点,同时对进阶开发者也有...

    基于android的音乐播放器

    总结起来,开发一个基于Android的音乐播放器,需要理解Android的多媒体框架,掌握`MediaPlayer`的使用,设计用户友好的界面,并合理管理媒体库和服务。通过不断实践和优化,可以创建出功能完善的音乐播放应用,满足...

    android简易音乐播放器

    总结起来,创建一个基于Android的简易音乐播放器需要掌握Android的多媒体框架、UI设计、文件操作、服务使用、通知栏控制、广播接收器以及线程管理等多个方面知识。通过这个项目,开发者不仅可以提升Android编程技能...

    android玩乐族音乐播放器项目.rar

    总结,"Android玩乐族音乐播放器项目"涵盖了Android开发中的多个核心知识点,包括UI设计、音频处理、播放控制、数据管理、服务组件、通知栏控制以及权限管理等。理解并掌握这些技术,对于提升Android开发者的能力,...

    Java 开发的android音乐播放器,界面优美。性能稳定。

    总结,这个“Java开发的Android音乐播放器”项目展示了Java在移动开发中的强大功能,以及如何通过良好的设计和编程实践来创建一个高质量的本地音乐播放应用。对于学习Android开发的初学者来说,这样的项目是一个很好...

    Android MediaPlayer在线音乐播放器

    总结来说,创建一个Android在线音乐播放器涉及到使用`MediaPlayer`类来处理音频流,结合网络请求和错误处理机制,以及设计友好的用户界面。理解这些核心概念和实践技巧,对于任何想要在Android平台上构建多媒体应用...

    Android程序开发——音乐播放器

    ### Android程序开发——音乐播放器知识点详述 #### 一、系统简介 ##### 1.1 功能概述 - **音乐播放**: 支持播放存储于SD卡中的MP3格式音乐。 - **铃声设置**: 可以将音乐设置为来电铃声、闹铃铃声或通知铃声。 - *...

    基于Android的音乐播放器设计与实现.pdf

    总结,基于Android的音乐播放器设计与实现涵盖了软件开发的核心环节,从需求分析到系统设计,再到编码实现,每个步骤都体现了开发者对用户体验的重视和对Android平台特性的熟练掌握。通过这样的设计,开发者可以构建...

    Android mp3播放器简单实现

    服务(Service)在Android应用中扮演了后台运行的角色,对于音乐播放器来说,我们可能需要创建一个Background Service来确保即使在主应用程序被关闭的情况下,音乐仍然能持续播放。你可以通过继承`Service`类并重写...

    Android 卡通黑白音乐播放器.rar

    总结来说,"Android卡通黑白音乐播放器"是一个集成了基本音乐播放功能的轻量级应用。它利用了Android SDK中的`MediaPlayer`、`ListView`、`SeekBar`等组件,实现了音乐播放、列表管理和进度控制。对于初学者,这是一...

    面向对象课程设计-Android手机音乐播放器.doc

    【Android手机音乐播放器开发详解】 本篇将详细介绍如何进行一个面向对象的课程设计,以Android手机音乐播放器为例,涵盖其主要功能实现、所需技术、设计思路以及常见问题的解决办法。 一、项目背景与目标 面向...

Global site tag (gtag.js) - Google Analytics