`
skcceclipse
  • 浏览: 23345 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Android 音乐播放器

阅读更多
自己在教材基础音乐播放器上做的一些扩展,整理一下以备后用,功能比较简单,包括播放列表,播放列表点击功能,进度条,循环播放等。喜欢的可以参考,写的比较乱,不好意思了。参考资料为《Google Android SDK开发范例大全》

import java.io.IOException;
import java.util.List;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;

public class MyMusicPlayer extends Activity 
{ 
  private ImageButton mPause, mNext, mBefore, mStart, mStop;
  private TextView mTextView1; 
  private ImageView mImageView1; 
  private boolean bIsReleased = false;
  private boolean bIsPaused = false; 
  public SeekBar seekBr;
  public ListView musics;
  public MediaPlayer myPlayer1 = new MediaPlayer();
  public int musicIndex = 0;
  private String _DIR = "/sdcard/";
  private List<String> musicList = FindMusics.getSD();
  private int count = musicList.size();
    
  /** Called when the activity is first created. */ 
  @Override 
  public void onCreate(Bundle savedInstanceState) 
  { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
     
    mStart = (ImageButton) findViewById(R.id.myImageButton1); 
    mStop = (ImageButton) findViewById(R.id.myImageButton2);
    mPause = (ImageButton) findViewById(R.id.pause); 
    mNext = (ImageButton) findViewById(R.id.next);
    mBefore = (ImageButton) findViewById(R.id.before); 
    mImageView1 = (ImageView) findViewById(R.id.myImageView1);
    mTextView1 = (TextView) findViewById(R.id.myTextView1); 
    seekBr = (SeekBar) findViewById(R.id.seekb);
    musics = (ListView) findViewById(R.id.musicList);
    
    
    ArrayAdapter< String> adapter = new ArrayAdapter< String>(  
       this,  
       android.R.layout.simple_list_item_1);
    
    for(int i = 0; i < count; i++){
      adapter.add(musicList.get(i).toString());
    }
    
    musics.setAdapter(adapter);
    musics.setOnItemClickListener(new AdapterView.OnItemClickListener(){

      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
          long arg3)
      {
        startMusic(arg2);
      }
      
    });
    seekBr.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

      public void onProgressChanged(SeekBar seekBar, int progress,
          boolean fromUser)
      {
        // TODO Auto-generated method stub
        
      }

      public void onStartTrackingTouch(SeekBar seekBar)
      {
        // TODO Auto-generated method stub
        
      }

      public void onStopTrackingTouch(SeekBar seekBar)
      {
        // TODO Auto-generated method stub
          myPlayer1.seekTo(seekBr.getProgress());
      }
      
    });
    
    /*秨﹍秙 */
    mStart.setOnClickListener(new ImageButton.OnClickListener() 
    { 
      public void onClick(View v) 
      { 
        // TODO Auto-generated method stub 
        mStart.setImageResource(R.drawable.stars);
        mImageView1.setImageResource(R.drawable.dance);
        mPause.setImageResource(R.drawable.pause);
        
        startMusic(musicIndex);
        process();
         
        myPlayer1.setOnCompletionListener(new OnCompletionListener() 
        { 
          // @Override 
          public void onCompletion(MediaPlayer arg0) 
          {  
            mTextView1.setText(R.string.str_finished);
            mStart.setImageResource(R.drawable.star);
            
            if(musicIndex >= count -1 ){
              musicIndex = 0;
            }else{
              musicIndex ++;
            }
            myPlayer1.reset(); 
            startMusic(musicIndex);
            process();
            mTextView1.setText(musicList.get(musicIndex).toString());
          } 
        });
      } 
    });     
     
    mPause.setOnClickListener(new ImageButton.OnClickListener() 
    { 
      public void onClick(View view) 
      { 
        if (myPlayer1 != null) 
        { 
          if(bIsReleased == false) 
          { 
            if(bIsPaused==false) 
            { 
              myPlayer1.pause(); 
              bIsPaused = true; 
              mTextView1.setText(R.string.str_pause); 
              mStart.setImageResource(R.drawable.star);
              mPause.setImageResource(R.drawable.pause_2);
            } 
            else if(bIsPaused==true) 
            { 
              myPlayer1.start(); 
              bIsPaused = false; 
              mTextView1.setText(R.string.str_start);
              mStart.setImageResource(R.drawable.stars);
              mPause.setImageResource(R.drawable.pause);
            } 
          } 
        } 
      } 
    }); 
    
    mNext.setOnClickListener(new ImageButton.OnClickListener() 
    {

      public void onClick(View arg0)
      {
        // TODO Auto-generated method stub       
        mStart.setImageResource(R.drawable.stars);
        mImageView1.setImageResource(R.drawable.dance);    
        
        if(musicIndex >= count-1){
          musicIndex = 0;
        }else{
          musicIndex++;
        }
        startMusic(musicIndex);
        process();
      }      
    });
    
    mBefore.setOnClickListener(new ImageButton.OnClickListener() 
    {

      public void onClick(View arg0)
      {
        // TODO Auto-generated method stub
        mStart.setImageResource(R.drawable.stars);
        mImageView1.setImageResource(R.drawable.dance);
        
        startMusic(musicIndex);
        process();
      }      
    });
    
    mStop.setOnClickListener(new ImageButton.OnClickListener() 
    { 
      public void onClick(View v) 
      { 
        // TODO Auto-generated method stub 
        
        if(myPlayer1.isPlaying()==true) 
        { 
          myPlayer1.reset(); 
          mTextView1.setText(R.string.str_stopped);
          mStart.setImageResource(R.drawable.star);
          mPause.setImageResource(R.drawable.pause);
          mImageView1.setImageResource(R.drawable.black);
        } 
      } 
    }); 
  } 
  
  public void process(){
    seekBr.setMax(myPlayer1.getDuration());
    new Thread(new Runnable(){
      public void run() {
        while(true){
        seekBr.setProgress(myPlayer1.getCurrentPosition()); //获得当前播放的进度值
        if(seekBr.getMax() == myPlayer1.getCurrentPosition()){
          seekBr.setProgress(0);
        }
        try {
          Thread.sleep(1000);
          } catch (InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
        }
    }}).start();
  }
  
  public void startMusic(int musicIndex){
    try 
    { 
      if(myPlayer1.isPlaying()==true) 
      { 
        myPlayer1.reset();            
      }
     
      myPlayer1.setDataSource(_DIR + musicList.get(musicIndex).toString());
      myPlayer1.prepare();
      myPlayer1.start(); 
      mTextView1.setText(musicList.get(musicIndex).toString());
    } 
    catch (IllegalStateException e) 
    { 
      // TODO Auto-generated catch block 
      mTextView1.setText(e.toString()); 
      e.printStackTrace(); 
    } 
    catch (IOException e) 
    { 
      // TODO Auto-generated catch block 
      mTextView1.setText(e.toString()); 
      e.printStackTrace(); 
    } 
  }
  
}

读取sdCard中歌曲的类

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FindMusics
{

  public static List<String> getSD()
  {
    List<String> musicList = new ArrayList<String>();
    File f = new File("/sdcard");
    File[] files = f.listFiles();
    for (int i = 0; i < files.length; i++)
    {
      File file = files[i];
      if (getMusicFile(file.getName()))
      {
        musicList.add(file.getName());
      }
    }
    return musicList;
  }

  public static boolean getMusicFile(String path)
  {

   // boolean rs;
    String end = path.substring(path.lastIndexOf(".") + 1, path.length())
        .toLowerCase();

    if (end.equals("mp3"))
      return true;
    else
      return false;
  }
}


main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <!-- 建立一個TextView -->
  <TextView  
  android:id="@+id/myTextView1"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:layout_y="236px"
  android:text="@string/hello"
  />
   
  <!-- 建立第一個ImageButton -->
  <ImageButton
  android:id="@+id/myImageButton1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_x="111px"
  android:layout_y="206px"
  android:background="@drawable/black"  
  android:src="@drawable/star"  
  />
  <!-- 建立第二個ImageButton -->
  <ImageButton
  android:id="@+id/pause" 
  android:layout_height="wrap_content"  
  android:layout_width="wrap_content"
  android:background="@drawable/black" 
  android:layout_x="141px"
  android:layout_y="206px"  
  android:src="@drawable/pause" 
  />
  <!-- 建立第三個ImageButton -->
  <ImageButton
  android:id="@+id/before" 
  android:layout_height="wrap_content"  
  android:layout_width="wrap_content"
  android:background="@drawable/black" 
  android:layout_x="61px"
  android:layout_y="206px"  
  android:src="@drawable/before" 
  />
  <!-- 建立第四個ImageButton -->
  <ImageButton
  android:id="@+id/next" 
  android:layout_height="wrap_content"  
  android:layout_width="wrap_content"
  android:background="@drawable/black" 
  android:layout_x="181px"
  android:layout_y="206px"  
  android:src="@drawable/next" 
  />  
  <!-- 建立第五個ImageButton -->
  <ImageButton
  android:id="@+id/myImageButton2"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_x="206px"
  android:layout_y="206px"
  android:background="@drawable/black"  
  android:src="@drawable/stop"  
  />
  <!-- 建立一個ImageView --> 
  <ImageView
  android:id="@+id/myImageView1"
  android:layout_width="207px"
  android:layout_height="170px"
  android:layout_x="72px"
  android:layout_y="32px"
  />  
  <SeekBar android:id="@+id/seekb" 
  android:max="100" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  />  
  <ListView android:id="@+id/musicList"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content"
  android:layout_y="260px"
  />
</AbsoluteLayout>
分享到:
评论
1 楼 enefry 2010-09-12  
感谢楼主分享.希望可以顺便打个包

相关推荐

    android音乐播放器demo

    以下将详细解析“android音乐播放器demo”所涵盖的知识点。 首先,Android音乐播放器的核心是媒体播放服务(MediaPlayer)。这是一个系统级的服务,用于处理音频和视频文件的播放。在Android中,MediaPlayer类提供...

    简单的Android音乐播放器

    【Android音乐播放器开发概述】 在移动应用领域,Android音乐播放器是常见且实用的应用类型。这个项目"简单的Android音乐播放器"旨在提供一个基础框架,让用户能够进行音乐的播放、暂停、上一曲和下一曲操作,并且...

    Android音乐播放器(Android studio)

    【Android音乐播放器开发详解】 在Android开发领域,构建一个音乐播放器是常见的实践项目,它可以帮助开发者深入了解Android系统的多媒体处理、用户界面设计以及数据管理等核心知识点。本项目"Android音乐播放器...

    Android音乐播放器毕业设计论文

    4.4 Android 音乐播放器的工程 - 26 - 4.4.1 Android项目 - 26 - 4.4.2 Android工程程序结构 - 27 - 4.4.3 AndroidManifest.xml文件 - 29 - 第五章 播放器系统功能详细设计 - 31 - 5.1音乐播放器主界面功能实现 - 31...

    android音乐播放器需求分析

    ### Android音乐播放器需求分析深度解析 #### 一、项目背景与目标 在3G技术的迅猛发展中,人们对音乐的追求日益高涨,市场上的音乐播放器虽多,但普遍存在操作复杂或音质不佳等问题,难以满足用户的高品质音乐体验...

    基于Eclipse的Android音乐播放器.rar

    【基于Eclipse的Android音乐播放器】 在移动设备上开发应用程序是现代软件工程的重要组成部分,尤其是在Android平台上。Eclipse作为一款流行的集成开发环境(IDE),曾经是Android开发者的首选工具。本项目“基于...

    Android音乐播放器,本地播放,网络播放

    综上所述,开发一个具备本地和网络播放功能的Android音乐播放器,涉及到了音频处理、媒体库操作、网络流媒体、UI设计、播放控制、服务管理、权限处理、性能优化等多个方面的技术知识点。每个环节都需要细致入微的...

    android音乐播放器Demo代码

    这个"android音乐播放器Demo代码"提供了一个基础的实现框架,对于学习和理解如何在Android上构建音乐播放功能非常有帮助。下面将详细介绍这个Demo涉及到的关键知识点。 1. **Android SDK**:首先,这个Demo是基于...

    android音乐播放器测试歌曲

    这款"android音乐播放器测试歌曲"的应用显然专注于测试音乐播放功能,我们可以通过分析它的内容来深入理解相关技术。 首先,我们要讨论的是Android音频框架。Android系统提供了一个强大的音频框架,包括Media ...

    android音乐播放器源码

    下面,我们将围绕"android音乐播放器源码"这一主题,深入探讨其中的关键知识点。 首先,音乐播放器的核心是音频处理。在Android中,我们可以使用`MediaPlayer`类来播放音频文件。`MediaPlayer`提供了丰富的API,...

    android 音乐播放器 绝对好用 完整代码

    android 音乐播放器 经典完整代码 非常经典 非常好用 绝对是原创的哦 绝对可以使用的哦 学习之良品,项目代码涉及知识非常广泛,可以通过本项目代码学习到android的四大组件 以及很多编程技巧 希望各位同学好好利用.

    android 音乐播放器源码下载

    【Android音乐播放器源码详解】 在Android平台上开发一款音乐播放器是一项常见的任务,而能够获得一份详尽注释的源码无疑是学习和提升的好材料。这个“Android音乐播放器源码”提供了一个完整的实现,从用户界面...

    Android 音乐播放器开发

    下面我们将深入探讨这个话题,主要基于"Android音乐播放器开发"的描述,以及与之相关的标签和技术点。 首先,我们要明白Android音乐播放器的基本功能包括播放音乐、管理本地音乐库、支持在线音乐的下载和播放,以及...

    android 音乐播放器完整版本

    【Android音乐播放器完整版本】是一款专为Android操作系统设计的音乐播放软件,由国外开发者精心制作,具有丰富的功能和出色的用户体验。这款播放器不仅具备基本的音频播放能力,还包含了一些独特而炫酷的特效,使得...

    android音乐播放器源代码

    【Android音乐播放器源代码详解】 在Android平台上开发一款音乐播放器是一项技术性强且充满挑战的任务,涉及到多媒体处理、UI设计、数据管理等多个方面。这个开源项目为开发者提供了一个很好的起点,它展示了如何...

    Android 音乐播放器简单实现源码实例下载

    首先,Android音乐播放器的核心是媒体播放器(MediaPlayer)类,它是Android SDK中的一个重要组件,用于播放音频和视频文件。在`Music`这个项目中,我们可以看到如何使用MediaPlayer类来播放设备上的音乐文件。...

    Android音乐播放器实例教学Demo

    【Android音乐播放器实例教学Demo】是一个非常适合初学者和进阶开发者学习的项目,它旨在模仿知名的音乐播放器应用,提供了完整的源码供学习者参考。这个Demo涵盖了Android开发中的多个重要技术点,包括Service、...

    android音乐播放器

    本篇文章将深入探讨基于Android的音乐播放器开发的关键知识点,结合给定的"android音乐播放器"标题和相关标签,我们将主要关注源码解析和工具的使用。 首先,构建一个音乐播放器的基础是获取音频资源。Android提供...

Global site tag (gtag.js) - Google Analytics