• Android第三次作业


     

    1、 项目

    制作一个音乐播放器

    2、 实现的功能

    1. 实现播放,暂停,停止,播放上一首,下一首功能

    2.显示播放列表

    3. 至少可以播放3首歌曲

    3、截屏

    4、代码分析

    播放事件代码:

     case R.id.play: {
                        if (player.isPlaying()) {
                            handler.removeCallbacks(updatePositionRunnable);
                            player.pause();
                            playButton.setImageResource(R.drawable.pause);
                        } else {
                            if (isStarted) {
                                player.start();
                                playButton.setImageResource(R.drawable.play);
                                updatePosition();
                            } else {
                                startPlay(currentFile);
                            }
                        }
                        break;
                    }

    音乐资源获取:

        private class MediaCursorAdapter extends SimpleCursorAdapter{
    
            public MediaCursorAdapter(Context context, int layout, Cursor c){
                super(context, layout,c,
                        new String[] {MediaStore.MediaColumns.DISPLAY_NAME, MediaStore.MediaColumns.TITLE, MediaStore.Audio.AudioColumns.DURATION},
                        new int[] {R.id.displayname, R.id.title,R.id.duration});
            }
    
            @Override
            public void bindView(View view,Context context, Cursor cursor) {
                TextView title = (TextView) view.findViewById(R.id.title);
                TextView name = (TextView) view.findViewById(R.id.displayname);
                TextView duration = (TextView) view.findViewById(R.id.duration);
    
                name.setText(cursor.getString(
                        cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME)));
                name.setTextColor(Color.parseColor("#FFFFFF"));
                title.setText(cursor.getString(
                        cursor.getColumnIndex(MediaStore.MediaColumns.TITLE)));
    
                long durationInMs = Long.parseLong(cursor.getString(
                        cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DURATION)));
                view.setTag(cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA)));
            }
            @Override
            public View newView(Context context, Cursor cursor, ViewGroup parent) {
                LayoutInflater inflater = LayoutInflater.from(context);
                View v = inflater.inflate(R.layout.listitem, parent, false);
    
                bindView(v, context, cursor);
    
                return v;
            }

    5、代码链接

    https://github.com/ronzzj/1600802138.git

    6apk链接

    https://raw.githubusercontent.com/ronzzj/1600802138/master/app-debug.apk

  • 相关阅读:
    IcePatch2+IceGrid部署的解决方案
    设计模式——状态模式(State)
    设计模式——单例模式(Singleton)
    设计模式——工厂方法模式(Factory Method)
    FreeType编译
    OO Design之SOLID原则
    设计模式——策略模式(Strategy)
    C++之Name Hiding
    设计模式——抽象工厂模式(Abstract Factory)
    【转】FreeType介绍
  • 原文地址:https://www.cnblogs.com/ronzzj/p/10104971.html
Copyright © 2020-2023  润新知