View on GitHub

Android

基于网络媒体库实现音乐播放器

Android

基于网络媒体库实现音乐播放器

2.1、第一阶段功能要求 [1] 数据源来自扫描存储卡MP3音乐获得的列表 [2] 播放列表显示音乐文件(音乐名) [3] 利用自定义Service类来实现音乐的播放与暂停以及进度的更新 [4] 界面类(Activity)与服务类(Service)之间通过广播接收者进行通信 [5] 主界面包括播放列表、可设置播放模式、显示当前音乐名、拖拽条显示和设置播放进度、显示播放进度值和播放时长、包含上一首按钮、下一首按钮、播放|暂停按钮

public class SplashScreenActivity extends Activity { /** * 动画对象 */ private Animation animation; /** * 音乐图标图像控件 */ private ImageView ivMusicIcon;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 利用布局资源文件设置用户界面
    setContentView(R.layout.activity_splash_screen);

    // 通过资源标识获得控件实例
    ivMusicIcon = (ImageView) findViewById(R.id.iv_music_icon);

    // 加载动画资源文件,创建动画对象
    animation = AnimationUtils.loadAnimation(this, R.anim.animator);
    // 让音乐图标图像控件启动动画
    ivMusicIcon.startAnimation(animation);
    // 给动画对象设置监听器
    animation.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // 启动主界面
            startActivity(new Intent(SplashScreenActivity.this, LoginActivity.class));
            // 关闭启动界面
            finish();
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }
    });
} }

2.2、第二阶段功能要求 [1] 数据源来自媒体库音频 [2] 列表显示音乐文件(专辑封面图片、音乐名、演唱者、播放时长) [3] 音乐列表可按音乐标识符、标题或播放时长排序 [4] 利用自定义Service类来实现音乐的播放与暂停以及进度的更新 [5] 界面类(Activity)与服务类(Service) 之间通过广播接收者进行通信 [6] 主界面包含播放播放列表、可设置播放模式、显示当前音乐名、拖拽条显示和设置播放进度、显示播放进度值和播放时长、包含上一首按钮、下一首按钮、播放 | 暂停按钮

/**

public class MusicAdapter extends BaseAdapter implements AppConstants { /** * 上下文环境 */ private Context context; /** * 音乐列表 */ private List musicList; /** * 访问网络乐库应用程序 */ private AccessWebMusicStoreApplication app;

/**
 * 构造方法
 *
 * @param context
 * @param musicList
 */
public MusicAdapter(Context context, List<Music> musicList) {
    this.context = context;
    this.musicList = musicList;
    // 获取访问网络乐库应用程序对象
    app = (AccessWebMusicStoreApplication) ((Activity) context).getApplication();
}

/**
 * 获取列表项个数
 */
@Override
public int getCount() {
    return musicList.size();
}

/**
 * 获取列表项对象
 */
@Override
public Object getItem(int position) {
    return musicList.get(position);
}

/**
 * 获取列表项标识符
 */
@Override
public long getItemId(int position) {
    return position;
}

/**
 * 获取视图
 */
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // 声明视图容器
    ViewHolder holder;

    // 判断转换视图是否为空
    if (convertView == null) {
        // 将音乐列表项模板映射成转换视图
        convertView = LayoutInflater.from(context).inflate(R.layout.music_list_item, null);
        // 实例化视图容器
        holder = new ViewHolder();
        // 获取视图容器各控件实例
        holder.ivIcon = (ImageView) convertView.findViewById(R.id.iv_icon);
        holder.tvMusicName = (TextView) convertView.findViewById(R.id.tv_music_name);
        holder.tvDuration = (TextView) convertView.findViewById(R.id.tv_duration);
        holder.tvArtist = (TextView) convertView.findViewById(R.id.tv_artist);
        // 将视图容器附加到转换视图
        convertView.setTag(holder);
    } else {
        // 从转换视图里获取视图容器
        holder = (ViewHolder) convertView.getTag();
    }

    // 获取音乐实体作为数据源
    Music music = musicList.get(position);
    // 设置音乐专辑图片
    if (app.getAlbums()[position] != null) {
        holder.ivIcon.setImageBitmap(app.getAlbums()[position]);
    } else {
        holder.ivIcon.setImageResource(R.mipmap.music);
    }

    // 设置音乐名
    holder.tvMusicName.setText(music.getTitle());
    // 设置演唱者
    holder.tvArtist.setText(music.getArtist());
    // 设置音乐时长
    holder.tvDuration.setText(app.getFormatTime(music.getDuration()));
    // 返回转换视图
    return convertView;
}
/**
 * 视图容器
 */
private static class ViewHolder {
    ImageView ivIcon;
    TextView tvMusicName;
    TextView tvDuration;
    TextView tvArtist;
}

}

2.3、第三阶段功能要求 [6] 数据源来自服务器音乐库(数据库保存专辑图片与音乐路径) [7] 列表显示音乐文件(专辑封面图片、音乐名、演唱者、播放时长) [8] 音乐列表可按音乐标识符、标题或播放时长排序 [9] 利用自定义Service类来实现音乐的播放与暂停以及进度的更新 [10] 界面类(Activity)与服务类(Service)之间通过广播接收者进行通信 [11] 主界面包含播放列表、了设置播放模式、显示当前音乐名、拖拽条、显示和设置播放进度、显示播放进度值和播放时长、包含上一首按钮、下一首按钮、播放|暂停按钮 前台客户端: 基于网络乐库音乐播放器V0.7(安卓) 后台服务器端:MusicServier(Web)

/**

该音乐播放器分成三个阶段完成,代码中是第三阶段整合前两个阶段完成的。效果基本实现。