編輯:Android開發實例
Android有其自帶的播放器,我們可以使用隱式Intent來調用它:通過傳入一個Action為ACTION_VIEW同時,指定Data為所要播放的Audio的Uri對象,並指定格式信息,則我們就可以調用播放器來播放該Audio了。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri, MimeType);
startActivity(intent);
本文我們需要訪問MediaStore,來獲取所有Audio信息,我們首先將獲取所有的Album,然後當用戶點擊某個Album時,顯示該Album下所有的Audio,然後當用戶點擊某個Audio時,調用系統自帶的播放器播放該Audio。
- package demo.camera;
- import java.io.File;
- import org.apache.http.client.utils.URIUtils;
- import android.app.Activity;
- import android.app.ListActivity;
- import android.content.Intent;
- import android.database.Cursor;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.provider.MediaStore.Audio;
- import android.provider.MediaStore.Audio.Albums;
- import android.view.View;
- import android.widget.Button;
- import android.widget.CursorAdapter;
- import android.widget.ListView;
- import android.widget.SimpleCursorAdapter;
- /**
- * 本示例演示如何利用Android自帶的Music來播放程序
- * 和Camera一樣,可以通過Intent來啟動它。
- * 我們需要指定一個ACTION_VIEW的Action
- * 同時一個Uri來指定我們要播放文件的路徑
- * 最後指定一個MIME類型,指定所要播放的文件類型
- * 每種文件類型對應的都有一個MIME,他一般是類似於audio/mp3格式
- * 前部分是一個較大的類型,後面是更具體的類型
- *
- * 同樣的,對於Audio類型的多媒體,系統存儲在MediaStore.Audio中
- * 包括Media,Album,Genre等信息體
- *
- * 本文將以列表的形式列出所有的Album信息,供用戶選擇
- * 當用戶選擇某個Album時,系統將打開這個ALbum下的所有Audio
- * @author Administrator
- *
- */
- public class AudioDemo extends ListActivity {
- private Button btnMusic;
- private boolean isAlbum = true; //true時,說明當前列表的內容是Album,false時,說明是Media
- private Cursor cursor; //游標對象,
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- this.setContentView(R.layout.audio);
- btnMusic = (Button)this.findViewById(R.id.btn_music);
- btnMusic.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // Intent intent = new Intent(Intent.ACTION_VIEW);
- // //這裡我們先從SDCard文件中獲取指定文件的URi
- // File sdcard = Environment.getExternalStorageDirectory(); //這個是獲取SDCard路徑
- // File audioFile = new File(sdcard.getPath()+"/music/tt.mp3");
- // //然後需要獲取該文件的Uri
- // Uri audioUri = Uri.fromFile(audioFile);
- // //然後指定Uri和MIME
- // intent.setDataAndType(audioUri, "audio/mp3");
- // startActivity(intent);
- //獲取Album列表
- getAlbums();
- isAlbum = true;
- }
- });
- }
- public void onListItemClick(ListView l, View v, int position, long id){
- //判斷當前是哪個列表
- if(isAlbum){
- //如果是Album,當用戶點擊某一個時,獲取該Album下的所有media
- //l.getChildAt(position);
- if(cursor.moveToPosition(position)){
- getMedias(cursor.getInt(cursor.getColumnIndexOrThrow(Albums._ID)));
- isAlbum = false;
- }
- }else{
- //如果是Media,則當用戶點擊某一個時,則播放該Media
- //調用系統自帶的MediaPlayer來播放
- if(cursor.moveToPosition(position)){
- String mediaUri = cursor.getString(cursor.getColumnIndexOrThrow(Audio.Media.DATA));
- String type = cursor.getString(cursor.getColumnIndexOrThrow(Audio.Media.MIME_TYPE));
- Uri data = Uri.fromFile(new File(mediaUri));
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setDataAndType(data, type);
- startActivity(intent);
- }
- }
- //super.onListItemClick(l, v, position, id);
- }
- //獲取所有Albums
- public void getAlbums(){
- String[] columns = new String[]{
- Albums._ID,
- Albums.ALBUM
- };
- String[] from = new String[]{
- Albums.ALBUM
- };
- int[] to = new int[]{
- android.R.id.text1
- };
- cursor = this.managedQuery(Albums.EXTERNAL_CONTENT_URI, columns, null, null, Albums.DEFAULT_SORT_ORDER);
- CursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to);
- this.setListAdapter(adapter);
- //this.isAlbum = true;
- }
- //獲取某個Albums下對應的medias
- public void getMedias(int albumId){
- String[] columns = new String[]{
- Audio.Media._ID,
- Audio.Media.DATA,
- Audio.Media.DISPLAY_NAME,
- Audio.Media.MIME_TYPE
- };
- String selection = Audio.Media.ALBUM_ID + "=?";
- String[] selectionArgs = new String[]{
- albumId+""
- };
- String[] from = new String[]{
- Audio.Media.DISPLAY_NAME
- };
- int[] to = new int[]{
- android.R.id.text1
- };
- cursor = this.managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, columns, selection, selectionArgs, Audio.Media.TITLE);
- CursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1,cursor,from,to);
- this.setListAdapter(adapter);
- }
- }
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
查了好多資料,現發還是不全,干脆自己整理吧,至少保證在我的做法正確的,以免誤導讀者,也是給自己做個記錄吧! 簡介 android供給了三種菜單類型,分別為opti
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個