1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ningyuwen-XX-music

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 8.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 10:38 c738e2b

码云上的代码 уже не обновляется, адрес на GitHub: https://github.com/ningyuwen/ForMusic

ForMusic

Это музыкальный проигрыватель для Android.

Интерфейс

Главная страница Страница воспроизведения Страница списка воспроизведения Страница тем оформления

Сторонние библиотеки

Bugly: используется для сбора информации о сбоях, ANR-исключениях и обновлениях программного обеспечения.

    //где latest.release указывает на последнюю версию, также можно указать конкретную версию, например 1.2.0
    compile 'com.tencent.bugly:crashreport_upgrade:latest.release'
    //где latest.release указывает на последнюю версию, также можно указать конкретную версию
    compile 'com.tencent.bugly:nativecrashreport:latest.release'

fastjson: используется для анализа JSON.

    // https://mvnrepository.com/artifact/com.alibaba/fastjson  анализ json
    compile 'com.alibaba:fastjson:1.2.39'

Glide: библиотека для загрузки изображений.

    //Glide
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.github.bumptech.glide:okhttp3-integration:1.5.0@aar'

OkHttp: сетевая библиотека.

    compile 'com.squareup.okhttp3:okhttp:3.8.1'

PlayPauseView: кнопки для воспроизведения и паузы анимации.

    //воспроизведение, пауза
    compile 'com.github.Lauzy:PlayPauseView:1.0.4'

android-image-cropper: используется для обрезки изображений.

    //обрезка
    compile 'com.theartofdev.edmodo:android-image-cropper:2.6.0'

Платформа статистики Jiguang.

    compile 'cn.jiguang.sdk:janalytics:1.1.1'
    compile 'cn.jiguang.sdk:jcore:1.1.8'

ButterKnife: фреймворк для внедрения зависимостей.

    compile 'com.jakewharton:butterknife:8.5.1'

circleImageView: круговое изображение ImageView.

    compile 'de.hdodenhof:circleimageview:2.2.0'

Реализация

  1. Источник музыкальных данных: сканирование музыкальных данных на телефоне.
  2. Источник текстов песен: сканирование данных локальных файлов с текстами песен, в настоящее время поддерживается только музыка, загруженная из QQ Music.
  3. Главная страница: ViewPager + 4 фрагмента.
  4. Страница воспроизведения: заменено на PopupWindow, что повысило эффективность загрузки, а для вращения используется ViewPager и ImageView, при воспроизведении музыки и отображении PopupWindow вращение ImageView.
  5. Воспроизведение музыки: использование Service для фонового воспроизведения.
  6. Статистика воспроизведения музыки: если текущая продолжительность воспроизведения музыки составляет две трети от общей продолжительности, то считается, что музыка была воспроизведена один раз, счётчик увеличивается на 1, и при следующем открытии приложения сортировка по количеству воспроизведений.
  7. Обмен данными:
  • Взаимодействие между Activity и Service: все данные передаются через вызовы интерфейсов, bindService передаёт экземпляр интерфейса ServiceConnection, после успешного связывания Service вызывается onServiceConnected() интерфейса ServiceConnection и передаётся параметр, содержащий IBinder, который является возвращаемым значением метода onBind() класса MyBinder. Затем вызывается getService() класса MyBinder для получения экземпляра PlayMusicService, поскольку PlayMusicService реализует интерфейс IServiceDataTrans, последующие вызовы методов интерфейса IServiceDataTrans в классе PlayMusicService могут быть выполнены через mServiceDataTrans. Далее myBinder.setIServiceDataToActivity(mServiceDataToActivity) передаёт экземпляр интерфейса IServiceDataToActivity в Activity, mServiceDataToActivity, затем PlayMusicService может вызывать методы, реализованные в интерфейсе IServiceDataToActivity в Activity через класс mServiceDataToActivity для передачи данных.

Код в Activity:

     /**
     * Activity и Service передают данные
     */
    public interface IServiceDataTrans{
        void initServiceData(ArrayList<Long> musicId);  //инициализация данных сервиса, путь к музыке
        void playMusicFromClick(int position);              //пользователь нажимает для воспроизведения, передача позиции
        void playOrPause();                                 //воспроизведение или пауза
        void replaceBackStageMusicList(ArrayList<Long> musicInfoList, int position);//изменение списка музыки, воспроизводимой в фоновом режиме, передача musicId, текущей позиции воспроизведения
        int getMusicPlayTimeStamp();                        //получение времени воспроизведения, возврат миллисекунд
        long getPlayingMusicId();           //получить текущий воспроизводимый музыкальный id, запросить данные, удобно отобразить
        int getPlayPosition();              //получить позицию воспроизведения position
        boolean isPlayingMusic();           //получить статус воспроизведения музыки, воспроизведение или пауза
        void changePlayingTime(int time);    //рассчитать время начала воспроизведения, а также изменить время воспроизведения в фоновом режиме
        void cancelNotification();      //закрыть уведомление
    }

    /**
     * При запуске Activity запускается служба, которая может автоматически закрываться из-за освобождения памяти
     */
    public void startPlayMusicService(){
        Intent intent = new Intent(BaseActivity.this, PlayMusicService.class);
        bindService(intent, mServiceConnection,  Context.BIND_AUTO_CREATE);
    }

    /**
     * Фоновое воспроизведение музыки Service, используйте bindService для запуска, удобно передавать данные, startService неудобно передавать данные
     * Когда Service
     */
    public ServiceConnection mServiceConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            //используйте класс MyBinder, чтобы получить объект PlayMusicService
            PlayMusicService.MyBinder

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ningyuwen-XX-music.git
git@api.gitlife.ru:oschina-mirror/ningyuwen-XX-music.git
oschina-mirror
ningyuwen-XX-music
ningyuwen-XX-music
master