MediaPlayer 对音频操作(核心)
1.Android-播放应用内音频文件
//实例化一个MediaPlayer
mediaPlayer = MediaPlayer.create(this, R.raw.cheng);
//R.raw.cheng为mp3音频文件路径
//设置类型
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
现在AndroidManifest中添加权限
< uses-permission Android:name=”android.permission.READ_EXTERNAL_STORAGE” />
主界面我们设置一个SeekBar
//设置进度条的拖动事件
sb_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 progress=seekBar.getProgress();
mediaPlayer.seekTo(progress);
}
});
//设置音源
try {
//播放内存卡中的音频文件
mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/gui.mp3"));
//播放网络音乐
//mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.240:8080/jike.mp3"));
2.Android-播放sd卡文件
//准备一下(内存卡)
//mediaPlayer.prepare();
//准备(异步准备)
mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
//设置准备完成的监听
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐的播放时长
int duration=mediaPlayer.getDuration();
//设置进度条的最大值为:音乐的播放时长
sb_main_seekbar.setMax(duration);
new MyThread().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);
}
}
写一个MyThread类,为了让进度条随着播放进度动起来
class MyThread extends Thread{
@Override
public void run() {
super.run();
while(sb_main_seekbar.getProgress()<=sb_main_seekbar.getMax()){
//获取当前音乐播放的位置
int currentPosition=mediaPlayer.getCurrentPosition();
//让进度条动起来
sb_main_seekbar.setProgress(currentPosition);
}
}
}
注意:播放网络音频文件需要提供一个局域网
我这里暂时用Tomcat替代服务器,找到apache文件夹中的bin文件夹,打开startup.bat,保证局域网打开,将要播放的mp3文件放到
apache/webapps/ROOT子文件夹中
运行cmd,输入命令“ipconfig”在“无线局域网适配器 无线网络连接:”后缀有IPv4地址,可以运行APP的时候输入网址“192.168.43.240:8080/jike.mp3”便会下载
当然,这里遇到过一个小问题,那就是cmd输入命令“ipconfig”,会报一个“‘ipconfig’不是内部或外部命令,也不是可运行的程序或批处理文件”的错误
是因为环境变量设置缺失的问题,只要在环境变量设置中的path编辑中,末尾加入一个分号(;),在加入内容“c:\windows\system32”,然后再运行cmd命令,便可查看ip地址。