Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android多媒體學習五:調用Android自帶的播放器播放Audio

Android多媒體學習五:調用Android自帶的播放器播放Audio

編輯: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。

 

  1. package demo.camera;  
  2. import java.io.File;  
  3. import org.apache.http.client.utils.URIUtils;  
  4. import android.app.Activity;  
  5. import android.app.ListActivity;  
  6. import android.content.Intent;  
  7. import android.database.Cursor;  
  8. import android.net.Uri;  
  9. import android.os.Bundle;  
  10. import android.os.Environment;  
  11. import android.provider.MediaStore;  
  12. import android.provider.MediaStore.Audio;  
  13. import android.provider.MediaStore.Audio.Albums;  
  14. import android.view.View;  
  15. import android.widget.Button;  
  16. import android.widget.CursorAdapter;  
  17. import android.widget.ListView;  
  18. import android.widget.SimpleCursorAdapter;  
  19. /**  
  20.  * 本示例演示如何利用Android自帶的Music來播放程序  
  21.  * 和Camera一樣,可以通過Intent來啟動它。  
  22.  * 我們需要指定一個ACTION_VIEW的Action  
  23.  * 同時一個Uri來指定我們要播放文件的路徑  
  24.  * 最後指定一個MIME類型,指定所要播放的文件類型  
  25.  * 每種文件類型對應的都有一個MIME,他一般是類似於audio/mp3格式  
  26.  * 前部分是一個較大的類型,後面是更具體的類型  
  27.  *   
  28.  * 同樣的,對於Audio類型的多媒體,系統存儲在MediaStore.Audio中  
  29.  * 包括Media,Album,Genre等信息體  
  30.  *   
  31.  * 本文將以列表的形式列出所有的Album信息,供用戶選擇  
  32.  * 當用戶選擇某個Album時,系統將打開這個ALbum下的所有Audio  
  33.  * @author Administrator  
  34.  *  
  35.  */ 
  36. public class AudioDemo extends ListActivity {  
  37.       
  38.     private Button btnMusic;  
  39.       
  40.     private boolean isAlbum = true; //true時,說明當前列表的內容是Album,false時,說明是Media  
  41.       
  42.     private Cursor cursor; //游標對象,  
  43.       
  44.     public void onCreate(Bundle savedInstanceState){  
  45.         super.onCreate(savedInstanceState);  
  46.         this.setContentView(R.layout.audio);  
  47.         btnMusic = (Button)this.findViewById(R.id.btn_music);  
  48.         btnMusic.setOnClickListener(new View.OnClickListener() {  
  49.               
  50.             @Override 
  51.             public void onClick(View v) {  
  52.                   
  53. //              Intent intent = new Intent(Intent.ACTION_VIEW);  
  54. //              //這裡我們先從SDCard文件中獲取指定文件的URi  
  55. //              File sdcard = Environment.getExternalStorageDirectory(); //這個是獲取SDCard路徑  
  56. //              File audioFile = new File(sdcard.getPath()+"/music/tt.mp3");  
  57. //              //然後需要獲取該文件的Uri  
  58. //              Uri audioUri = Uri.fromFile(audioFile);  
  59. //              //然後指定Uri和MIME  
  60. //              intent.setDataAndType(audioUri, "audio/mp3");  
  61. //              startActivity(intent);  
  62.                   
  63.                 //獲取Album列表  
  64.                 getAlbums();  
  65.                 isAlbum = true;  
  66.             }  
  67.         });  
  68.           
  69.     }  
  70.       
  71.     public void onListItemClick(ListView l, View v, int position, long id){  
  72.           
  73.         //判斷當前是哪個列表  
  74.         if(isAlbum){  
  75.             //如果是Album,當用戶點擊某一個時,獲取該Album下的所有media  
  76.             //l.getChildAt(position);  
  77.             if(cursor.moveToPosition(position)){  
  78.                 getMedias(cursor.getInt(cursor.getColumnIndexOrThrow(Albums._ID)));  
  79.                 isAlbum = false;  
  80.             }  
  81.         }else{  
  82.             //如果是Media,則當用戶點擊某一個時,則播放該Media  
  83.             //調用系統自帶的MediaPlayer來播放  
  84.             if(cursor.moveToPosition(position)){  
  85.                 String mediaUri = cursor.getString(cursor.getColumnIndexOrThrow(Audio.Media.DATA));  
  86.                 String type = cursor.getString(cursor.getColumnIndexOrThrow(Audio.Media.MIME_TYPE));  
  87.                 Uri data = Uri.fromFile(new File(mediaUri));  
  88.                 Intent intent = new Intent(Intent.ACTION_VIEW);  
  89.                 intent.setDataAndType(data, type);  
  90.                 startActivity(intent);  
  91.             }  
  92.         }  
  93.           
  94.         //super.onListItemClick(l, v, position, id);  
  95.     }  
  96.       
  97.       
  98.     //獲取所有Albums  
  99.     public void getAlbums(){  
  100.         String[] columns = new String[]{  
  101.                 Albums._ID,  
  102.                 Albums.ALBUM  
  103.         };  
  104.         String[] from = new String[]{  
  105.                 Albums.ALBUM  
  106.         };  
  107.         int[] to = new int[]{  
  108.                 android.R.id.text1  
  109.         };  
  110.         cursor = this.managedQuery(Albums.EXTERNAL_CONTENT_URI, columns, null, null, Albums.DEFAULT_SORT_ORDER);  
  111.         CursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to);  
  112.         this.setListAdapter(adapter);  
  113.         //this.isAlbum = true;  
  114.           
  115.     }  
  116.       
  117.     //獲取某個Albums下對應的medias  
  118.     public void getMedias(int albumId){  
  119.         String[] columns = new String[]{  
  120.                 Audio.Media._ID,  
  121.                 Audio.Media.DATA,  
  122.                 Audio.Media.DISPLAY_NAME,  
  123.                 Audio.Media.MIME_TYPE  
  124.         };  
  125.         String selection = Audio.Media.ALBUM_ID + "=?";  
  126.         String[] selectionArgs = new String[]{  
  127.                 albumId+"" 
  128.         };  
  129.           
  130.         String[] from = new String[]{  
  131.                 Audio.Media.DISPLAY_NAME  
  132.         };  
  133.         int[] to = new int[]{  
  134.                 android.R.id.text1  
  135.         };  
  136.           
  137.         cursor = this.managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, columns, selection, selectionArgs, Audio.Media.TITLE);  
  138.         CursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1,cursor,from,to);  
  139.         this.setListAdapter(adapter);  
  140.     }  
  141. }  
  142.  

 

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