安卓基础 论MediaPlayer的应用(三)
来源:互联网 发布:kindle软件怎么用 编辑:程序博客网 时间:2024/06/05 05:34
这次的版本,做了许多的改变,增加了SeekBar进度条,上一首,下一首,以及长按Item删除歌曲的功能。当然也是还有bug的,另外UI也是做了适当的美化。本章节的主要知识点是BroadcastReceiver,自定义简单listView适配器,以及handler更新界面。基本的音乐播放器功能都已经实现。下面贴出关键代码首先是创建一个全局变量类Data.java
package com.android.MyMediaPlayer;import android.app.Application;public class Data extends Application { private int index; public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } @Override public void onCreate() { super.onCreate(); index = 0; }}
添加这个全局变量index是为了在不同的类里引用它时更方便,它记录了音乐播放的下标,初始化为0,代表默认播放第一首音乐。
要使用这个全局变量类请在配置文件里添加
还有就是我写了一点点的自定义listView数据适配器
主要重写了getView()方法。
MySimpleAdapter.java
package com.android.MyMediaPlayer;import java.util.List;import java.util.Map;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.SimpleAdapter;public class MySimpleAdapter extends SimpleAdapter { int mSelect = 0; // 选中项 private Context context; private Data appData; public void changeSelected(int positon) { // 刷新方法 if (positon != mSelect) { mSelect = positon; appData.setIndex(positon); notifyDataSetChanged(); } } public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); this.context = context; appData=(Data) context.getApplicationContext(); } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater factory = LayoutInflater.from(context); View v; v = (View) factory.inflate(R.layout.music_list_item, null); if (mSelect == position) {// v.setBackgroundResource(R.drawable.top_bak); // 选中项背景 } else { v.setBackgroundResource(R.drawable.transparent); // 其他项背景 } if (appData.getIndex()==position) { v.setBackgroundResource(R.drawable.top_bak); } return super.getView(position, v, parent); }}
我的获取本地音乐是用的别人代码,网上这类很多,我用的是调用系统本地媒体库,可以读出许多数据。想具体了解可以百度,源码我就不贴了,下面有下载,不用分~
还有一个关键就是,我这里使用到了广播,是用来让Seekbar动起来的
我把广播写在了服务里,向activity里传值
Runnable updatesb = new Runnable() { public void run() { // 每100豪秒更新一次 Intent intent = new Intent(); intent.putExtra("mTime", player.getCurrentPosition()); intent.putExtra("mMaxTime", player.getDuration()); intent.setAction(MUSIC_TIME); sendBroadcast(intent); mPercentHandler.postDelayed(updatesb, 100); } };
activity里设置一个广播接收器
private int maxMusicTime = 0; private int musicTime = 0; private BroadcastReceiver MusicTime = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action != null) { if (action.equals(MusicService.MUSIC_TIME)) { maxMusicTime = intent.getExtras().getInt("mMaxTime"); musicTime = intent.getExtras().getInt("mTime"); int sMax = seekBar_music.getMax(); textView_now.setText(musicTime / 1000 + "秒"); textView_total.setText(maxMusicTime / 1000 + "秒"); seekBar_music.setProgress(musicTime * sMax / maxMusicTime); } } } };
使用广播不要忘了注册
而且在退出Activity时取消注册
// 注册广播 private void registerBoradcastReceiver() { intentFilter = new IntentFilter(); intentFilter.addAction(MusicService.MUSIC_TIME); registerReceiver(MusicTime, intentFilter); }
本次关键代码就到此结束,希望大家一起进步,下面贴出下载源码地址
源码下载:http://download.csdn.net/detail/timeover_nice/8710179
0 0
- 安卓基础 论MediaPlayer的应用(三)
- 安卓基础 论MediaPlayer的应用(一)
- 安卓基础 论MediaPlayer的应用(二)
- 安卓mediaplayer(1)
- 安卓mediaplayer(2)
- 安卓基础(三)
- 安卓使用MediaPlayer实现简易音乐播放器(应用内的音频文件)
- 安卓使用MediaPlayer实现简易音乐播放器(应用内的音频文件)
- 安卓基础(一),简单控件的简单应用
- JAVA基础三——安卓开发的基础
- Android的MediaPlayer架构介绍(三)
- 安卓应用基础学习
- 安卓播放视频MediaPlayer
- Android中widget的应用【安卓源码解析三】
- Android中widget的应用【安卓源码解析三】
- 安卓基础学习_应用的界面编程
- 安卓应用反编译(三)-结束
- 安卓mediaplayer应用介绍,简单几步了解其流程
- git及其使用
- dir2xml
- 项目三 用对象数组操作长方柱
- linux目录结构及各目录的作用
- 利用.pbk来实现ADSL开机自动拨号
- 安卓基础 论MediaPlayer的应用(三)
- linux下计时
- offset
- 三维几何之求空间俩线段的公垂线,以及分数类
- HDU 4390 组合数学&数论
- Hdu 5229 ZCC loves strings(简单题)
- 新东方教育
- gnome 3 的几个桌面扩展
- 不要在构造函数和析构函数中调用虚函数