안 드 로 이 드 멀티미디어 학습:안 드 로 이 드 자체 재생 기 를 호출 하여 오디 오 를 재생 합 니 다.

5270 단어 자바android
Android 는 자체 재생 기 를 가지 고 있 습 니 다.암시 적 인 Intent 를 사용 하여 호출 할 수 있 습 니 다.Action 을 통 해 ACTION 으로 전 송 됩 니 다.VIEW 는 동시에 데 이 터 를 재생 할 Audio 의 Uri 대상 으로 지정 하고 형식 정 보 를 지정 하면 재생 기 를 호출 하여 오디 오 를 재생 할 수 있 습 니 다.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri, MimeType);
startActivity(intent);
본 고 는 모든 오디 오 정 보 를 얻 기 위해 미디어 스토어 를 방문 해 야 합 니 다.먼저 모든 앨범 을 가 져 온 다음 에 사용자 가 특정한 앨범 을 클릭 할 때 이 앨범 아래 의 모든 오디 오 를 표시 한 다음 에 사용자 가 특정한 오디 오 를 클릭 할 때 시스템 자체 재생 기 를 호출 하여 오디 오 를 재생 합 니 다.
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);
	}
}

좋은 웹페이지 즐겨찾기