基于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。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。