Android基础学习(15)- 播放音频、视频与录制音频
Android基础学习(15)- 播放音频、视频与录制音频
AlanCooper 发表于3年前
Android基础学习(15)- 播放音频、视频与录制音频
  • 发表于 3年前
  • 阅读 89
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

1、播放音频

示例:播放本地音频

package com.wwtiot.player;

import java.io.IOException;

import com.wwtiot.sdplayer.R;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Main extends Activity {
	private MediaPlayer mediaplayer;
	// 歌曲名称
	String[] songname = new String[] { "halo", "moon", "tears"};
	// 歌曲文件
	int [] songfile = new int[] {R.raw.halo,R.raw.moon,R.raw.tears};
	private int currentItem = 0;// 目前播放歌曲
	private Boolean flagPause = false;// 暂停标志
	// 界面组件
	private TextView textMusic;
	private ImageView imageFront, imageStop, imagePlay, imagePause, imageNext;
	private ListView listMusic;

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

		// 获取资源文件夹中的界面组件
		textMusic = (TextView) findViewById(R.id.textMusic);
		imageFront = (ImageView) findViewById(R.id.imageFront);
		imageStop = (ImageView) findViewById(R.id.imageStop);
		imagePlay = (ImageView) findViewById(R.id.imagePlay);
		imagePause = (ImageView) findViewById(R.id.imagePause);
		imageNext = (ImageView) findViewById(R.id.imageNext);
		listMusic = (ListView) findViewById(R.id.listMusic);

		// 给ImageView添加Listener
		imageFront.setOnClickListener(myListener);
		imageStop.setOnClickListener(myListener);
		imagePlay.setOnClickListener(myListener);
		imagePause.setOnClickListener(myListener);
		imageNext.setOnClickListener(myListener);
		// 给ListView添加Listener
		listMusic.setOnItemClickListener(listListener);
		mediaplayer = new MediaPlayer();
		ArrayAdapter<String> adaSong = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, songname);
		listMusic.setAdapter(adaSong);
	}

	private ImageView.OnClickListener myListener = new ImageView.OnClickListener() {

		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.imageFront:// 上一首
				frontsong();
				break;
			case R.id.imageStop:// 停止
				if (mediaplayer.isPlaying()) {// 判断歌曲是否正在播放
					mediaplayer.reset();// 重置MediaPlayer
				}
				break;
			case R.id.imagePlay:// 播放
				if (flagPause) {// 如果是暂停状态就继续播放
					mediaplayer.start();
					flagPause = false;
				} else {// 非暂停状态则重新播放
					playsong(songfile[currentItem]);
				}
				break;
			case R.id.imagePause:// 暂停
				mediaplayer.pause();
				flagPause = true;
				break;
			case R.id.imageNext:// 下一首
				nextsong();
				break;
			}
		}

	};

	private ListView.OnItemClickListener listListener = new ListView.OnItemClickListener() {

		@Override
		public void onItemClick(AdapterView<?> parent, View v, int position,
				long id) {
			currentItem = position;// 获取选择位置
			playsong(songfile[currentItem]);// 播放
		}

	};

	private void playsong(int song) {
		mediaplayer.reset();
		mediaplayer=MediaPlayer.create(Main.this,song);
		try {
			mediaplayer.prepare();
		} 
		catch (IllegalStateException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
		mediaplayer.start();// 开始播放
		textMusic.setText("歌名:" + songname[currentItem]);// 更新歌名
		mediaplayer.setOnCompletionListener(new OnCompletionListener() {
			@Override
			public void onCompletion(MediaPlayer mp) {
				nextsong();// 播放完后播放下一首
			}
		});
	}

	// 下一首歌
	private void nextsong() {
		currentItem++;
		// 若到最后就移到第一首
		if (currentItem >= listMusic.getCount()) {
			currentItem = 0;
			playsong(songfile[currentItem]);
		}
	}

	// 上一首歌
	private void frontsong() {
		currentItem--;
		// 若是第一首就移到最后
		if (currentItem < 0) {
			currentItem = listMusic.getCount() - 1;
			playsong(songfile[currentItem]);
		}
	}
}

界面:

2、播放视频

示例:VideoView视频播放器播放本地视频

package com.wwtiot.videoview;

import android.app.Activity;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.VideoView;

public class Main extends Activity {
	private String sdPath = "/res/raw/";
	private String filename = "";// 影片文件名称
	private int videoID ; 
	private TextView textVideo;
	private Button btnVideo1, btnVideo2, btnEnd;
	private VideoView videoView;

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

		// 获取资源文件中的界面组件
		textVideo = (TextView) findViewById(R.id.textVideo);
		btnVideo1 = (Button) findViewById(R.id.btnVideo1);
		btnVideo2 = (Button) findViewById(R.id.btnVideo2);
		btnEnd = (Button) findViewById(R.id.btnEnd);
		videoView = (VideoView) findViewById(R.id.videoView);

		// 为Button设置listener
		btnVideo1.setOnClickListener(listener);
		btnVideo2.setOnClickListener(listener);
		btnEnd.setOnClickListener(listener);
		// 监听影片播放中
		videoView.setOnPreparedListener(listenerPrepared);
		// 监听影片结束
		videoView.setOnCompletionListener(listenerCompletion);
	}

	private Button.OnClickListener listener = new Button.OnClickListener() {

		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btnVideo1: {
				videoID=R.raw.oppo_mp3;
				filename = "oppo_mp3.mp4";
				playVideo(sdPath + filename);
				break;
			}
			case R.id.btnVideo2: 
			{
				videoID=R.raw.oppo_real;
				filename = "oppo_real.mp4";
				playVideo(sdPath + filename);
				break;
			}
			case R.id.btnEnd: {
				finish();
				break;
			}
			}
		}
	};

	// 播放影片
	public void playVideo(String filepath) {// 影片路径
		if (filepath != "") {
			// 设置影片路径
			videoView.setVideoPath(filepath);
			// 加入播放器控制轴
			videoView.setMediaController(new MediaController(Main.this));
			//参考来源
			videoView.setVideoURI(Uri.parse("android.resource://com.wwtiot.videoview/"+videoID)); 
			// 开始播放
			videoView.start();
		}
	}

	private MediaPlayer.OnPreparedListener listenerPrepared = new MediaPlayer.OnPreparedListener() {

		@Override
		public void onPrepared(MediaPlayer mediaplayer) {
			textVideo.setText("影片:" + filename);
		}

	};

	private MediaPlayer.OnCompletionListener listenerCompletion = new MediaPlayer.OnCompletionListener() {

		@Override
		public void onCompletion(MediaPlayer mediaplayer) {
			textVideo.setText(filename + "播放完毕!");
		}
	};	
}

界面:

示例:自定义格式视频播放器


3、录制音频


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 67
码字总数 27450
×
AlanCooper
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: