Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android音頻文件浏覽+音頻播放

Android音頻文件浏覽+音頻播放

編輯:關於Android編程

該Demo運行後,會顯示所有你sd卡上的音樂文件列表, 並可以點擊列表選擇某一首歌曲進行播放。

運行效果:

\

點擊download出現:

\

然後點擊歌曲調用系統播放器播放。

源代碼:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+YWN0aXZpdHlfYXVkaW9fYnJvd3Nlci54bWyjujwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">
AudioBrowser.java:

package com.multimediademo5customaudioplayer2;

import java.io.File;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

/**
 * 該Demo運行後,會顯示所有你sd卡上的音樂文件列表, 並可以點擊列表選擇某一首歌曲進行播放。
 * 
 */
public class AudioBrowser extends ListActivity {
	private Cursor cursor;
	public static int STATE_SELECT_ALBUM = 0;
	public static int STATE_SELECT_SONG = 1;
	private int currentState = STATE_SELECT_ALBUM;

	@SuppressWarnings("deprecation")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_audio_browser);
		
		/**
		 * 創建一個字符串數組,表示當運行查詢時將從MediaStore返回的列。
		 */
		String[] columns = { android.provider.MediaStore.Audio.Albums._ID,
				android.provider.MediaStore.Audio.Albums.ALBUM };
		/**
		 * 返回一個所有可用唱片集的列表
		 */
		cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
				columns, null, null, null);
		String[] displayFields = new String[] { MediaStore.Audio.Albums.ALBUM };
		int[] displayViews = new int[] { android.R.id.text1 };
		/**
		 * 可以使用setListAdapter方法將Cursor對象綁定到ListView對象
		 */
		setListAdapter(new SimpleCursorAdapter(this,
				android.R.layout.simple_list_item_1, cursor, displayFields,
				displayViews));
	}

	@SuppressWarnings("deprecation")
	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		super.onListItemClick(l, v, position, id);
		/**
		 * 判斷點擊的是歌曲文件夾還是單個歌曲
		 */
		if (currentState == STATE_SELECT_ALBUM) {
			/**
			 * 如果是歌曲文件夾,則進入該文件夾的歌曲列表
			 */
			if (cursor.moveToPosition(position)) {
				String[] columns = { MediaStore.Audio.Media.DATA,
						MediaStore.Audio.Media._ID,
						MediaStore.Audio.Media.TITLE,
						MediaStore.Audio.Media.DISPLAY_NAME,
						MediaStore.Audio.Media.MIME_TYPE };
				String where = android.provider.MediaStore.Audio.Media.ALBUM
						+ "=?";
				String whereVal[] = { cursor.getString(cursor
						.getColumnIndex(MediaStore.Audio.Albums.ALBUM)) };
				String orderBy = android.provider.MediaStore.Audio.Media.TITLE;
				cursor = managedQuery(
						MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns,
						where, whereVal, orderBy);
				String[] displayFields = new String[] { MediaStore.Audio.Media.DISPLAY_NAME };
				int[] displayViews = new int[] { android.R.id.text1 };
				setListAdapter(new SimpleCursorAdapter(this,
						android.R.layout.simple_list_item_1, cursor,
						displayFields, displayViews));
				currentState = STATE_SELECT_SONG;
			}
		} else if (currentState == STATE_SELECT_SONG) {
			/**
			 * 如果點擊的是歌曲,則調用系統的播放器進行歌曲播放
			 */
			if (cursor.moveToPosition(position)) {
				int fileColumn = cursor
						.getColumnIndex(MediaStore.Audio.Media.DATA);
				int mimeTypeColumn = cursor
						.getColumnIndex(MediaStore.Audio.Media.MIME_TYPE);
				String audioFilePath = cursor.getString(fileColumn);
				String mimeType = cursor.getString(mimeTypeColumn);
				Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
				File newFile = new File(audioFilePath);
				intent.setDataAndType(Uri.fromFile(newFile), mimeType);
				startActivity(intent);
			}
		}
	}

}

源代碼下載:

點擊下載源碼

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved