android音频(一)

本文介绍在Android应用中实现音频播放的两种方法:一是利用系统的内置音频播放器直接播放指定路径的音频文件;二是通过创建自定义播放应用,利用MediaPlayer组件进行音频资源的加载和播放控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值