基于android的在线音乐播放器开发报告内容摘要:
private MusicListAdapter mMusicListAdapter = new MusicListAdapter()。 private MainActivity mActivity。 private boolean isPause。 @Override public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 setRetainInstance(true)。 } @Override public void onAttach(Activity activity) { (activity)。 mActivity = (MainActivity) activity。 } @SuppressLint(InflateParams) @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layout = (, null)。 setupViews(layout)。 return layout。 } /** * view创建完毕 回调通知activity绑定歌曲播放服务 */ @Override public void onStart() { ()。 (fragment, onViewCreated)。 ()。 } @Override public void onResume() { ()。 isPause = false。 } @Override public void onPause() { isPause = true。 ()。 } /** * stop时, 回调通知activity解除绑定歌曲播放服务 */ @Override public void onStop() { ()。 (fragment, onDestroyView)。 ()。 } private void setupViews(View layout) { mMusicListView = (ListView) ()。 mMusicIcon = (ImageView) ()。 mMusicTitle = (TextView) ()。 mMusicArtist = (TextView) ()。 mPreImageView = (ImageView) ()。 mPlayImageView = (ImageView) ()。 mNextImageView = (ImageView) ()。 mMusicProgress = (SeekBar) ()。 (mMusicListAdapter)。 (mMusicItemClickListener)。 (mItemLongClickListener)。 (this)。 (this)。 (this)。 (this)。 } private OnItemLongClickListener mItemLongClickListener = new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView? parent, View view, int position, long id) { final int pos = position。 builder = new (mActivity)。 (删除该条目)。 (确认要删除该条目吗?)。 (删除, new () { public void onClick(DialogInterface dialog, int which) { Music music = (pos)。 ()。 if (new File(()).delete()) { scanSDCard()。 } } })。 (取消, null)。 ().show()。 return true。 } }。 private OnItemClickListener mMusicItemClickListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView? parent, View view, int position, long id) { play(position)。 } }。 /** * 发送广播,通知系统扫描指定的文件 * 请参考我的博文: * * */ private void scanSDCard() { if ( = ) { // String[] paths = new String[]{ ().toString()}。 (mActivity, paths, null, null)。 } else { Intent intent = new Intent()。 (, )。 ((file://+ ()))。 (intent)。 } } /** * 播放时高亮当前播放条目 * 实现播放的歌曲条目可见,且实现指示标记可见 * @param position */ private void onItemPlay(int position) { // 将ListView列表滑动到播放的歌曲的位置,是播放的歌曲可见 (position)。 // 获取上次播放的歌曲的position int prePlayingPosition = ()。 // 如果上次播放的位置在可视区域内 // 则手动设置invisible if (prePlayingPosition = () amp。 amp。 prePlayingPosition = mMusicListView .getLastVisiblePosition()) { int preItem = prePlayingPosition ()。 ((ViewGroup) (preItem)).getChildAt(0) .setVisibility()。 } // 设置新的播放位置 (position)。 // 如果新的播放位置不在可视区域 // 则直接返回 if (() position || () position) return。 // 如果在可视区域 // 手动设置改item visible int currentItem = position ()。 ((ViewGroup) (currentItem)).getChildAt(0) .setVisibility()。 } /** * 播放音乐item * * @param position */ private void play(int position) { int pos = ().play(position)。 onPlay(pos)。 } /** * 播放时,更新控制面板 * * @param position */ public void onPlay(int position) { if (() || position 0) return。 //设置进度条的总长度 (().getDuration())。 onItemPlay(position)。 Music music = (position)。 Bitmap icon = ().load(())。 (icon == null ? ImageTools .scaleBitmap() : ImageTools .scaleBitmap(icon))。 (())。 (())。 if (().isPlaying()) { ()。 } else { ()。 } //新启动一个线程更新通知栏,防止更新时间过长,导致界面卡顿。 new Thread(){ @Override public void run() { ()。 ().setRemoteViews()。 } }.start()。 } @Override public void onClick(View v) { switch (()) { case : startActivity(new Intent(mActivity, ))。 break。 case : if (().isPlaying()) { ().pause()。 // 暂停 mPlayImageView .setImageResource()。 } else { onPlay(().resume())。 // 播放 } break。 case : ().next()。 // 下一曲 break。 case : ().pre()。 // 上一曲 break。 } } /** * 设置进度条的进度(SeekBar) * @param progress */ public void setProgress(int progress) { if (isPause) return。基于android的在线音乐播放器开发报告
相关推荐
表的启动、保存、翻页查看、停止的功能和数码管的动态显示的功能。 模块框图 本次实训电子秒表所使用到的模块 1. 按 键模块 K0: start 启动, K1: save 保存数据, K2: look 查看数据, K3: stop 停止;将四个按键与 、 、 想接。 通过扫描按键,读取按键实现四个功能的控制。 2. AT89C51 单片机与数码管的显示模块 该部分由两个四段的共阳极 LED
甚至 1uA 以下;使用电压在 3~6V 之间,完全适应电池工作。 低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。 低电压化 几乎所有的单片机都有 WAIT、 STOP 等省电运行方式。 允许使用的电压范围越来越宽,一般在 3~6V 范围内工作。 低电压供电的单片机电源下限已可达 1~2V。 目前 供电的单片机已经问世。 大容量化 以往单片机内的 ROM 为
用户不能访问和修改。 用户程序是随 PLC 的控制对象而定的,由用户根据对象生产工艺的控制要求而编制的应用程序。 为了便于读出、检查和修改,用户程序一般存于 CMOS 静态RAM 中,用锂电池作为后备电源,以保证掉电时不会丢失信息。 为了防止干扰对RAM 中程序的破坏,当 用户程序经过运行正常,不需要改变,可将其固化在只读存储器 EPROM 中。 现在有许多 PLC 直接采用 EEPROM
Great accuracy. It is not affected by noise. No need for a sample and hold circuit. It has a builtin clock. It has no need for high accuracy external ponents. Schematic (fixed 161109) 7segment
x82,0xf8,0x80,0x90,0xff}。 /*sbit key1=P1^0。 sbit key2=P1^1。 sbit key3=P1^2。 sbit key4=P1^3。 sbit key5=P1^4。 sbit key6=P1^5。 sbit key7=P1^6。 sbit key8=P1^7。 */ sbit keyzhu=P3^0。 sbit clean=P3^1。 sbit
侮句快兄枝双丸畦寄疙本圈涛邀晴答软兹顶质滨鞍总辅臂南狡氖犊昨竹壮诛明维裙狸苇继偿鸿喳冠牡徽伙菠卤噪府芳荐胺吃赡点 图 单片机最小系统电路图 基于 80C51的八路抢答器的单片机课程设计 20目 录 1 引言 42 总体方案设计 43 硬件电路设计 53. 1 单片机及其外围电路 53. 2 硬件 电路组成 64 系统软件设计 104. 1 初始化程序设计 104. 2 主程序设计 114. 3