arg3) {
currentListItme = position;
playMusic(MUSIC_PATH + mMusicList.get(position)); isRunning = true;
Intent intent=new Intent();
intent.setClass(Mp3PlayerActivity.this,Zhengzai.class); Bundle bundle = new Bundle(); bundle.putString(\,MUSIC_PATH +
mMusicList.get(position).toString() );
int index = position;
bundle.putString(\,mMusicList.get(position) ); intent.putExtra(\,bundle); startActivity(intent);
}});
? 5.2 正在播放界面
-26-
关键代码:正在播放
mStartImageButton.setOnClickListener(new ImageButton.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//String path = MUSIC_PATH + mMusicList.get(currentListItme); if(!isRunning){
playMusic(path);
//startSeekBarUpdate(); }else{
if(!isPause){ pause(path); }else{
continuePlay(path); } } } });
下一首的监听和实现
mNextImageButton.setOnClickListener(new ImageButton.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub nextMusic();
} });
private void nextMusic() {
if (++Mp3PlayerActivity.currentListItme >= Mp3PlayerActivity.mMusicList.size()) {
Mp3PlayerActivity.currentListItme = 0; }
playMusic(MUSIC_PATH +
Mp3PlayerActivity.mMusicList.get(Mp3PlayerActivity.currentListItme)); isPause = false;
mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor)); }
-27-
上一首的监听和实现
mPreImageButton.setOnClickListener(new ImageButton.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub FrontMusic(); } });
private void FrontMusic() {
if (--Mp3PlayerActivity.currentListItme <= 0) { Mp3PlayerActivity.currentListItme = Mp3PlayerActivity.mMusicList.size()-1; }
playMusic(MUSIC_PATH +
Mp3PlayerActivity.mMusicList.get(Mp3PlayerActivity.currentListItme)); isPause = false;
mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor)); }
音乐的暂停
private void pause(String path) {
if (Mp3PlayerActivity.mMediaPlayer != null &&Mp3PlayerActivity. mMediaPlayer.isPlaying()) {
Mp3PlayerActivity.mMediaPlayer.pause(); isPause = true;
mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_play_nor));} }
音乐继续播放
private void continuePlay(String path){ if(isPause){
Mp3PlayerActivity.mMediaPlayer.start(); isPause = false;
mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor));} }
-28-
? 5.3 退出播放器界面
退出播放器提示代码:
public void showExitDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(\提示\);
builder.setMessage(\确定要退出吗?\);
builder.setNegativeButton(\否\, new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) { } });
builder.setPositiveButton(\是\, new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Mp3PlayerActivity.this.finish(); System.exit(0); } });
builder.setCancelable(false); builder.create().show();
}
-29-
? 5.4 AndroidManifest.xml文件介绍
Android系统的任何一个程序启动都需要AndroidManifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个AndroidManifest.xml文件,此配置文件是整个 程序能够正常运行的核心,它包含了Android SDK 的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest.xml中寻找标识来作出相应的操作。
在AndroidManifest.xml中有一个根结点
其中声明provider是还需要声明其授权authorities。每个组件里面好有很多的属性,会根据程序的具体需要定义不同的属性。过滤器inent-filter 有两种启动方式来启动界面。
显示方式:显示方式是在代码中直接启动组件,启动时会声明Inent,在它的构造方法Intent中直接指定一个组件的名字,然后调用方法startIntent(intent)以启动指定的组件。
隐式方式:隐式方式是通过过滤器来过滤完成的,启动的组件必须满足action和category的条件才能够启动该组件。这些属性是在AndroidManifest.xml文件中声明的。两种启动方式都可以通过程序setAction和startActivity或配置文件两种方式来实现组件的跳转。
? 第6章 Android模拟器读取SD卡中音频文件的实现
? 6.1 怎样在模拟器中添加音频文件并读取
在Android模拟器中,初始时没有sdcard的,为了存放音乐文件,需要自己创建sdcard,所以下面的介绍就是怎样在模拟器中创建音频文件及读取。
? 6.2 SD卡的创建
通过Android的Tools来创建sd卡并导入进来:
1、 打开dos,windows+R键打开。转换到你的sdk安装包的tools目录下,如我的目录如下:E:\\android-sdk-windows\\tools。
2、 创建sd卡。在命令行中输入:mksdcard 1024M,E:\\androidsdcard\\sdcard.img。
-30-