編輯:關於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);
}
}
}
}
點擊下載源碼
Android 動畫(View動畫,幀動畫,屬性動畫)詳細介紹
0. 前言 Android動畫是面試的時候經常被問到的話題。我們都知道Android動畫分為三類:View動畫、幀動畫和屬性動畫。先對這三種動畫做一個概述:V
android應用Theme(二)
第二種實現android應用Theme的方式是通過apk來實現的。下面是一個demo。 1.首先必須新建一個apk,類似的插件,然後在該apk的Androi
Android拼圖游戲開發全紀錄5
今天我們終於可以把這個項目給結束掉啦,有了前幾天的准備,相信最後一天還是比較輕松的,國際慣例: 最後要完成的就是我們的主要功能--拼圖界面。package com.x
Android 程序應用的生命周期
程序應用步驟:打開應用:onCreateonStartonResumeBACK鍵:onPauseonStoponDestoryHOME鍵:onPauseonStop再次啟