PS:突然觉得android学到的东西,还是做一些整合,在文中的要点写下来有利于更知识的总结。所以就将这几年学到的,领悟到的,在这里做一些随手记录。仅做为一些随笔,但也希望能帮助到一些有需要的朋友。
简单的用seekbar和android自带的图标实现一下内存音频的实现
效果如下,
新建一个raw文件,专门放置多媒体文件
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context="com.zking.g150820_android_playmusic.MainActivity">
<SeekBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/seekBar"
android:layout_weight="1" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_media_play"
android:onClick="isPlayOrPause"
/>
</LinearLayout>
MainActivity.java:
package com.zking.g150820_android_playmusic;
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 MediaPlayer mediaPlayer;
private SeekBar seekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得SeekBar控件
seekBar = (SeekBar) findViewById(R.id.seekBar);
//让SeekBarr控件可拖动
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 progress = seekBar.getProgress();
//跳转到某个位置播放
mediaPlayer.seekTo(progress);
}
});
}
public void isPlayOrPause(View view){
//拿到这个控件
ImageButton imageButton = (ImageButton) view;
//如果播放为空值
if (mediaPlayer==null){
//实例化MediaPlayer
mediaPlayer = MediaPlayer.create(this, R.raw.abc);
//start 开始的意思 意为开始播放音乐
mediaPlayer.start();
//把图标修改为点击暂停的图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐的总时长
int duration = mediaPlayer.getDuration();
//设置进度条的最大值为音乐的总时长
seekBar.setMax(duration);
new MyThread().start();
//否则如果 play播放中
} 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 MyThread extends Thread{
@Override
public void run() {
super.run();
//循环 控件移动小于或等于控件的最大值
while (seekBar.getProgress()<=seekBar.getMax()){
//获取当前音乐播放的位置
int currentPosition = mediaPlayer.getCurrentPosition();
//让进度条动起来
seekBar.setProgress(currentPosition);
}
}
}
}
代码如上,只是简单的实现音频,细节就不多做解释
照例附上源码: