MediaPlayer播放音频文件
来源:互联网 发布:syslog 数据 编辑:程序博客网 时间:2024/06/11 08:28
1.播放应用内的文件:
音频存放位置:raw目录(注意:文件名必须符合变量命名规范)
实战:
创建: MediaPlayer mediaPlayer=MediaPlayer.create(context,R.raw.文件);
判断音频是否播放:mediaPlayer.isPlay()
播放:mediaPlayer.start();
暂停:mediaPlayer.pause();
音乐时间:mediaPlayer.getDuration();
音乐当前播放位置:mediaPlayer.getCurrentPosition();
在某个位置播放:mediaPlayer.seekTo();
播放完成事件:mediaPlayer.setOnCompletionListener()
停止:mediaPlayer.stop();
释放内存:mediaPlayer.release();
2.播放内存卡的文件:
创建:MediaPlayer media=new MediaPlayer();
播放类型:media.setAudioStreamType(AudioManager.STREAM_MUISC);
设置音源:media.setDataSourse(context,Uri); Uri.parse("file://mnt/sdcard/音乐路径");
异步准备:media.setprepate();
开始播放:media.start();
3.播放Internet上的音频文件:
音频存放文件位置:网络
注意:添加网络权限
创建:MediaPlayer media=new MediaPlayer();
播放类型:media.setAudioStreamType(AudioManager.STREAM_MUISC);
设置音源:media.setDataSourse(context,Uri); Uri.parse("网络音乐文件路径");
异步准备:media.setprepateAsync();
监听:media.setOnPreparedListener();
设置缓冲监听器:media.setOnBufferingUpadateListener
代码实现:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zking.musicplayer"> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application></manifest>
<?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.zking.musicplayer.MainActivity"> <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/main_seekBar"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ic_media_previous" android:src="@android:drawable/ic_media_previous" android:onClick="operation"/> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:id="@+id/ic_media_play" android:onClick="operation"/> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ic_media_next" android:src="@android:drawable/ic_media_next" android:onClick="operation"/> </LinearLayout></LinearLayout>
package com.zking.musicplayer;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.util.Log;import android.view.View;import android.widget.ImageButton;import android.widget.SeekBar;import java.io.IOException;public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private SeekBar main_seekBar; private Uri uri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); main_seekBar = (SeekBar) findViewById(R.id.main_seekBar); main_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //拖动播放 int current=seekBar.getProgress(); //跳到某个位置播放 mediaPlayer.seekTo(current); } }); } public void operation(View view){ ImageButton imageButton= (ImageButton) view; switch (view.getId()) { case R.id.ic_media_play: if(mediaPlayer==null){ //mediaPlayer = MediaPlayer.create(this,R.raw.s1 ); if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ String path=Environment.getExternalStorageDirectory().getAbsolutePath(); Log.i("test","音乐路径:"+path); mediaPlayer=new MediaPlayer(); //设置音频流的类型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置音频的来源 //uri = Uri.parse("file://"+path+"/一剪梅-费玉清-1769402673-0.mp3"); uri=Uri.parse("http://172.27.35.1:8080/s1.mp3"); Log.i("test","访问路径"+uri); try { mediaPlayer.setDataSource(this,uri); //异步准备 //mediaPlayer.prepare(); mediaPlayer.prepareAsync(); } catch (IOException e) { e.printStackTrace(); } } mediaPlayer.start(); //改变图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的播放时间 int time=mediaPlayer.getDuration(); main_seekBar.setMax(time); new MyThreed().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); } break; case R.id.ic_media_previous: break; case R.id.ic_media_next: break; } } class MyThreed extends Thread{ @Override public void run() { super.run(); while(main_seekBar.getProgress()<main_seekBar.getMax()){ //获取音乐 int current=mediaPlayer.getCurrentPosition(); main_seekBar.setProgress(current); } } }}
- 使用MediaPlayer播放音频文件
- MediaPlayer-循环播放音频文件
- MediaPlayer播放音频文件
- MediaPlayer播放音频文件
- Andriod 使用MediaPlayer播放音频文件
- Andriod 使用MediaPlayer播放音频文件
- Andriod 使用MediaPlayer播放音频文件
- Andriod 使用MediaPlayer播放音频文件
- android播放音频文件(MediaPlayer)和录音(MediaRecorder)--播放音频文件
- 使用MediaPlayer间隔播放一组音频文件
- MediaPlayer播放assert目录下的音频文件
- MediaPlayer播放不同来源的音频文件
- Android实现sdcard音频文件浏览及MediaPlayer播放
- android 使用MediaPlayer播放assets目录的音频文件
- android播放音频文件(MediaPlayer)和录音(MediaRecorder)--录音
- Android 使用MediaPlayer播放assets目录的音频文件
- Android MediaPlayer 播放各种来源的音频文件,特效控制
- 播放音频文件
- 1、字符串最后一个单词的长度
- Tomcat学习总结(2)——Tomcat使用详解
- 在编译期求得结构体偏移量
- spring事务(Transaction)的七种事务传播行为及五种隔离级别
- 2017.7.20 学习日记
- MediaPlayer播放音频文件
- 简单排序——希尔排序
- 泛型
- OpenFlow V1.3 抓包实验
- VULTR的安装和配置
- SpringMVC Ⅱ 基于注解的控制器
- hi3516a+imx178无线视频传输系统启动执行程序
- POJ 3101 Astronomy 笔记
- ZooKeeper之ZAB协议