易网时代-编程资源站
Welcome
微信登录
首页
/
操作系统
/
Linux
/
Android-简单音乐播放器
Android-简单音乐播放器://目录结构
//项目运行结果
//只一个主Activity,里面代码也很简单。至于布局这些就相当简单了,我就不写了。
package
sn.len.music;
import
java.io.File;
import
java.io.IOException;
import
android.app.Activity;
import
android.media.MediaPlayer;
import
android.os.Bundle;
import
android.os.Environment;
import
android.util.Log;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.EditText;
public
class
MusicPlayerActivity
extends
Activity
implements
OnClickListener
{
private
EditText editText;
private
MediaPlayer mediaPlayer;
private
String fileName=
null
;
private
int
postition;
private
static
final
String TAG=
"MusicPlayerActivity"
;
@Override
public
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
mediaPlayer=
new
MediaPlayer();
editText=(EditText)findViewById(R.id.option);
fileName=editText.getText().toString();
Button start=(Button)findViewById(R.id.start);
Button pause=(Button)findViewById(R.id.pause);
Button replay=(Button)findViewById(R.id.replay);
Button stop=(Button)findViewById(R.id.stop);
start.setOnClickListener(
this
);
pause.setOnClickListener(
this
);
replay.setOnClickListener(
this
);
stop.setOnClickListener(
this
);
}
@Override
public
void
onClick(View v)
{
Button continue_but=(Button)v;
try
{
switch
(v.getId())
{
case
R.id.start:
//开始
{
play();
}
break
;
case
R.id.pause:
//暂停
{
//如果正在播放,则停止
if
(mediaPlayer.isPlaying())
{
mediaPlayer.pause();
continue_but.setText(R.string.conti);
//把暂停设置为继续播放
}
else
//否则继续播放
{
mediaPlayer.start();
continue_but.setText(R.string.pause);
//把继续播放按键设置为暂停
}
}
break
;
case
R.id.replay:
// 重播
{
if
(mediaPlayer.isPlaying())
{
mediaPlayer.seekTo(
0
);
//重新开始放
}
else
{
play();
}
}
break
;
case
R.id.stop:
//停止
{
if
(mediaPlayer.isPlaying())
{
mediaPlayer.stop();
}
}
break
;
default
:
break
;
}
}
catch
(Exception e)
{
Log.e(TAG, e.toString());
e.printStackTrace();
}
}
private
void
play()
throws
IOException
{
//文件在SD卡,所以要弄个File对象
File file=
new
File(Environment.getExternalStorageDirectory(),fileName);
mediaPlayer.reset();
//设置你要播放的文件在什么地方
mediaPlayer.setDataSource(file.getAbsolutePath());
Log.i(
"ABS"
, file.getAbsolutePath());
//得到的结果就为/mnt/sdcard/saybye.mp3
//开始初始化, 渲染
mediaPlayer.prepare();
//开始播放
mediaPlayer.start();
}
@Override
protected
void
onDestroy()
{
mediaPlayer.release();
//释放掉资源
super
.onDestroy();
}
//解决当电话来的时候,使音乐暂停
//当别的Activity来的时候,此Activity肯定会处于暂停状态。
@Override
protected
void
onPause()
{
if
(mediaPlayer.isPlaying())
{
//记录下当前音乐播放的位置
postition=mediaPlayer.getCurrentPosition();
//暂停音乐
mediaPlayer.pause();
}
super
.onPause();
}
//回到本Activity的时候
@Override
protected
void
onResume()
{
//如果有设置的断点,并且文件名不为空,则又开始播放
if
(postition>
0
&& fileName!=
null
)
{
try
{
play();
mediaPlayer.seekTo(postition);
//执行到指定断点
postition=
0
;
}
catch
(IOException e)
{
e.printStackTrace();
}
}
super
.onResume();
}
//解决内存不够的时候
//当被杀掉了,第二次运行此程序的时候,把上次的值给取出来
@Override
protected
void
onRestoreInstanceState(Bundle savedInstanceState)
{
postition=savedInstanceState.getInt(
"postition"
);
fileName=savedInstanceState.getString(
"fileName"
);
super
.onRestoreInstanceState(savedInstanceState);
}
//当内存不够的时候,系统有可能会杀掉某个应用程序
//所以这个时候可以当在杀掉的时候,就可以把数据给保存下来,以供下次使用
@Override
protected
void
onSaveInstanceState(Bundle outState)
{
//保存下断点位置以及文件名
outState.putInt(
"postition"
, postition);
outState.putString(
"fileName"
, fileName);
super
.onSaveInstanceState(outState);
}
}
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图