Android—多媒体(音频播放)
来源:互联网 发布:淘宝上的汝窑茶具 编辑:程序博客网 时间:2024/05/16 15:37
思维导图
音频效果图:
音频布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.android27_palymusic.MainActivity"> <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/seekbar" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="PlayOrPause" /></LinearLayout>
一、应用程序内音频播放
package com.example.android27_palymusic;import android.media.MediaPlayer;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageButton;import android.widget.SeekBar;public class MainActivity extends AppCompatActivity { private SeekBar seekbar; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); seekbar = (SeekBar) findViewById(R.id.seekbar); //给进度条设置滑动监听事件 seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //获取当前进度条的位置 int currentPosition=seekBar.getProgress(); //跳转到某个位置进行播放 mediaPlayer.seekTo(currentPosition); } }); } public void PlayOrPause(View view){ ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){ //判断是否是第一次进来 //应用内音频源 mediaPlayer = MediaPlayer.create(this, R.raw.a1); //获取音乐的最大时长 int time=mediaPlayer.getDuration(); //设置进度条的最大值为音乐播放时长 seekbar.setMax(time); //调取开始播放 mediaPlayer.start(); //换上暂停图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //调取线程 new MyThead().start(); }else if(mediaPlayer.isPlaying()){ //判断是否正在播放 //调取暂停播放 mediaPlayer.pause(); //换上开始播放图标 imageButton.setImageResource(android.R.drawable.ic_media_play); }else { mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } }class MyThead extends Thread{ @Override public void run() { super.run(); while (seekbar.getProgress()<seekbar.getMax()){ //获取音乐当前播放位置 int currentPosition=mediaPlayer.getCurrentPosition(); seekbar.setProgress(currentPosition); } }}}
二、SD卡音频播放
package com.example.android27_palymusic;import android.media.AudioManager;import android.media.MediaPlayer;import android.net.Uri;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageButton;import android.widget.SeekBar;import java.io.IOException;public class MainActivity extends AppCompatActivity { private SeekBar seekbar; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); seekbar = (SeekBar) findViewById(R.id.seekbar); //给进度条设置滑动监听事件 seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //获取当前进度条的位置 int currentPosition=seekBar.getProgress(); //跳转到某个位置进行播放 mediaPlayer.seekTo(currentPosition); } }); } public void PlayOrPause(View view) throws IOException { ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){ //判断是否是第一次进来 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ //判断内存卡是否可用 String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath(); //获取路径 mediaPlayer=new MediaPlayer(); //设置音频流的类型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置SD卡音频源 mediaPlayer.setDataSource(this, Uri.parse("file://"+sdPath+"/1473071258817.mp3")); //设置异步准备 mediaPlayer.prepare(); //获取音乐的最大时长 int time=mediaPlayer.getDuration(); //设置进度条的最大值为音乐播放时长 seekbar.setMax(time); //调取开始播放 mediaPlayer.start(); //换上暂停图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //调取线程 new MyThead().start(); } }else if(mediaPlayer.isPlaying()){ //判断是否正在播放 //调取暂停播放 mediaPlayer.pause(); //换上开始播放图标 imageButton.setImageResource(android.R.drawable.ic_media_play); }else { mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } }class MyThead extends Thread{ @Override public void run() { super.run(); while (seekbar.getProgress()<seekbar.getMax()){ //获取音乐当前播放位置 int currentPosition=mediaPlayer.getCurrentPosition(); seekbar.setProgress(currentPosition); } }}}
三、网络音频播放
package com.example.android27_palymusic;import android.media.AudioManager;import android.media.MediaPlayer;import android.net.Uri;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageButton;import android.widget.SeekBar;import java.io.IOException;public class MainActivity extends AppCompatActivity { private SeekBar seekbar; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); seekbar = (SeekBar) findViewById(R.id.seekbar); //给进度条设置滑动监听事件 seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //获取当前进度条的位置 int currentPosition=seekBar.getProgress(); //跳转到某个位置进行播放 mediaPlayer.seekTo(currentPosition); } }); } public void PlayOrPause(View view) throws IOException { final ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){ //判断是否是第一次进来 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath(); mediaPlayer=new MediaPlayer(); //设置音频流的类型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置网络音源 mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.210:8080/s8.mp3")); mediaPlayer.prepareAsync(); //设置准备监听 mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { //获取音乐的最大时长 int time=mediaPlayer.getDuration(); //设置进度条的最大值为音乐播放时长 seekbar.setMax(time); //调取开始播放 mediaPlayer.start(); //换上暂停图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //调取线程 new MyThead().start(); } }); } }else if(mediaPlayer.isPlaying()){ //判断是否正在播放 //调取暂停播放 mediaPlayer.pause(); //换上开始播放图标 imageButton.setImageResource(android.R.drawable.ic_media_play); }else { mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } }class MyThead extends Thread{ @Override public void run() { super.run(); while (seekbar.getProgress()<seekbar.getMax()){ //获取音乐当前播放位置 int currentPosition=mediaPlayer.getCurrentPosition(); seekbar.setProgress(currentPosition); } }}}
阅读全文
0 0
- Android—多媒体(音频播放)
- Android多媒体——播放音频
- Android 多媒体——音频播放录制、视频播放、相机
- Android 多媒体应用——MediaPlayer音频播放
- Android 多媒体应用——SoundPool音频播放
- 【Android】多媒体编程——MediaPlayer音频播放
- Android中的多媒体音频和视频播放
- Android --- 多媒体应用(SoundPool播放音频)
- Android多媒体——音乐播放器(播放内存音频)
- android之播放多媒体文件一(播放音频)
- Android多媒体—音频技术
- 基于android多媒体框架实现播放APE音频的实现
- 【Android开发】多媒体应用开发-使用MediaPlayer播放音频
- 【Android开发】多媒体应用开发-使用SoundPool播放音频
- Android多媒体---SurfaceView(播放视频)+Mediaplayer(音频)
- android 多媒体编程(一) MediaPlayer 播放音频
- 《android多媒体api》之AudioTrack原始音频pcm播放api
- 多媒体(音频播放)MediaPlayer
- 欢迎使用CSDN-markdown编辑器
- 深入研究Struts2(一)---Struts2是什么?它的工作原理是什么?
- JSP九个内置对象
- MySQL 事务
- ZOJ
- Android—多媒体(音频播放)
- 7/14 CCF YOCSEF学术报告会:区块链技术
- Opencv
- ListView加载不同的条目
- 32.最长的合法括号匹配
- 复制多级文件夹
- 从 1-15中,随机出来5个数,不能重复的
- 利用vs2015编写C语言遇见的错误集
- 使用cloc进行代码行统计