android音頻(一)

1.通過意圖使用內置的音頻播放器

Intent intent=new Intent(android.content.Intent.ACTION_VIEW);
File audioFile=new File(Environment.getExternalStorageDirectory()+"/Music/mylove.mp3");
intent.setDataAndType(Uri.fromFile(audioFile), "audio/mp3");
startActivity(intent);

2.創建自定義播放應用(在onStart中初始化MediaPlayer對象和開始播放,可以在活動不再活躍時,停止播放)

     MediaPlayer mediaPlayer;

        @Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		mediaPlayer = MediaPlayer.create(this, R.raw.life);
		mediaPlayer.setOnCompletionListener(this);
		mediaPlayer.start();
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		mediaPlayer.stop();
		mediaPlayer.release();
	}
      @Override
	public void onCompletion(MediaPlayer mp) {
		// TODO Auto-generated method stub
		mediaPlayer.start();
	}


完整代碼如下:
package com.example.testaudioedit;

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;

public class AudioPlayer extends Activity implements OnClickListener,
		OnCompletionListener, OnTouchListener {

	private MediaPlayer mediaPlayer;
	private Button startButton, stopButton;
	private int position = 0;// 保存播放位置
	private View musicProgress;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}

	private void initView() {
		// TODO Auto-generated method stub
		startButton = (Button) findViewById(R.id.internal_play);
		stopButton = (Button) findViewById(R.id.internal_stop);
		musicProgress = findViewById(R.id.musicView);
		startButton.setOnClickListener(this);
		stopButton.setOnClickListener(this);
		musicProgress.setOnTouchListener(this);

		mediaPlayer = MediaPlayer.create(this, R.raw.life);//資源文件,在資源文件夾下創建raw文件夾,life表示的是要播放的音頻文件
		mediaPlayer.setOnCompletionListener(this);
		mediaPlayer.start();
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();

	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		mediaPlayer.stop();
		mediaPlayer.release();
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.internal_play:
			if (!mediaPlayer.isPlaying())
				mediaPlayer.start();
			break;
		case R.id.internal_stop:
			if (mediaPlayer.isPlaying())
				mediaPlayer.pause();
			break;
		default:
			break;
		}
	}

	@Override
	public void onCompletion(MediaPlayer mp) {
		// TODO Auto-generated method stub
		mediaPlayer.start();
		mediaPlayer.seekTo(position);
	}

	@Override
	public boolean onTouch(View v, MotionEvent event) {
		// TODO Auto-generated method stub
		if (event.getAction() == MotionEvent.ACTION_MOVE) {
			if (mediaPlayer.isPlaying()) {
				position = (int) (event.getX() * mediaPlayer.getDuration() / musicProgress
						.getWidth());
				mediaPlayer.seekTo(position);
			}
		}
		return true;
	}

}

activity_main.xml文件如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <Button 
        android:id="@+id/internal_play"
        android:layout_width="150dp"
        android:layout_height="60dp"
        android:layout_marginLeft="10dp"
        android:text="play"/>
    <Button 
        android:id="@+id/internal_stop"
        android:layout_toRightOf="@+id/internal_play"
        android:layout_width="150dp"
        android:layout_height="60dp"
        android:text="stop"/>
    
    <View
        android:id="@+id/musicView"
        android:layout_below="@+id/internal_play"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
    
</RelativeLayout>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章