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

OSCHINA-MIRROR/ningyuwen-XX-music

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

码云上的代码 уже не обновляется, адрес на 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)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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