使用MediaPlayer播放音乐文件
16lz
2021-01-26
package com.example.day502;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.MotionEvent;import android.view.View;import android.widget.Button;import java.io.File;/** * 创建自定义的音频播放器MediaPlayer */public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener,View.OnTouchListener,View.OnClickListener{ private MediaPlayer mediaPlayer; private Button start,stop; private View view; private int position=0; //保存音频文件中的位置,后面将使用这个位置确定从哪里播放 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start=(Button)findViewById(R.id.start); stop=(Button)findViewById(R.id.stop); view=(View)findViewById(R.id.view); start.setOnClickListener(this); stop.setOnClickListener(this); view.setOnTouchListener(this); } @Override protected void onStart() { super.onStart(); File file=new File(Environment.getExternalStorageDirectory().getPath()+"/output_audios.wav"); Uri uri = Uri.fromFile(file); mediaPlayer=MediaPlayer.create(this,uri); //创建MediaPlayer对象加载uri mediaPlayer.setOnCompletionListener(this); mediaPlayer.start(); } @Override protected void onStop() { super.onStop(); mediaPlayer.stop(); mediaPlayer.release(); } @Override public void onCompletion(MediaPlayer mp) { mp.start(); mp.seekTo(position);//定位到保存的位置 } /** * @param v * @param event * @return * * getDuration()返回文件的持续时间如果没有持续时间返回-1即实时流直播 */ @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { if (mediaPlayer.isPlaying()) { //计算出滑动的距离最终换算成文件在屏幕上的长度 position = (int) event.getX() * mediaPlayer.getDuration() / view.getWidth(); //定位到拖动的位置 mediaPlayer.seekTo(position); } } return true; } @Override public void onClick(View v) { if (v == start) { mediaPlayer.start(); } if (v == stop) { mediaPlayer.pause(); } }}
更多相关文章
- ImageView 长按保存
- APK应用LOG保存
- Android之--电话归属地的悬浮框的…
- android 7.0 手机android.content.res.XmlResourceParser androi
- Android(安卓)多线程下载
- FindViewById
- Android(安卓)UI开发第六篇——仿QQ的滑动Tab
- 图片保存到sd卡
- android存储对象到本地