天天看點

Android 迷你播放器

今天我們要講述一個具有控制界面的音樂播放器

1:UI布局layout/main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:orientation="vertical"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        >

  <TextView

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="迷你音樂播放器"

  />

  <LinearLayout

    android:orientation="horizontal"

    android:layout_height="fill_parent"

  >

    <ImageButton

      android:id="@+id/play"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:src="@drawable/play"

    />

      android:id="@+id/pause"

      android:src="@drawable/pause"

    />  

      android:id="@+id/stop"

      android:src="@drawable/stop"

  </LinearLayout>

</LinearLayout>

2:實作功能核心代碼MediaActivity.java

package com.android.test;

import android.app.Activity;

import android.app.AlertDialog;

import android.media.MediaPlayer;

import android.media.MediaPlayer.OnCompletionListener;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageButton;

import android.widget.ProgressBar;

public class MediaActivity extends Activity implements OnCompletionListener {

  private ImageButton play, pause, stop;

  //聲明MediaPlayer執行個體

  private MediaPlayer mp;  

        public void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);

                //設定目前頁面布局

                setContentView(R.layout.main);         

                //通過findViewById方法獲得按鈕執行個體

                play = (ImageButton)findViewById(R.id.play);

                pause = (ImageButton)findViewById(R.id.pause);

                stop = (ImageButton)findViewById(R.id.stop);

                //為按鈕添加單擊時間監聽器

                play.setOnClickListener(new View.OnClickListener() {

      public void onClick(View v) {

        //開始

        play();

      }                

                });

                pause.setOnClickListener(new View.OnClickListener() {

        //暫停

        pause();

      }

                stop.setOnClickListener(new View.OnClickListener() {

        //停止

        stop();

      }              

                //準備

                setup();

        }

        public void onDestory() {

          super.onDestroy();

          if(stop.isEnabled()) {

            stop();

          }

        //準備

  private void setup() {

    //加載播放檔案

    loadClip();

    //使播放按鈕生效

    play.setEnabled(true);

    //使暫停按鈕失效

    pause.setEnabled(false);

    //使停止按鈕失效

    stop.setEnabled(false);

  }

  private void loadClip() {

    try{

      //執行個體化MediaPlayer

      mp = MediaPlayer.create(this, R.raw.test);

      //設定監聽器

      mp.setOnCompletionListener(this);

    } catch(Throwable t) {

      error(t);

    }

  private void error(Throwable t) {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    builder.setTitle("報錯啦!").setMessage(t.toString()).setPositiveButton("确定", null).show();

  public void stop() {

    //停止

    mp.stop();

    try {

      //準備

      mp.prepare();

      //定位到開始

      mp.seekTo(0);

      //使播放按鈕生效

      play.setEnabled(true);

    } catch (Throwable t) {

  public void pause() {

    //暫停

    mp.pause();

    //使停止按鈕生效

    stop.setEnabled(true);

  public void play() {

    //播放

    mp.start();

    //使播放按鈕失效

    play.setEnabled(false);

    //使暫停按鈕生效

    pause.setEnabled(true);

  public void onCompletion(MediaPlayer mp) {

    stop();

}

3:運作程式如圖

本文轉自 Art_Hero 51CTO部落格,原文連結:http://blog.51cto.com/curran/523085,如需轉載請自行聯系原作者

繼續閱讀